Pular para o conteúdo principal

Codigos de Erro

Conceituacao

A Ogmma API utiliza codigos de erro padronizados para indicar o tipo de problema ocorrido em uma requisicao. Cada erro retorna um codigo unico, um status HTTP correspondente e uma mensagem descritiva que facilita a identificacao e tratamento do problema.

Formato padrao de erro

Erros de aplicacao (AppError)

A maioria dos erros retorna o seguinte formato:

{
"message": "Canal nao encontrado",
"code": "CHANNEL_NOT_FOUND",
"details": {
"channelId": "abc123"
}
}
CampoTipoDescricao
messagestringMensagem descritiva em portugues (pode variar, nao use para tratamento programatico)
codestringCodigo unico do erro (constante, use para tratamento programatico)
detailsobjectInformacoes adicionais sobre o erro (opcional, varia por tipo de erro)

Erros de validacao (ZodError)

Quando os dados de entrada sao invalidos, o formato inclui um array de erros detalhados:

{
"message": "O numero do destinatario e obrigatorio",
"code": "VALIDATION_ERROR",
"errors": [
{
"path": "to",
"message": "Required",
"validation": "invalid_type"
}
]
}
CampoTipoDescricao
messagestringMensagem do primeiro erro de validacao
codestringSempre VALIDATION_ERROR
errorsarrayLista detalhada de todos os erros de validacao
errors[].pathstringCaminho do campo com erro (ex: to, content.text)
errors[].messagestringMensagem descritiva do erro
errors[].validationstringTipo de validacao que falhou

Erros internos (500)

Erros inesperados retornam formato aninhado:

{
"error": {
"message": "Erro interno do servidor",
"code": "INTERNAL_SERVER_ERROR"
}
}

Tabela de codigos

Autenticacao e Autorizacao

CodigoHTTP StatusDescricaoExemplo
AUTHENTICATION_REQUIRED401Requisicao sem token de autenticacao ou com token ausenteHeader Authorization nao enviado
UNAUTHORIZED401Token ou API Key invalidoCredenciais incorretas ou expiradas
INVALID_API_KEY401API key invalida, expirada ou revogadaChave oapi_sk_live_... nao reconhecida
INVALID_TOKEN401Token JWT invalido, expirado ou malformadoToken JWT com assinatura invalida
FORBIDDEN_PERMISSION403O usuario ou API key nao possui permissao para a operacaoChave sem permissao messages.send tentando enviar mensagem

Rate Limiting

CodigoHTTP StatusDescricaoExemplo
RATE_LIMIT_EXCEEDED429Limite de requisicoes por minuto excedidoMais de 60 requisicoes/min com limite de 60

Canais

CodigoHTTP StatusDescricaoExemplo
CHANNEL_NOT_FOUND404Canal nao encontrado na instituicaochannelId inexistente ou de outra instituicao
CHANNEL_NOT_CONNECTED400Canal existe mas nao esta conectadoTentativa de enviar mensagem por canal DISCONNECTED
CHANNEL_NOT_WABA400Canal nao e do tipo WABATentativa de enviar template por canal Baileys

Conversas

CodigoHTTP StatusDescricaoExemplo
CONVERSATION_NOT_FOUND404Conversa nao encontradaconversationId inexistente ou de outra instituicao

Contatos

CodigoHTTP StatusDescricaoExemplo
CONTACT_NOT_FOUND404Contato nao encontradocontactId inexistente ou de outra instituicao

Mensagens

CodigoHTTP StatusDescricaoExemplo
MESSAGE_NOT_FOUND404Mensagem nao encontradamessageId inexistente ou de outra instituicao
INVALID_PHONE_NUMBER400Numero de telefone em formato invalidoNumero sem codigo de pais ou com caracteres invalidos
NUMBER_NOT_ON_WHATSAPP400O numero informado nao possui conta WhatsAppNumero fixo ou celular sem WhatsApp

Midia

CodigoHTTP StatusDescricaoExemplo
MEDIA_TOO_LARGE400Arquivo de midia excede o tamanho maximo permitidoImagem acima de 16MB ou video acima de 64MB
PAYLOAD_TOO_LARGE413O conteudo enviado excede o limite maximoPayload acima de 50MB
UNSUPPORTED_MEDIA_TYPE415Tipo de midia nao suportadoArquivo .exe ou formato nao reconhecido

Envio em Massa

CodigoHTTP StatusDescricaoExemplo
BULK_BATCH_LIMIT_REACHED400Limite de batches ativos atingidoMais de 3 batches em execucao simultaneamente
BULK_BATCH_NOT_FOUND404Batch nao encontradobatchId inexistente ou de outra instituicao
BULK_BATCH_NOT_CANCELLABLE400Batch nao pode ser canceladoBatch ja concluido ou ja cancelado
BULK_CANCEL_FAILED400Falha ao cancelar o batchErro ao marcar batch como cancelado

Templates

CodigoHTTP StatusDescricaoExemplo
TEMPLATE_NOT_FOUND404Template nao encontradoNome do template inexistente na conta WABA
TEMPLATE_NOT_APPROVED400Template existe mas nao foi aprovado pelo MetaTemplate com status REJECTED ou PENDING

Webhooks

CodigoHTTP StatusDescricaoExemplo
WEBHOOK_URL_UNREACHABLE400URL do webhook nao pode ser alcancadaURL retorna timeout ou erro de conexao na validacao

Sandbox

CodigoHTTP StatusDescricaoExemplo
SANDBOX_ONLY400Endpoint disponivel apenas no ambiente sandboxChamar /sandbox/test com chave live
CHANNEL_DISCONNECTED400Canal desconectado (cenario simulado)Header X-Ogmma-Sandbox-Scenario: channel_disconnected
SEND_TIMEOUT408Timeout no envio da mensagem (cenario simulado)Header X-Ogmma-Sandbox-Scenario: timeout

Validacao e Erros Gerais

CodigoHTTP StatusDescricaoExemplo
VALIDATION_ERROR400Dados de entrada invalidosCampo obrigatorio ausente, tipo incorreto, valor fora do range
INTERNAL_SERVER_ERROR500Erro interno do servidorFalha inesperada no processamento da requisicao

Headers de Rate Limit

Todas as respostas da API incluem headers que informam o estado atual do seu limite de requisicoes:

HeaderDescricao
X-RateLimit-LimitNumero maximo de requisicoes permitidas por minuto
X-RateLimit-RemainingNumero de requisicoes restantes na janela atual
X-RateLimit-ResetTimestamp (Unix epoch em segundos) de quando a janela de rate limit sera reiniciada
Retry-AfterNumero de segundos para aguardar antes de fazer uma nova requisicao (presente apenas em respostas 429)

Exemplo de headers em uma resposta normal

HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1705312860

Exemplo de resposta com rate limit excedido

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1705312860
Retry-After: 45
{
"message": "Limite de requisicoes excedido. Tente novamente em 45 segundos.",
"code": "RATE_LIMIT_EXCEEDED"
}

Tratamento de erros recomendado

Erros retentaveis

Os seguintes erros podem ser resolvidos com uma nova tentativa apos um intervalo:

CodigoEstrategia
RATE_LIMIT_EXCEEDEDAguarde o tempo indicado no header Retry-After
INTERNAL_SERVER_ERRORTente novamente com backoff exponencial (1s, 2s, 4s, 8s)
CHANNEL_NOT_CONNECTEDVerifique o status do canal e tente novamente apos reconexao

Erros nao retentaveis

Os seguintes erros indicam problemas que precisam ser corrigidos antes de uma nova tentativa:

CodigoAcao necessaria
AUTHENTICATION_REQUIREDVerifique o header Authorization
INVALID_API_KEYUse uma chave valida ou crie uma nova
FORBIDDEN_PERMISSIONAtualize as permissoes da chave
VALIDATION_ERRORCorrija os dados de entrada conforme o campo errors
NUMBER_NOT_ON_WHATSAPPO destinatario nao possui WhatsApp
TEMPLATE_NOT_APPROVEDAguarde a aprovacao do template pelo Meta
Dica

Sempre trate os erros pelo campo code (ex: CHANNEL_NOT_FOUND) e nao pelo campo message, pois a mensagem pode variar entre versoes da API. O codigo e estavel e garantido pela API.