# Idempotency

Networks fail. If you send a POST and get no answer, you cannot know whether the job started. Send it again with the same **Idempotency-Key** and you are never charged twice.

```http
POST /api/v1/find-contacts
Idempotency-Key: 6f1c2a1e-3b0a-4c47-9c0e-1f2d3e4a5b6c
```

## How it works

- Every POST accepts an `Idempotency-Key` header: any unique string up to 255 characters. A new UUID per request is best.
- The first request runs. Any retry with the **same key and the same body** in the next 24 hours gets the first answer back, with the header `Idempotent-Replayed: true`. No second job, no second charge.
- The same key with a **different body** gets `422 idempotency_key_reused`. Use a new key for a new request.
- If the first request is still running, a retry gets `409 idempotency_in_progress`. Wait a moment and retry.
- Server errors (5xx) are not stored: a retry with the same key runs again.
- Keys are per account and per key kind (test and live never mix).

Make, Zapier and n8n: set the header to a value that is the same on a re-run of the same step, for example the record id from the trigger.

