---
title: Idempotenz
description: Wiederholen Sie einen Kauf sicher, ohne doppelt zu kaufen.
sidebar:
  order: 4
---
Nach einem Netzwerkfehler wissen Sie unter Umständen nicht, ob ein Kauf ausgeführt wurde. Daher erfordert jeder Aufruf von `POST /offsets` den Header `Idempotency-Key`. Er enthält einen eindeutigen Wert pro Kauf, zum Beispiel eine UUID.

```txt
Idempotency-Key: 7f8d0c6e-2b1a-4e9f-9d3c-5a6b7c8d9e0f
```

## Was bei einer Wiederholung passiert [#what-happens-on-a-retry]

| Sie senden | Sie erhalten |
| --- | --- |
| Einen neuen Schlüssel | Einen neuen Kauf (`201`). |
| Denselben Schlüssel und denselben Body | Erneut den ersten Kauf (`201`), mit `Idempotent-Replayed: true`. Es wird nichts doppelt gekauft. |
| Denselben Schlüssel und einen anderen Body | `409 idempotency_key_reused`. Verwenden Sie für einen neuen Kauf einen neuen Schlüssel. |

Die Wiederholung liefert den Kauf in seinem aktuellen Zustand. Sein `status` kann daher bereits von `processing` zu `placed` gewechselt sein.

## Gut zu wissen [#good-to-know]

- Schlüssel bestehen aus 1 bis 255 druckbaren ASCII-Zeichen. Wir speichern sie dauerhaft, getrennt nach Modus.
- Die Reihenfolge der Felder im Body und Leerzeichen spielen keine Rolle: `{"kg":1,"reference":"a"}` und `{ "reference": "a", "kg": 1 }` sind dieselbe Anfrage.
- Wenn ein Kauf fehlschlägt (zum Beispiel mit `402 insufficient_balance` oder einem Validierungsfehler), wird nichts gespeichert. Nachdem Sie Ihr Guthaben aufgeladen haben, können Sie es mit demselben Schlüssel erneut versuchen.
- Auch zwei gleichzeitige Anfragen mit demselben Schlüssel sind sicher: Eine führt den Kauf aus, die andere erhält die Wiederholung.
