Skip to main content

GuidesIdempotency

Idempotency

Optional. Only when retrying the same POST. Not record identity.

The first call does not need Idempotency-Key. Creating a contact is POST with display_name. Not duplicating a person is POST /contacts/upsert by email/phone. The header exists only when the client retries the same write after a timeout or 500 — the host returns the first response instead of creating another row.

Accepted on POST of contacts, companies, deals, tasks, webhooks, tags and upsert. Replay by organization + method + path + key string, 24 hours, with X-Idempotent-Replayed: true. It does not hash the body.

You sendResult
Same key + same bodyOriginal status and body. No second row.
Same key + different bodyStill the first response. Treat as a client bug.
New keyNew write.