Conceitos

Erros

Todas as respostas de erro têm o mesmo formato, com um nome estável para você tratar no código.

#Formato

Respostas com status 2xx deram certo. Em caso de erro, o corpo é sempre um JSON com três campos:

422Resposta de erro
{
  "statusCode": 422,
  "name": "validation_error",
  "message": "Missing `subject` field."
}
CampoDescrição
statusCodeO mesmo status HTTP da resposta.
nameCódigo estável do erro, em inglês. Use este campo no seu código.
messageExplicação para pessoas, em inglês. Pode mudar de texto; não compare com ela.

Alguns erros trazem um campo extra: errors. No envio público de formulários, é um objeto com as mensagens de cada campo; nas automações, uma lista com cada problema da definição (step_id e message).

#Códigos de erro

StatusNomeQuando aconteceO que fazer
400invalid_idempotency_keyA Idempotency-Key está vazia ou passa de 256 caracteres.Corrija a chave.
401missing_api_keyFaltou o cabeçalho Authorization.Envie Authorization: Bearer ps_….
401restricted_api_keyUma chave só de envio chamou um endpoint que exige acesso total.Use uma chave de acesso total.
403invalid_api_keyA chave não existe ou foi excluída.Confira a chave ou crie outra.
403restricted_api_keyA chave é restrita a outro domínio.Use o domínio da chave ou outra chave.
403validation_errorO domínio do remetente não está verificado, não tem envio ativo ou não é do seu time.Verifique o domínio.
403sending_pausedOs envios do time foram pausados por taxa alta de bounces ou reclamações.Fale com [email protected].
403plan_limit_reachedO plano não permite mais domínios, inboxes, contatos, segmentos, campanhas no mês ou o recurso pedido.Mude de plano ou remova itens.
403origin_not_allowedUm formulário recebeu um envio de um site fora dos allowed_domains.Inclua o domínio no formulário.
404not_foundO recurso não existe, é de outro time ou a rota não existe.Confira o ID e o caminho.
405method_not_allowedO caminho existe, mas não com esse método.Confira o método.
409invalid_idempotent_requestA mesma Idempotency-Key foi usada com outro corpo.Use uma chave nova por envio.
409concurrent_idempotent_requestsUma requisição com a mesma chave ainda está em andamento.Espere e tente de novo.
409segment_in_useO segmento recebe os contatos de um formulário e não pode ser excluído.Troque o segmento do formulário antes.
409invalid_broadcast_statusA campanha (/broadcasts) não está num status que permite a ação: editar ou excluir uma que já saiu, enviar uma cancelada, cancelar um rascunho.Confira o status da campanha.
422validation_errorAlgum campo é inválido. A mensagem diz qual.Corrija o corpo; não repita igual.
422ai_refusedA IA recusou o pedido.Reescreva o pedido.
429rate_limit_exceededPassou do limite de requisições por segundo do plano.Espere Retry-After segundos.
429daily_quota_exceededA cota diária de envios acabou (volta às 00:00 UTC).Espere ou mude de plano.
429monthly_quota_exceededA cota mensal de envios acabou.Mude de plano ou ative o envio além da cota.
429ai_credits_exhaustedOs créditos de IA do mês acabaram.Espere o dia 1º ou mude de plano.
500internal_server_errorErro inesperado na Postal.Tente de novo com espera crescente.
502ai_errorA IA não devolveu uma resposta válida.Tente de novo.
503ai_unavailableO serviço de IA está ocupado.Tente de novo em instantes.
503ai_not_configuredO assistente de IA está indisponível.Tente mais tarde.

#Quando tentar de novo

  • Tente de novo em 429 rate_limit_exceeded, 409 concurrent_idempotent_requests, 5xx e falhas de rede (timeout, conexão recusada). Espere um pouco mais a cada tentativa (1 s, 2 s, 4 s…) e respeite o Retry-After quando vier.
  • Não repita igual em 400, 401, 403, 404 e 422: a resposta vai ser a mesma até você corrigir a requisição ou a configuração.
  • Em envios, mande sempre uma Idempotency-Key: se a primeira tentativa chegou a dar certo, a repetição devolve a mesma resposta sem enviar de novo.