DoneTalk Desenvolvedores Entrar

Erros, limites e boas práticas

Formato dos erros

Todo erro volta assim:

{
  "error": "validation_failed",
  "message": "Algum campo veio errado. `details` diz qual e por quê.",
  "details": { "name": ["Required"] },
  "request_id": "01a3c0de-7a11-7b22-8c33-9d44e55f6677"
}
  • error é o código estável: é nele que o seu sistema decide o que fazer.
  • message explica, no idioma do cabeçalho Accept-Language (português, inglês ou espanhol; inglês se não vier).
  • request_id identifica a chamada: cite-o ao falar com o suporte. Você pode mandar o seu em X-Request-Id.
HTTPCódigoO que fazer
401unauthorizedFalta a chave. Envie Authorization: Bearer <chave>.
401api_key_invalidChave inválida ou revogada. Confira a chave ou crie outra em Configurações › API.
401api_key_expiredA chave passou da validade. Crie outra em Configurações › API.
403api_key_address_not_allowedEsta chave não aceita chamadas deste endereço IP. Inclua o endereço na chave.
403insufficient_scopeA chave não tem o escopo desta chamada. details.required diz quais servem.
403not_available_to_api_keysEsta chamada não faz parte da API pública.
403not_available_to_test_keysEsta chamada não tem modo teste: use uma chave de produção.
403permission_deniedA chave não pode fazer isto.
403integration_template_onlyTexto e arquivos pedem o escopo messages:send_text; sem ele, só modelos aprovados.
404not_foundNão encontrado.
404campaign_not_foundCampanha não encontrada nesta empresa.
404contact_not_foundContato não encontrado nesta empresa.
422validation_failedAlgum campo veio errado. details diz qual e por quê.
409campaign_not_editableA campanha já saiu do rascunho; só um rascunho pode ser editado ou disparado.
409template_not_approvedO modelo ainda não foi aprovado pela Meta. Espere a aprovação ou escolha outro.
409campaign_audience_emptyNinguém do público pode receber a campanha. Veja os motivos na prévia do público.
409contact_existsJá existe um contato com este telefone. details.contactId diz qual.
409window_closedA janela de 24 horas está fechada: só um modelo aprovado pode iniciar a conversa.
409idempotency_key_reusedEsta Idempotency-Key já foi usada com outro pedido. Use uma chave nova por pedido.
409idempotency_in_progressO primeiro pedido com esta Idempotency-Key ainda está em andamento. Tente em instantes.
429rate_limitedLimite de 600 chamadas por minuto. Espere os segundos de Retry-After.
500internal_errorErro do nosso lado. Já fomos avisados; tente de novo com o mesmo request_id se persistir.

Limite de chamadas

Cada chave pode fazer 600 chamadas por minuto. Toda resposta diz onde você está:

RateLimit-Limit: 600
RateLimit-Remaining: 587
RateLimit-Reset: 41

Passou do limite, a resposta é 429 rate_limited com Retry-After (segundos). Espere esse tempo e tente de novo. O disparo de uma campanha não conta: quem envia é o DoneTalk, no ritmo que a Meta permite para o número.

Repetir sem duplicar

Mande Idempotency-Key (até 200 letras, números, _ . : -) em criações e envios. Se a rede cair e você mandar de novo a mesma chamada com a mesma chave em até 24 horas, recebe a primeira resposta, com Idempotent-Replayed: true, e nada é feito duas vezes. A mesma chave com outro pedido volta 409 idempotency_key_reused.

Idempotency-Key: pedido-88213-campanha

Paginação

  • Campanhas: limit e cursor; a resposta traz nextCursor (null na última página).
  • Contatos: limit e before (o lastActivityAt do último da página).
  • Destinatários de uma campanha: limit e offset, ou format=csv para tudo.

Versões

A v1 só ganha coisas novas: campos e chamadas a mais, nunca mudança no que já existe. Ignore campos que você não conhece. Se um dia for preciso mudar algo, nasce a v2, e a v1 continua por 12 meses, com aviso.

Esta página em Markdown