# API-Referenz für Batches — Start, Export & Löschen

> Starten Sie die Extraktion für einen Batch hochgeladener Dokumente, listen und filtern Sie Ihre Batches, fragen Sie den aggregierten Status ab, rufen Sie die umgeformten JSON-Ergebnisse ab, exportieren Sie nach Excel/Word und löschen Sie Batches für die ImageToTable.ai v1 API.

Ein **Batch** ist eine benannte Gruppe von einem oder mehreren [Dokumenten](/developers/reference/documents), die Sie gemeinsam verarbeiten, abfragen und Ergebnisse abrufen. Sie erstellen keinen Batch explizit – er wird implizit beim ersten Hochladen eines Dokuments mit diesem `batch_name` erstellt (siehe [Dokument hochladen](/developers/reference/documents#upload-a-document)).

## Verarbeitung eines Batches starten

Startet die Extraktion für jedes berechtigte Dokument im Batch (alles, was nicht bereits `processing` oder `succeeded` ist). Dieser Endpunkt verbraucht tatsächlich Guthaben – eines pro eingereihtem Dokument.

`POST /api/v1/batches/{batch_name}/process`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| batch_name | Pfad | string | Der zu verarbeitende Batch. |
| template_id | Body (JSON) | integer, optional | Eine gespeicherte Vorlage, die angewendet werden soll. Hat Vorrang vor fields , falls beide angegeben sind. |
| fields | Body (JSON) | array, optional | Ad-hoc-Feldliste nur für diesen Durchlauf – [{"name": "...", "format_requirement": "..."}] oder ein einfaches Array von Namensstrings. Wird ignoriert, wenn template_id angegeben ist. Lassen Sie beide weg, damit das Modell Spalten selbst ableiten kann. |
| quality | Body (JSON) | string, optional | "fast" oder "high" . Weglassen, um auf die thinking_type -Einstellung Ihres Kontos zurückzufallen – siehe Kontoeinstellungen & API-Verhalten . |
| webhook_url | Body (JSON) | string, optional | Registriert (oder aktualisiert) den Abschluss-Callback dieses Batches im selben Aufruf – gleichbedeutend mit dem zusätzlichen Aufruf von Batch-Webhook registrieren . Muss http:// oder https:// sein. |
| Idempotency-Key | Header, optional | string | Stark empfohlen – dieser Endpunkt verbraucht Guthaben. Siehe Idempotenz . |

`quality` ist die einzige Kontoeinstellung, die die API pro Aufruf überschreiben lässt – jede andere Einstellung auf Kontoebene (bbox-Auto-Annotation, Aufbewahrungsrichtlinie) wird von Ihrem Konto gelesen und kann nicht pro Anfrage überschrieben werden. Siehe [Kontoeinstellungen & API-Verhalten](/developers/guides/account-settings) für das vollständige Bild, einschließlich warum `auto_annotate_bbox` dazu führen kann, dass Ihnen dieser Aufruf auch die bbox-Annotation in Rechnung stellt, obwohl Sie diesen Endpunkt nie aufgerufen haben.

**Das `webhook_registered` in der Antwort bezieht sich nur auf diesen spezifischen Aufruf** – es ist `true` genau dann, wenn *diese* Anfrage `webhook_url` enthielt, nicht ob der Batch überhaupt einen Webhook hat. Ein Batch, dessen Webhook zuvor über [Batch-Webhook registrieren](/developers/reference/webhooks) eingerichtet wurde (und hier nicht wiederholt wird), löst seinen Callback bei Abschluss korrekt aus, aber dieses Feld gibt für diesen Aufruf dennoch `false` zurück – es prüft nicht, ob bereits ein `BatchWebhook` existiert. Behandeln Sie ein `false` hier nicht als „für diesen Batch wird kein Webhook ausgelöst.“

Wenn Sie diesen Endpunkt erneut für einen Batch aufrufen, den Sie bereits verarbeitet haben und über den Sie benachrichtigt wurden – nachdem Sie weitere Dokumente hochgeladen haben – wird der Webhook dieses Batches automatisch wieder aktiviert, falls er bereits ausgelöst wurde, sodass auch der Abschluss der neuen Welle benachrichtigt. Es ist kein zusätzlicher Aufruf erforderlich, um dies zu erreichen; siehe den Abschnitt „Batch erneut verarbeiten“ im [Webhooks-Leitfaden](/developers/guides/webhooks#reprocessing-a-batch) für die genaue Semantik (einschließlich was passiert, wenn sich zwei Wellen überschneiden).

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` – siehe [Fehlerbehandlung](/developers/guides/errors).
- `batch_not_found` – unter diesem `batch_name` existieren in Ihrem Konto keine Dokumente.
- `invalid_parameter` – ungültiger Wert für `quality`/`webhook_url`/`template_id`, oder es befinden sich derzeit keine Dokumente im Batch, die für die Verarbeitung in Frage kommen (alle bereits abgeschlossen/in Verarbeitung, oder der Batch ist leer).
- `template_not_found`
- `insufficient_credits` – nicht genügend verfügbare Credits, um die in die Warteschlange gestellten Dokumente abzudecken.

## Batches auflisten

Gibt eine paginierte, filterbare Zusammenfassungsliste Ihrer Batches zurück – das Äquivalent zu „Files Filter“ für API-Nutzer. Diese liefert nur Zusammenfassungen (`document_count`, aggregierter `status`); verwenden Sie [Batch-Ergebnisse abrufen](#get-batch-results) für die vollständigen, dokumentbezogenen Daten eines bestimmten Batches.

`GET /api/v1/batches`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| source | query, optional | string | Einer von direct , collect , email_inbox , api (hochgeladen via POST /documents , abweichend von direct , der Haupt-Web-App) oder share (ein Alias, der sowohl collect als auch email_inbox abdeckt). Für alle Quellen weglassen. |
| q | query, optional | string | Groß-/Kleinschreibung-unabhängige Teilzeichenfolgensuche in Dateinamen innerhalb des Batches. |
| date_from | query, optional | string ( YYYY-MM-DD ) | Inklusive untere Grenze für den Upload-Zeitpunkt. |
| date_to | query, optional | string ( YYYY-MM-DD ) | Inklusive obere Grenze für den Upload-Zeitpunkt (Tagesende). |
| status | query, optional | string | Kommagetrennte Liste öffentlicher Status ( queued,processing,succeeded,failed,canceled ) zum Filtern. |
| template_id | query, optional | integer | Nur Batches, die diese Vorlage verwendet haben. |
| mode | query, optional | string | Einzig akzeptierter Wert ist derzeit "table" (der einzige Modus, den v1 derzeit unterstützt). Für zukünftige Extraktionsmodi reserviert. |
| limit | query, optional | integer | 1–100. Standard 20. |
| page_token | query, optional | string | Undurchsichtiger Cursor aus dem next_page_token einer vorherigen Antwort. Siehe Paginierung . |

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` — siehe [Fehlerbehandlung](/developers/guides/errors).
- `invalid_parameter` — ungültiger `mode`, `limit`, `status` oder `page_token`.

## Batch-Status abrufen

Leichtgewichtiger aggregierter Status für einen Batch – zählt pro öffentlichem Status plus einem `all_done`-Flag. Nützlich für eine günstige Polling-Schleife, die noch nicht die vollständigen Ergebnisse benötigt.

`GET /api/v1/batches/{batch_name}`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| batch_name | Pfad | string | Der zu prüfende Batch. |

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` — siehe [Fehlerbehandlung](/developers/guides/errors).
- `batch_not_found`

## Batch-Ergebnisse abrufen

Die primäre Methode zum Abrufen extrahierter Daten. Jedes Dokument im Batch wird mit seinen umgeformten `line_items` zurückgegeben – einem Array von `{field_name: value}`-Objekten, eines pro extrahierter Zeile. Feldwerte sind standardmäßig einfache Skalare (ein String, eine Zahl usw.).

`GET /api/v1/batches/{batch_name}/results`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| batch_name | Pfad | string | Der Batch, für den Ergebnisse abgerufen werden sollen. |
| include | Abfrage, optional | string | "bbox" – wenn gesetzt, wird jeder Feldwert zu {"value": ..., "bbox": {...}|null} anstelle eines einfachen Skalars, und jedes Dokument erhält ein bbox_status -Feld. Siehe unten – dies löst niemals einen neuen bbox-Job aus, sondern gibt nur zurück, was bereits berechnet wurde. |

`?include=bbox` liest nur nachträglich ausgefüllte Ergebnisse – es ruft nicht [bbox-Annotation auslösen](/developers/reference/documents#trigger-bbox-annotation) für Sie auf. Wenn bbox für ein Dokument nie ausgelöst wurde (manuell oder über die `auto_annotate_bbox`-Einstellung Ihres Kontos), werden die Felder dieses Dokuments einfach mit `"bbox": null` zurückgegeben.

**Reine Positionsfelder haben eine dritte, eigenständige Form.** Einige Vorlagenfelder fordern das Modell auf, etwas zu lokalisieren statt Text zu transkribieren (z. B. „das Porträtfoto lokalisieren"). Bei diesen Feldern *ist* der gesamte Wert eine Position – daher erhalten Sie statt eines Skalars oder des `{"value","bbox"}`-Paares `{"type": "image_region", "bbox": {...}, "image_url": "..."}`, **unabhängig davon, ob `?include=bbox` gesetzt war** – die Box ist hier keine optionale Metadaten, sondern der einzige Inhalt des Feldes. `image_url` verweist auf ein abrufbereites, zugeschnittenes JPEG (siehe [Dokumentbild abrufen](/developers/reference/documents#get-a-document-image)), sodass Sie das Original nicht selbst aus vier Zahlen zuschneiden müssen.

Jedes `bbox`-Objekt – in beiden Formen – verwendet `"unit": "normalized"`: Koordinaten sind Fließkommazahlen von 0 bis 1 relativ zur Seitenbreite/-höhe, nicht Pixel und keine 0–1000-Skala. Beachten Sie die [Bounding-Boxes](/developers/guides/bbox)-Anleitung zum Genauigkeitshinweis – diese Koordinaten stammen direkt aus dem Modell ohne pixelgenaue Überprüfung, behandeln Sie sie daher bei dichten oder komplexen Dokumenten als „ungefähr" statt exakt.

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` – siehe [Fehlerbehandlung](/developers/guides/errors).
- `batch_not_found`

## Batch exportieren

Ein praktischer Download – `results` oben ist das kanonische, strukturierte Format, um das diese API herum aufgebaut ist; dieser Endpunkt dient dazu, dieselben Daten ohne eigenes Umformungs-Script in eine Tabelle zu laden. Nur xlsx – v1 unterstützt ausschließlich den Tabellenmodus (Extract), und der Word-Export (docx) in der Haupt-App ist ausschließlich die native Ausgabe des page_word-Modus (ein völlig anderer Prompt und eine andere Ergebnisstruktur), die v1 nicht bereitstellt. Es gibt hier keine Option „Tabellendaten als Word-Dokument".

`GET /api/v1/batches/{batch_name}/export`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| batch_name | Pfad | string | Der zu exportierende Batch. |
| format | Abfrage, optional | string | Nur xlsx (Standard) wird akzeptiert. |

Die Antwort ist ein Datei-Download (`Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`), kein JSON – es gibt kein JSON-Antwortbeispiel für diesen Endpunkt.

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` — siehe [Fehlerbehandlung](/developers/guides/errors).
- `batch_not_found`
- `invalid_parameter` (`param: "format"`) — alles außer `xlsx`.

## Batch löschen

Löscht dauerhaft jedes Dokument im Batch. Jedes noch `queued` Dokument wird vor dem Löschen rückerstattet. Dies entfernt auch die Webhook-Registrierung des Batches (falls vorhanden) und alle mit seinen Dokumenten verbundenen bbox-Annotationsaufträge.

`DELETE /api/v1/batches/{batch_name}`

### Parameter

| Name | Ort | Typ | Beschreibung |
| --- | --- | --- | --- |
| batch_name | Pfad | string | Der zu löschende Batch. |

### Mögliche Fehler

- `missing_api_key` / `invalid_api_key` / `plan_required` — siehe [Fehlerbehandlung](/developers/guides/errors).
- `batch_not_found` — anders als bei manchen anderen Ressourcen führt das Löschen eines `batch_name`, der Ihnen nicht gehört (oder nicht existiert), hier zu einem 404, nicht zu einem stillen No-op.

## Code Examples

### Batch-Verarbeitung starten

POST /api/v1/batches/{batch_name}/process

**cURL**

```bash
curl -X POST https://imagetotable.ai/api/v1/batches/july-invoices/process \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "fields": [
          {"name": "invoice_number"},
          {"name": "invoice_date", "format_requirement": "YYYY-MM-DD"},
          {"name": "total_amount"}
        ],
        "quality": "high",
        "webhook_url": "https://example.com/webhooks/imagetotable"
      }'
```

**Python**

```python
import os
import uuid
import requests

response = requests.post(
    "https://imagetotable.ai/api/v1/batches/july-invoices/process",
    headers={
        "Authorization": f"Bearer {os.environ['API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "fields": [
            {"name": "invoice_number"},
            {"name": "invoice_date", "format_requirement": "YYYY-MM-DD"},
            {"name": "total_amount"},
        ],
        "quality": "high",
        "webhook_url": "https://example.com/webhooks/imagetotable",
    },
)
print(response.json())
```

**Javascript**

```javascript
const response = await fetch("https://imagetotable.ai/api/v1/batches/july-invoices/process", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.API_KEY}`,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    fields: [
      { name: "invoice_number" },
      { name: "invoice_date", format_requirement: "YYYY-MM-DD" },
      { name: "total_amount" },
    ],
    quality: "high",
    webhook_url: "https://example.com/webhooks/imagetotable",
  }),
});
console.log(await response.json());
```

### Antwort

```json
{
  "batch_name": "july-invoices",
  "queued": 3,
  "quality": "high",
  "webhook_registered": true
}
```

### Verarbeitung starten — mit einer gespeicherten Vorlage

POST /api/v1/batches/{batch_name}/process

Die zweite Möglichkeit, die Extraktion zu spezifizieren — `template_id` hat Vorrang vor `fields`, wenn beide gesendet werden, und ist die üblichere Wahl, sobald Sie dieselbe Spaltenliste über mehrere Durchläufe hinweg wiederverwenden, anstatt sie jedes Mal ad-hoc zu deklarieren.

**cURL**

```bash
curl -X POST https://imagetotable.ai/api/v1/batches/july-invoices/process \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"template_id": 42}'
```

**Python**

```python
import os
import uuid
import requests

response = requests.post(
    "https://imagetotable.ai/api/v1/batches/july-invoices/process",
    headers={
        "Authorization": f"Bearer {os.environ['API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={"template_id": 42},
)
print(response.json())
```

**Javascript**

```javascript
const response = await fetch("https://imagetotable.ai/api/v1/batches/july-invoices/process", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.API_KEY}`,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ template_id: 42 }),
});
console.log(await response.json());
```

### Antwort

```json
{
  "batch_name": "july-invoices",
  "queued": 3,
  "quality": "fast",
  "webhook_registered": false
}
```

`quality` ist hier `"fast"`, weil es in der Anfrage ausgelassen wurde und auf die `thinking_type`-Einstellung des Kontos zurückfiel, nicht weil eine Vorlage verwendet wurde — `template_id`/`fields` und `quality` sind unabhängige Parameter.

### Batches auflisten

GET /api/v1/batches

**cURL**

```bash
curl "https://imagetotable.ai/api/v1/batches?status=succeeded&limit=20" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://imagetotable.ai/api/v1/batches",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    params={"status": "succeeded", "limit": 20},
)
print(response.json())
```

**Javascript**

```javascript
const url = new URL("https://imagetotable.ai/api/v1/batches");
url.searchParams.set("status", "succeeded");
url.searchParams.set("limit", "20");

const response = await fetch(url, {
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
console.log(await response.json());
```

### Antwort

```json
{
  "data": [
    {
      "batch_name": "july-invoices",
      "status": "succeeded",
      "document_count": 3,
      "created_at": "2026-07-16T09:12:03+00:00"
    }
  ],
  "has_more": false,
  "next_page_token": null
}
```

### Batch-Status abrufen

GET /api/v1/batches/{batch_name}

**cURL**

```bash
curl https://imagetotable.ai/api/v1/batches/july-invoices \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://imagetotable.ai/api/v1/batches/july-invoices",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
)
print(response.json())
```

**Javascript**

```javascript
const response = await fetch("https://imagetotable.ai/api/v1/batches/july-invoices", {
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
console.log(await response.json());
```

### Antwort

```json
{
  "batch_name": "july-invoices",
  "document_count": 3,
  "status_counts": {
    "queued": 0,
    "processing": 0,
    "succeeded": 3,
    "failed": 0,
    "canceled": 0
  },
  "all_done": true,
  "created_at": "2026-07-16T09:12:03+00:00"
}
```

### Batch-Ergebnisse abrufen

GET /api/v1/batches/{batch_name}/results

**cURL**

```bash
curl https://imagetotable.ai/api/v1/batches/july-invoices/results \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://imagetotable.ai/api/v1/batches/july-invoices/results",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
)
print(response.json())
```

**Javascript**

```javascript
const response = await fetch("https://imagetotable.ai/api/v1/batches/july-invoices/results", {
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
console.log(await response.json());
```

### Antwort — Standard (ohne include)

```json
{
  "batch_name": "july-invoices",
  "status": "succeeded",
  "created_at": "2026-07-16T09:12:03+00:00",
  "started_at": "2026-07-16T09:12:05+00:00",
  "completed_at": "2026-07-16T09:12:14+00:00",
  "documents": [
    {
      "document_id": "8f14e45f-ceea-467e-9de1-a3e9c93a9c95",
      "filename": "invoice_042.jpg",
      "status": "succeeded",
      "created_at": "2026-07-16T09:12:03+00:00",
      "started_at": "2026-07-16T09:12:05+00:00",
      "completed_at": "2026-07-16T09:12:14+00:00",
      "line_items": [
        {
          "invoice_number": "INV-1042",
          "invoice_date": "2026-07-01",
          "total_amount": "1,204.50"
        }
      ]
    }
  ]
}
```

### Batch-Ergebnisse abrufen — mit bbox

GET /api/v1/batches/{batch_name}/results?include=bbox

**cURL**

```bash
curl "https://imagetotable.ai/api/v1/batches/july-invoices/results?include=bbox" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://imagetotable.ai/api/v1/batches/july-invoices/results",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    params={"include": "bbox"},
)
print(response.json())
```

**Javascript**

```javascript
const url = new URL("https://imagetotable.ai/api/v1/batches/july-invoices/results");
url.searchParams.set("include", "bbox");

const response = await fetch(url, {
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
console.log(await response.json());
```

### Antwort — `?include=bbox`

```json
{
  "batch_name": "july-invoices",
  "status": "succeeded",
  "created_at": "2026-07-16T09:12:03+00:00",
  "started_at": "2026-07-16T09:12:05+00:00",
  "completed_at": "2026-07-16T09:12:14+00:00",
  "documents": [
    {
      "document_id": "8f14e45f-ceea-467e-9de1-a3e9c93a9c95",
      "filename": "invoice_042.jpg",
      "status": "succeeded",
      "created_at": "2026-07-16T09:12:03+00:00",
      "started_at": "2026-07-16T09:12:05+00:00",
      "completed_at": "2026-07-16T09:12:14+00:00",
      "bbox_status": "succeeded",
      "line_items": [
        {
          "invoice_number": {
            "value": "INV-1042",
            "bbox": {"x1": 0.121, "y1": 0.084, "x2": 0.418, "y2": 0.112, "unit": "normalized"}
          },
          "total_amount": {
            "value": "1,204.50",
            "bbox": null
          },
          "portrait_photo": {
            "type": "image_region",
            "bbox": {"x1": 0.740, "y1": 0.060, "x2": 0.920, "y2": 0.260, "unit": "normalized"},
            "image_url": "https://imagetotable.ai/api/v1/documents/8f14e45f-ceea-467e-9de1-a3e9c93a9c95/image?crop=0.7241%2C0.0426%2C0.9359%2C0.2774"
          }
        }
      ]
    }
  ]
}
```

### Batch exportieren

GET /api/v1/batches/{batch_name}/export

**cURL**

```bash
curl "https://imagetotable.ai/api/v1/batches/july-invoices/export?format=xlsx" \
  -H "Authorization: Bearer $API_KEY" \
  -o july-invoices.xlsx
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://imagetotable.ai/api/v1/batches/july-invoices/export",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    params={"format": "xlsx"},
)
with open("july-invoices.xlsx", "wb") as f:
    f.write(response.content)
```

**Javascript**

```javascript
import { writeFile } from "node:fs/promises";

const url = new URL("https://imagetotable.ai/api/v1/batches/july-invoices/export");
url.searchParams.set("format", "xlsx");

const response = await fetch(url, {
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
await writeFile("july-invoices.xlsx", Buffer.from(await response.arrayBuffer()));
```

### Batch löschen

DELETE /api/v1/batches/{batch_name}

**cURL**

```bash
curl -X DELETE https://imagetotable.ai/api/v1/batches/july-invoices \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import os
import requests

response = requests.delete(
    "https://imagetotable.ai/api/v1/batches/july-invoices",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
)
print(response.json())
```

**Javascript**

```javascript
const response = await fetch("https://imagetotable.ai/api/v1/batches/july-invoices", {
  method: "DELETE",
  headers: { "Authorization": `Bearer ${process.env.API_KEY}` },
});
console.log(await response.json());
```

### Antwort

```json
{
  "batch_name": "july-invoices",
  "deleted": 3,
  "canceled": 1
}
```

---

Source: https://imagetotable.ai/de/developers/reference/batches
