---
title: "Delete a batch"
summary: "Drop a batch and every document in it from memory, once the work is done."
category: "developer"
tags: ["attest", "reference", "batch", "delete"]
updated: "2026-09-14T04:25:13.145Z"
url: "https://support.quorumtech.ch/articles/attest-delete-batch"
markdown: "https://support.quorumtech.ch/articles/attest-delete-batch.md"
---

# Delete a batch

`DELETE https://api.quorumtech.ch/attest/v1/batches/{batchId}`

Drop a batch from memory.

Removes the batch and every document in it. Batches age out on their own, but once a report is
written the documents behind it have no reason to stay resident; call this when the work is done.

Call this once the report is written. Batches expire on their own after six hours, but expiry is a backstop rather than a plan, and "it will age out" is a poor answer to anyone asking where a client's board pack currently is.

Deleting a batch that is already gone returns `deleted: false` with a 200, not a 404: cleanup that fails on a retry teaches callers to ignore its result, which is the opposite of what a deletion path wants. Deletion is permanent, so call it after the last check against a batch rather than between checks.

## Request

Path parameters:

| Parameter | Description |
| --- | --- |
| `batchId` | The id returned when the batch was created, for example `bat_8153abc164334cd38273`. |

## Example request

```bash
curl -X DELETE "https://api.quorumtech.ch/attest/v1/batches/<batchId>" \
  -H "Authorization: Bearer $QUORUM_API_KEY"
```

## Responses

### 200

Whether a batch with that id was there to delete.

| Field | Type | Description |
| --- | --- | --- |
| `batchId` | string |  |
| `deleted` | boolean |  |

## Errors

The body is `{ "error": { "code", "message" } }`; the full catalogue with what to do about each code is on the Errors page.

| Status | Codes | When |
| --- | --- | --- |
| 401 |  | The key is missing, not recognised, or revoked. |
| 402 | `payment_required`, `credits_exhausted`, `remaining`, `needed` | The workspace has no active API subscription (`payment_required`), or is prepaid and has no credits left for this request (`credits_exhausted`, with `remaining` and `needed`). Manage billing and add credits at https://developer.quorumtech.ch/billing. |
| 403 |  | The key is not scoped to Attest. |
| 429 | `rate_limited`, `claims_rate_limited`, `claim_budget_exhausted`, `monthly_cap_reached`, `cap` | Over the key's requests-per-minute limit (`rate_limited`), its claims-per-minute ceiling (`claims_rate_limited`), its claims-per-day budget (`claim_budget_exhausted`), or, for a postpaid workspace, its monthly credit cap (`monthly_cap_reached`, with `cap` and `resetsAt`). `Retry-After` says when to try again; the daily budget resets at midnight UTC and the cap on the first of the month. |

## Cost

Free.
