Idempotency-Key header on any POST request and you can safely retry on failure. The server caches the first response (status code and body) and replays it on retries. Keys expire after 24 hours.
Behavior
| Situation | Response |
|---|---|
| First request | Executes and caches the response. |
| Retry, same key, same body | Returns the cached response. Includes Idempotent-Replayed: true response header. |
| Retry, same key, different body | 400 IDEMPOTENT_PARAMETER_MISMATCH - use a new key for a different request. |
| Two concurrent requests, same key | 409 IDEMPOTENCY_REQUEST_IN_PROGRESS - retry with backoff. |
| Key reused after 24 hours | Treated as a fresh request. |
4xx and 5xx. If the first attempt returned a business error, retries replay that error. Fix the input and use a new key to try again.
401, 422, and 429 responses are not cached and are safe to retry with the same key.
Retry pattern
Recommendations
- Retry on network errors and
429with the same key. These are the only cases where the original request may not have reached the server. - Use a new key after a
4xxbusiness error. The cached error replays on retries; only a new key triggers a fresh attempt. - Persist the key before sending if you need guaranteed retry safety after a client crash.