Códigos de Erro

Referência completa dos códigos HTTP e formato de resposta de erro.

Formato Padrão de Erro

Todas as respostas de erro seguem o formato ApiErrorResponse:

{ "status": 400, "error": "Bad Request", "message": "Telefone é obrigatório", "timestamp": "2024-04-11T10:30:00" }
CampoTipoDescrição
statusintegerCódigo HTTP da resposta
errorstringTipo do erro (derivado do status)
messagestringDescrição detalhada do erro
timestampstringData/hora do erro (ISO 8601)

Códigos HTTP

CódigoTipoDescriçãoExemplo
400Bad RequestDados inválidos ou ausentesCampo obrigatório não preenchido
401UnauthorizedCredenciais inválidasAPI Key incorreta ou JWT expirado
402Payment RequiredSaldo insuficienteAplicação sem créditos para envio
403ForbiddenAcesso negadoUsuário sem permissão para o recurso
404Not FoundRecurso não encontradoMensagem ou aplicação inexistente
500Internal Server ErrorErro interno do servidorFalha na comunicação com o provider WhatsApp

Erros de Validação (400)

Erros de validação de campos retornam a mensagem específica do campo inválido:

{ "status": 400, "error": "Bad Request", "message": "Telefone é obrigatório", "timestamp": "2024-04-11T10:30:00" }

Validações comuns:

Erro de Saldo Insuficiente (402)

Retornado ao tentar enviar mensagem sem saldo suficiente. Formato especial:

{ "error": "Saldo insuficiente", "message": "A aplicação não possui saldo suficiente para enviar mensagens.", "saldo": "0.00" }
Adicione créditos via painel administrativo antes de enviar mensagens.

Erros do provider WhatsApp

O envio de WhatsApp é agnóstico de provider: cada aplicação usa Twilio ou Meta Cloud API. Independentemente do provider, os erros são registrados nos mesmos campos errorCode e errorMessage da mensagem, capturados no callback de status (webhook).

Twilio

Códigos comuns retornados pela Twilio:

CódigoDescrição
21211Número de telefone inválido
21408Permissão negada para enviar ao número
21610Destinatário optou por não receber mensagens (opt-out)
63016Número não registrado no WhatsApp
63032Conta sandbox — destinatário precisa aceitar sandbox

Meta Cloud API

Quando a aplicação usa a Meta Cloud API (Graph API direta), os erros vêm no campo error.code da resposta de envio e em statuses[].errors[].code do webhook de status. Códigos reconhecidos pela plataforma:

CódigoDescrição
190Access Token inválido ou expirado — gere um token permanente de Usuário do Sistema e atualize as credenciais
200 / 10 / 299Permissão insuficiente sobre a WhatsApp Business Account (WABA)
100Parâmetro/identificador inválido — verifique o Phone Number ID e o WABA ID
131030Número do destinatário não está na lista de testes (app ainda não publicado)
131026Mensagem não entregue — destinatário pode não ter WhatsApp ou o número é inválido
131047Fora da janela de 24h — use um template (HSM) aprovado para reabrir a conversa
131056Limite de frequência para este par (remetente/destinatário) atingido
80007 / 4Limite de requisições (rate limit) da API atingido
133010Número não registrado na Cloud API — conclua o registro do número (PIN)
A Meta pode retornar códigos não listados aqui. Códigos não catalogados são propagados na forma (#código) mensagem conforme a Graph API. Referência completa: Meta WhatsApp Cloud API — Error Codes.

Bloqueio automático de número

Falhas repetidas com códigos sensíveis fazem a plataforma retirar o número do pool de envio (status BLOQUEADO_META), protegendo a reputação. A contagem é uma janela de 1h; ao atingir o limiar (padrão 10), o número é bloqueado e a reativação é manual. Códigos sensíveis padrão: 63018, 63021, 30007 (Twilio) e 131048, 131031, 368 (Meta) — configuráveis.

Importante: erros do provider não geram resposta de erro na API de envio. Eles são registrados de forma assíncrona quando o provider (Twilio ou Meta) envia o callback de status para o webhook. Erros de envio ainda não classificados são reenviados de forma conservadora (retry) antes de irem para a DLQ.

Próximos Passos