Idempotência
id_chamada é a chave de idempotência do endpoint, e precisa ser único por ligação.
O problema que ela resolve
A resposta pode se perder: timeout de rede, reinício do seu processo, falha entre o nosso 200 e o seu registro. Sem idempotência, reenviar a chamada criaria no card do anunciante uma segunda anotação, uma segunda tarefa e uma segunda troca de dono.
Como funciona
Reenviar o mesmo id_chamada devolve a mesma resposta e não grava nada de novo.
# Primeira tentativa: a resposta se perde
POST /partners/resultados-chamada { "id_chamada": "conv_0001", ... }
# Reenvio seguro, quantas vezes precisar
POST /partners/resultados-chamada { "id_chamada": "conv_0001", ... }
# -> 200 { "success": true, "lead_id": "..." }, sem duplicar nadaIsso vale para anotação, tarefa, conclusão da tarefa de qualificação e troca de dono.
Reenvio com corpo diferente
Também não altera nada. A resposta continua sendo a da primeira gravação.
Ou seja: o id_chamada não serve para corrigir uma chamada já enviada. Se o conteúdo mudou, ele é outra ligação, e precisa de outro id_chamada.
Duas chamadas ao mesmo tempo
Se o mesmo id_chamada chegar duas vezes quase simultaneamente, a segunda recebe 409 com Retry-After, porque a primeira ainda está sendo processada.
{
"success": false,
"error": "Resultado desta chamada já está sendo gravado. Tente novamente em instantes."
}Aguarde o prazo e repita o mesmo id_chamada: você receberá a resposta da primeira.
Regras para gerar o id
- Único por ligação, em todo o histórico, não só no dia.
- Nunca reaproveitado em outro lead. Se você usar
conv_0001em dois leads diferentes, o segundo envio será tratado como repetição do primeiro e não será gravado. - Até 120 caracteres.
- O id da conversa no seu próprio sistema costuma ser a melhor escolha: ele já é único e permite rastrear os dois lados.

