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 Twilio

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 Twilio

Erros do Twilio são capturados nos callbacks de status e registrados nos campos errorCode e errorMessage da mensagem. Códigos comuns:

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
Importante: Erros do Twilio não geram resposta de erro na API de envio. Eles são registrados assincronamente quando o Twilio envia o callback de status para o endpoint de webhook.

Próximos Passos