A primeira chamada não precisa de Idempotency-Key. Criar um contato é POST com display_name. Não duplicar pessoa é POST /contacts/upsert por email/telefone. O header existe só para quando o cliente retrya o mesmo write depois de timeout ou 500 — o host devolve a primeira resposta em vez de criar outra linha.
Aceito em POST de contacts, companies, deals, tasks, webhooks, tags e upsert. Replay por organização + método + path + string da chave, 24 horas, com X-Idempotent-Replayed: true. Não hasheia o corpo.
| Você envia | Resultado |
|---|---|
| Mesma chave + mesmo corpo | Status e corpo originais. Sem segunda linha. |
| Mesma chave + corpo diferente | Ainda a primeira resposta. Trate como bug do cliente. |
| Chave nova | Nova escrita. |