Delete many documents
/documents/bulk/deleteDeletes up to 100 documents in the request, or 101 to 10,000 as a job that answers 202 with the job. Each item is { "id": ... } and is deleted as DELETE /documents/{id} does, and runs on its own: a failed item, such as a deal image or an unknown id, is reported in its slot and the rest carry on. Use DELETE /documents/{id} for one document. dry_run runs up to 100 items and rolls them back. Emits document.deleted per item that succeeds, after commit, and sends no email. It can't be undone.
Query parameters
Validate and run the call without committing it, returning what the real call would return with
meta.dry_runset.
Headers
Makes a retry safe. Send a new UUID for each new request and reuse it only to retry that request; the first response is replayed for 24 hours.
Request body
application/json, required · DocumentBulkDelete
Up to 10,000 items, each the
idof a document to delete. Up to 100 run in the request.
{
"items": [
{
"id": "5e6f7081-92a3-4b4c-9d6e-7f8091a2b3c4"
},
{
"id": "6f708192-a3b4-4c5d-8e6f-7081a2b3c4d5"
}
]
}Responses
{
"data": [
{
"index": 1,
"status": "succeeded",
"data": {},
"error": {}
}
],
"meta": {
"succeeded": 1,
"failed": 1
}
}{
"data": {
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"type": "string",
"status": "queued",
"progress": {
"done": 1,
"total": 1
},
"result": {},
"error": {},
"created_at": "2026-06-12T10:00:00+00:00",
"updated_at": "2026-06-12T10:00:00+00:00",
"completed_at": "2026-06-12T10:00:00+00:00"
}
}Authorization failed. error.code is one of org_disabled,
ip_blocked, missing_scope, scope_disabled, user_disabled.
The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per
problem, or a code documented on the operation.
Examples
curl -X POST https://your-org-domain/kong/core/api/v2/documents/bulk/delete\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"\
-d '{
"items": [
{
"id": "5e6f7081-92a3-4b4c-9d6e-7f8091a2b3c4"
},
{
"id": "6f708192-a3b4-4c5d-8e6f-7081a2b3c4d5"
}
]
}'