Idempotency
Send a unique Idempotency-Key (any UUID you generate) on every POST that creates,
charges, or sends:
Idempotency-Key: 1f2e3d4c-5b6a-7980-1234-56789abcdef0
- The first request with a given key is processed and its result cached for 24 hours.
- Any retry with the same key + same payload returns the original result (same status,
same body) without repeating the side effect, and carries
Idempotent-Replayed: trueso you can tell a replay from a fresh write. - The same key with a different payload returns
409 conflict(error.code: idempotency_key_reuse). Generate a new key per request; reuse one only when retrying the same request. Replaying the first response for a different body would report a write that never happened.
Where it applies
Every mutating request — POST, PATCH, PUT, DELETE — across Invoices, Customers, Products,
Payments, Projects, Bookings, Recruitment, Leads, Storefront and Messaging. It is opt-in: the
header does nothing if you don't send one, and there is no penalty for sending one everywhere.
The handful of operations that cannot honour it say so in their own description in the API Reference. Assume it works unless the endpoint says otherwise.
This makes network retries safe — you'll never double-create an invoice or send a message twice.