diff --git a/app/static/js/ResourceLists/SpacyNLPPipelineModelList.js b/app/static/js/ResourceLists/SpacyNLPPipelineModelList.js
index f7901528b1666cd0a06d6397d7d289773d5c4a27..405c29d6b681dd885ab1110895febf487c2f8a87 100644
--- a/app/static/js/ResourceLists/SpacyNLPPipelineModelList.js
+++ b/app/static/js/ResourceLists/SpacyNLPPipelineModelList.js
@@ -119,7 +119,11 @@ class SpaCyNLPPipelineModelList extends ResourceList {
     let listAction = listActionElement.dataset.listAction;
     switch (listAction) {
       case 'toggle-is-public': {
-        Utils.spaCyNLPPipelineModelToggleIsPublicRequest(this.userId, itemId);
+        let newIsPublicValue = listActionElement.checked;
+        Utils.updateSpaCyNLPPipelineModelIsPublicRequest(itemId, newIsPublicValue)
+          .catch((response) => {
+            listActionElement.checked = !newIsPublicValue;
+          });
         break;
       }
       default: {
diff --git a/app/static/js/ResourceLists/TesseractOCRPipelineModelList.js b/app/static/js/ResourceLists/TesseractOCRPipelineModelList.js
index c5e08b1d64233ba87f3b81bd88d07501c78b3653..8d9ce51594e5a288038a663393b1a19589276b14 100644
--- a/app/static/js/ResourceLists/TesseractOCRPipelineModelList.js
+++ b/app/static/js/ResourceLists/TesseractOCRPipelineModelList.js
@@ -128,7 +128,11 @@ class TesseractOCRPipelineModelList extends ResourceList {
     let listAction = listActionElement.dataset.listAction;
     switch (listAction) {
       case 'toggle-is-public': {
-        Utils.tesseractOCRPipelineModelToggleIsPublicRequest(this.userId, itemId);
+        let newIsPublicValue = listActionElement.checked;
+        Utils.updateTesseractOCRPipelineModelIsPublicRequest(itemId, newIsPublicValue)
+          .catch((response) => {
+            listActionElement.checked = !newIsPublicValue;
+          });
         break;
       }
       default: {
diff --git a/app/static/js/Utils.js b/app/static/js/Utils.js
index c5a55e8978fbeaa58e21c7efdf8d98b68391757b..88dadea1dff44847eff5275bdd28629311fc9891 100644
--- a/app/static/js/Utils.js
+++ b/app/static/js/Utils.js
@@ -101,13 +101,21 @@ class Utils {
 
   static updateCorpusFollowerRole(corpusId, followerId, roleName) {
     return new Promise((resolve, reject) => {
-      fetch(`/corpora/${corpusId}/followers/${followerId}/role`, {method: 'POST', headers: {Accept: 'application/json', 'Content-Type': 'application/json'}, body: JSON.stringify({role: roleName})})
+      let fetchRessource = `/corpora/${corpusId}/followers/${followerId}/role`;
+      let fetchOptions = {
+        method: 'POST',
+        headers: {
+          'Accept': 'application/json',
+          'Content-Type': 'application/json'
+        },
+        body: JSON.stringify({role: roleName})
+      };
+      fetch(fetchRessource, fetchOptions)
         .then(
           (response) => {
             if (response.ok) {
               app.flash('Role updated', 'corpus');
               resolve(response);
-              return;
             } else {
               app.flash(`${response.statusText}`, 'error');
               reject(response);
@@ -179,7 +187,15 @@ class Utils {
 
   static unfollowCorpusRequest(corpusId, followerId) {
     return new Promise((resolve, reject) => {
-      fetch(`/corpora/${corpusId}/followers/${followerId}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}})
+      let fetchRessource = `/corpora/${corpusId}/followers/${followerId}/unfollow`;
+      let fetchOptions = {
+        method: 'POST',
+        headers: {
+          'Accept': 'application/json',
+          'Content-Type': 'application/json'
+        }
+      };
+      fetch(fetchRessource, fetchOptions)
         .then(
           (response) => {
             if (response.ok) {
@@ -683,23 +699,27 @@ class Utils {
     });
   }
 
-  static tesseractOCRPipelineModelToggleIsPublicRequest(userId, tesseractOCRPipelineModelId, is_public) {
+  static updateTesseractOCRPipelineModelIsPublicRequest(tesseractOCRPipelineModelId, newIsPublicValue) {
     return new Promise((resolve, reject) => {
-      let tesseractOCRPipelineModel;
-      try {
-        tesseractOCRPipelineModel = app.data.users[userId].tesseract_ocr_pipeline_models[tesseractOCRPipelineModelId];
-      } catch (error) {
-        tesseractOCRPipelineModel = {};
-      }
-    
-      fetch(`/contributions/tesseract-ocr-pipeline-models/${tesseractOCRPipelineModelId}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}})
+      let fetchRessource = `/contributions/tesseract-ocr-pipeline-models/${tesseractOCRPipelineModelId}/is_public`;
+      let fetchOptions = {
+        method: 'PUT',
+        headers: {
+          'Accept': 'application/json',
+          'Content-Type': 'application/json'
+        },
+        body: JSON.stringify(newIsPublicValue)
+      };
+      fetch(fetchRessource, fetchOptions)
         .then(
           (response) => {
-            if (response.status === 403) {
-              app.flash('Forbidden', 'error');
+            if (response.ok) {
+              response.json().then((data) => {app.flash(data);});
+              resolve(response);
+            } else {
+              app.flash(`${response.statusText}`, 'error');
               reject(response);
             }
-            resolve(response);
           },
           (response) => {
             app.flash('Something went wrong', 'error');
@@ -709,23 +729,27 @@ class Utils {
     });
   }
 
-  static spaCyNLPPipelineModelToggleIsPublicRequest(userId, spaCyNLPPipelineModelId) {
+  static updateSpaCyNLPPipelineModelIsPublicRequest(SpaCyNLPPipelineModelId, newIsPublicValue) {
     return new Promise((resolve, reject) => {
-      let spaCyNLPPipelineModel;
-      try {
-        spaCyNLPPipelineModel = app.data.users[userId].spacy_nlp_pipeline_models[spaCyNLPPipelineModelId];
-      } catch (error) {
-        spaCyNLPPipelineModel = {};
-      }
-
-      fetch(`/contributions/spacy-nlp-pipeline-models/${spaCyNLPPipelineModelId}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}})
+      let fetchRessource = `/contributions/spacy-nlp-pipeline-models/${SpaCyNLPPipelineModelId}/is_public`;
+      let fetchOptions = {
+        method: 'PUT',
+        headers: {
+          'Accept': 'application/json',
+          'Content-Type': 'application/json'
+        },
+        body: JSON.stringify(newIsPublicValue)
+      };
+      fetch(fetchRessource, fetchOptions)
         .then(
           (response) => {
-            if (response.status === 403) {
-              app.flash('Forbidden', 'error');
+            if (response.ok) {
+              response.json().then((data) => {app.flash(data);});
+              resolve(response);
+            } else {
+              app.flash(`${response.statusText}`, 'error');
               reject(response);
             }
-            resolve(response);
           },
           (response) => {
             app.flash('Something went wrong', 'error');