# Duplikate entfernen (https://developer.bimetrics.de/reference/documents/delete-document-duplicates)

`POST https://app.bimetrics.de/api/document/duplicates/delete`

operationId: `deleteDocumentDuplicates` · Berechtigung (Scope): `documents:delete` · Bereich: Belege

Entfernt ausgewählte Duplikat-Einträge, wie „Duplikat löschen“ in der App, höchstens 1000 auf einmal. Beleg, Datei, Buchungen und Zuordnung bleiben. Danach hält keine Kopie mehr den Beleg, wenn das Original gelöscht wird. Ist eine ID unbekannt, antwortet die Route mit `404` und entfernt nichts. Eine Wiederholung mit gleichem Idempotency-Key entfernt nichts doppelt und meldet `replayed`.

Benötigt einen Schlüssel mit der Berechtigung `documents:delete`.

> **Achtung:** Ändert Daten der Firma; wird atomar mit Idempotenzbeleg und Herkunft protokolliert.
>
> KI-Agenten fragen vor diesem Aufruf beim Nutzer nach.

### Authentifizierung

`Authorization: Bearer bm_…` (alternativ `X-API-KEY: bm_…`, nie beide zugleich).

### Parameter

| Name | Ort | Pflicht | Typ | Beschreibung |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | ja | string | Stabiler Schlüssel für genau diese Änderung: 1–128 druckbare ASCII-Zeichen ohne Leerzeichen. Bei Wiederholungen denselben Schlüssel und unveränderten Inhalt senden; das Ergebnis wird nicht nochmals erzeugt. |

### Request-Body (`application/json`)

IDs der Duplikat-Einträge

Schema `DocumentDuplicatesDeleteRequest`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `duplicateIds` | Array<string (uuid)>, kann null sein | IDs der Einträge, 1 bis 1000. |

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/document/duplicates/delete" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY" \
  -H "Idempotency-Key: rechnung-2026-001" \
  -H "Content-Type: application/json" \
  -d '{"kind":"and","children":[],"limit":50,"offset":0}'
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: DocumentDuplicatesDeleted |
| 400 | Ungültige Anfrage, z. B. ein Parameter mit ungültigem Wert wie eine ID, die keine UUID ist; korrigieren statt wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |
| 401 | Kein gültiger Schlüssel: fehlt (`Unauthorized`), ist unbekannt, abgelaufen oder widerrufen oder wurde nicht in genau einem Header gesendet (`InvalidAPIKey`). Schlüssel prüfen, nicht wiederholen. Auch eine ID, die zu einer anderen Firma gehört, ergibt `401 Unauthorized`. | `application/json`: Error |
| 403 | Dem Schlüssel fehlt die Berechtigung für diese Route (`APIKeyPermissionDenied`), oder die Firma hat keinen API-Zugang (mehr), etwa nach Ende der Testphase oder des Abos (`APIUnavailable`). | `application/json`: Error |
| 404 | Nicht gefunden (`NotFound`). | `application/json`: Error |
| 409 | Versionskonflikt (`VersionConflict`), abweichender Inhalt für denselben Idempotency-Key (`IdempotencyConflict`), Dublette (`ContactDuplicate`) oder fachlich gesperrte Änderung. Aktuellen Zustand laden und prüfen; keinen anderen Schlüssel verwenden, um einen Konflikt zu umgehen. | `application/json`: Error |
| 413 | Die Anfrage ist zu groß (`APIRequestTooLarge`), siehe `x-bimetrics-limits`. | `application/json`: Error |
| 429 | Zu viele Anfragen; nach `Retry-After` Sekunden erneut senden. Mehr unter [Fehler](https://developer.bimetrics.de/errors). (Header: Retry-After) | `application/json`: Error |
| 500 | Serverfehler; die Anfrage später wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |

#### Felder der Antwort 200 (`DocumentDuplicatesDeleted`)

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `deleted` | integer | Einträge, die dieser Aufruf entfernt hat; bei einer Wiederholung 0. |
| `replayed` | boolean | True bei sicherer Wiederholung eines bereits erfolgreichen Aufrufs. |

Verschachtelte Schemas stehen vollständig in der OpenAPI-Beschreibung: https://app.bimetrics.de/api/openapi.json
