diff --git a/rest/index.php b/rest/index.php
index 667d752c521e475927f924a5fcbdbf3944c88c61..0c7970cfdee9934208e05cb51d91cd6fe5d091d3 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -185,6 +185,7 @@ $app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':updat
 $app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete');
 $app->get('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':getResourcesById');
 $app->post('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':addResourcesById');
+$app->delete('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':removeResourcesById');
 $app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing');
 
 //Groups
diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php
index ca020240559619118efcddeeda4cf78c972e46b8..c3bdb28209435a1a7b00d8c0966b1f296fda3633 100755
--- a/src/app/folder/controllers/FolderController.php
+++ b/src/app/folder/controllers/FolderController.php
@@ -453,6 +453,10 @@ class FolderController
         }
 
         $resourcesToClassify = array_diff($body['resources'], $foldersResources);
+        if (empty($resourcesToClassify)) {
+            return $response->withJson(['countResources' => count($foldersResources)]);
+        }
+
         if (!ResController::hasRightByResId(['resId' => $resourcesToClassify, 'userId' => $GLOBALS['id']])) {
             return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']);
         }
@@ -464,6 +468,40 @@ class FolderController
         return $response->withJson(['countResources' => count($foldersResources) + count($resourcesToClassify)]);
     }
 
+    public function removeResourcesById(Request $request, Response $response, array $args)
+    {
+        if (!Validator::numeric()->notEmpty()->validate($args['id'])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Route id is not an integer']);
+        }
+
+        if (!FolderController::hasFolder(['id' => $args['id'], 'userId' => $GLOBALS['id']])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Folder out of perimeter']);
+        }
+
+        $foldersResources = ResourceFolderModel::get(['select' => ['res_id'], 'where' => ['folder_id = ?'], 'data' => [$args['id']]]);
+        $foldersResources = array_column($foldersResources, 'res_id');
+
+        $body = $request->getParsedBody();
+        if (!Validator::arrayType()->notEmpty()->validate($body['resources'])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Body resources is empty or not an array']);
+        }
+
+        $resourcesToUnclassify = array_intersect($foldersResources, $body['resources']);
+        if (empty($resourcesToUnclassify)) {
+            return $response->withJson(['countResources' => count($foldersResources)]);
+        }
+
+        if (!ResController::hasRightByResId(['resId' => $resourcesToUnclassify, 'userId' => $GLOBALS['id']])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']);
+        }
+
+        foreach ($resourcesToUnclassify as $value) {
+            ResourceFolderModel::delete(['where' => ['folder_id = ?', 'res_id = ?'], 'data' => [$args['id'], $value]]);
+        }
+
+        return $response->withJson(['countResources' => count($foldersResources) - count($resourcesToUnclassify)]);
+    }
+
     // login (string) : Login of user connected
     // folderId (integer) : Check specific folder
     // edition (boolean) : whether user can edit or not