Tratamento de Erros
Este guia explica como a Wapizap API reporta erros e como tratá-los corretamente em sua aplicação.Formato de Resposta de Erro
Todas as respostas de erro seguem este formato:| Campo | Tipo | Descrição |
|---|---|---|
success | boolean | Sempre false para erros |
error.code | string | Código único do erro (use para lógica) |
error.message | string | Mensagem legível (use para logs/debug) |
error.details | object | Informações adicionais (opcional) |
Códigos HTTP
| Código | Significado | Quando Ocorre |
|---|---|---|
400 | Bad Request | Dados inválidos ou faltando |
401 | Unauthorized | Token ausente ou inválido |
403 | Forbidden | Sem permissão para a ação |
404 | Not Found | Recurso não existe |
409 | Conflict | Conflito (ex: nome duplicado) |
422 | Unprocessable | Dados válidos mas não processáveis |
429 | Too Many Requests | Rate limit excedido |
500 | Internal Error | Erro interno do servidor |
503 | Service Unavailable | Serviço temporariamente indisponível |
Erros Comuns
Autenticação (401)
Authorization: Bearer SEU_TOKEN está correto.
Instância Não Encontrada (404)
instanceId está correto e se a instância existe.
Instância Desconectada (422)
Número Inválido (400)
/contacts/check para validar números antes de enviar.
Rate Limit (429)
retryAfter e implemente exponential backoff.
Mídia Muito Grande (400)
Tratamento em Código
JavaScript/TypeScript
Python
Exponential Backoff
Para erros temporários (429, 500, 503), implemente exponential backoff:Códigos de Erro por Categoria
Autenticação
| Código | Descrição |
|---|---|
UNAUTHORIZED | Token inválido ou ausente |
TOKEN_EXPIRED | Token expirado |
INSUFFICIENT_PERMISSIONS | Sem permissão para a ação |
Instâncias
| Código | Descrição |
|---|---|
INSTANCE_NOT_FOUND | Instância não existe |
INSTANCE_NOT_CONNECTED | Instância desconectada |
INSTANCE_ALREADY_EXISTS | Nome já em uso |
INSTANCE_LIMIT_EXCEEDED | Limite do plano atingido |
QR_CODE_EXPIRED | QR code expirou |
Mensagens
| Código | Descrição |
|---|---|
INVALID_NUMBER | Número não está no WhatsApp |
MESSAGE_NOT_FOUND | Mensagem não encontrada |
MEDIA_TOO_LARGE | Arquivo excede limite |
INVALID_MEDIA_TYPE | Tipo de mídia não suportado |
MESSAGE_FAILED | Falha ao enviar mensagem |
Grupos
| Código | Descrição |
|---|---|
GROUP_NOT_FOUND | Grupo não encontrado |
NOT_GROUP_ADMIN | Ação requer ser admin |
PARTICIPANT_NOT_FOUND | Participante não está no grupo |
ALREADY_GROUP_MEMBER | Já é membro do grupo |
Rate Limiting
| Código | Descrição |
|---|---|
RATE_LIMIT_EXCEEDED | Muitas requisições |
DAILY_LIMIT_EXCEEDED | Limite diário atingido |
Logs e Monitoramento
Estrutura de Log Recomendada
Alertas Recomendados
Configure alertas para:- Taxa de erros > 5% em 5 minutos
- Erros
INSTANCE_NOT_CONNECTED(reconectar automaticamente) - Rate limits frequentes (ajustar throttling)
- Erros 500 (problema no servidor)
Melhores Práticas
Use Códigos de Erro
Base sua lógica no
error.code, não na mensagem (que pode mudar).Implemente Retry
Use exponential backoff para erros temporários (429, 500, 503).
Valide Antes
Valide números com
/contacts/check antes de enviar mensagens.Monitore Erros
Registre e monitore erros para identificar padrões.