diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py
index d14d0ba42e6500bc7cd96a4bae7eee2c9f146f66..4d6f2a44814e948cbfa4b23a976c64cab5d394ae 100644
--- a/arkindex/documents/api/elements.py
+++ b/arkindex/documents/api/elements.py
@@ -520,9 +520,15 @@ class ElementsListAutoSchema(AutoSchema):
             parameters.extend([
                 OpenApiParameter(
                     "delete_children",
-                    description="Delete all child elements of those elements recursively.",
+                    description=dedent("""
+                        Delete all child elements of those elements recursively.
+
+                        If set to false, this only removes those elements as parents of their
+                        child elements, without deleting any child element.
+                    """),
                     type=bool,
                     required=False,
+                    default=True,
                 )
             ])
 
@@ -1265,11 +1271,15 @@ class ElementChildrenCreate(CreateAPIView):
         parameters=[
             OpenApiParameter(
                 "delete_children",
-                description="Delete all child elements of this element recursively. "
-                            "By default, this only removes this element as a parent of the child elements, "
-                            "without deleting any child element.",
+                description=dedent("""
+                    Delete all child elements of this element recursively.
+
+                    If set to false, this only removes this element as a parent of the
+                    child elements, without deleting any child element.
+                """),
                 type=bool,
                 required=False,
+                default=True,
             ),
         ],
     ),
@@ -1335,7 +1345,7 @@ class ElementRetrieve(ACLMixin, RetrieveUpdateDestroyAPIView):
         element = self.get_object()
         self.check_object_permissions(self.request, element)
 
-        delete_children = self.request.query_params.get("delete_children", "false").lower() not in ("false", "0")
+        delete_children = self.request.query_params.get("delete_children", "").lower() not in ("false", "0")
 
         element_delete(element, user_id=self.request.user.id, delete_children=delete_children)
 
diff --git a/arkindex/documents/tests/test_destroy_elements.py b/arkindex/documents/tests/test_destroy_elements.py
index 31b3cd60cd2d1572385cf97d4674afb1f234bc36..d6f39024b8bfa567d0810fe7bef6701b330842eb 100644
--- a/arkindex/documents/tests/test_destroy_elements.py
+++ b/arkindex/documents/tests/test_destroy_elements.py
@@ -55,7 +55,12 @@ class TestDestroyElements(FixtureAPITestCase):
         )
         self.assertTrue(self.corpus.elements.filter(id=castle_story.id).exists())
         with self.assertNumQueries(3):
-            response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)}))
+            response = self.client.delete(
+                reverse(
+                    "api:element-retrieve",
+                    kwargs={"pk": str(castle_story.id)}
+                ) + "?delete_children=False",
+            )
         self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
 
         self.assertEqual(delay_mock.call_count, 1)
@@ -89,7 +94,7 @@ class TestDestroyElements(FixtureAPITestCase):
                 with self.assertNumQueries(3):
                     response = self.client.delete(
                         reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)})
-                        + f"?delete_children={delete_children}",
+                        + f"?delete_children={delete_children}"
                     )
                 self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
 
@@ -116,7 +121,12 @@ class TestDestroyElements(FixtureAPITestCase):
             creator=self.user,
         )
         with self.assertNumQueries(3):
-            response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(castle_story.id)}))
+            response = self.client.delete(
+                reverse(
+                    "api:element-retrieve",
+                    kwargs={"pk": str(castle_story.id)}
+                ) + "?delete_children=False"
+            )
         self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
 
         self.assertEqual(delay_mock.call_count, 1)
@@ -168,7 +178,12 @@ class TestDestroyElements(FixtureAPITestCase):
         """
         self.client.force_login(self.user)
         with self.assertNumQueries(3):
-            response = self.client.delete(reverse("api:element-retrieve", kwargs={"pk": str(self.vol.id)}))
+            response = self.client.delete(
+                reverse(
+                    "api:element-retrieve",
+                    kwargs={"pk": str(self.vol.id)}
+                ) + "?delete_children=False"
+            )
         self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
 
         self.assertEqual(delay_mock.call_count, 1)