Skip to content

Status da API

A API do MeChat usa HTTP status codes e um envelope JSON consistente para indicar sucesso e erro.

Envelope de Sucesso

Quando a requisição é processada com sucesso, o retorno tem success: true e data.

json
{
  "success": true,
  "data": {}
}

Quando existe uma mensagem útil (por exemplo, criação, atualização, envio), ela vem em message.

json
{
  "success": true,
  "message": "Operação realizada com sucesso.",
  "data": {}
}

Envelope de Erro

Quando a requisição falha, o retorno tem success: false e um message legível. O array errors é opcional e aparece quando existe detalhe estruturado.

json
{
  "success": false,
  "message": "Descrição clara do erro"
}

Erros Estruturados

O array errors é usado quando há múltiplos problemas ou quando o erro precisa ser tratado por código.

Erros de validação incluem field para indicar o campo inválido:

json
{
  "success": false,
  "message": "Erro de validação",
  "errors": [
    {
      "code": "FIELD_REQUIRED",
      "field": "email",
      "message": "O campo email é obrigatório"
    }
  ]
}

Erros que não pertencem a um campo específico não incluem field:

json
{
  "success": false,
  "message": "Operação não permitida",
  "errors": [
    {
      "code": "CHAT_ALREADY_FINALIZED",
      "message": "Não é possível enviar mensagens em um chat finalizado."
    }
  ]
}

Resultado de Negócio

Quando a requisição é processada corretamente, mas o resultado do negócio é negativo (por exemplo, um número não existe no WhatsApp), a resposta é sucesso com data descrevendo o resultado.

json
{
  "success": true,
  "data": {
    "valid": false,
    "reason": "NUMBER_NOT_ON_WHATSAPP"
  }
}

Isso mantém a API previsível e evita que o cliente trate fluxo esperado como exceção.

Status Codes

StatusDescriçãoExemplo
200SucessoListagem, atualização, envio de mensagem
201Recurso criadoCriação de contato, usuário, tag
400Requisição inválidaJSON malformado, parâmetro inválido
401Não autenticadoToken ausente ou inválido
403Sem permissãoAcesso negado ao recurso
404Não encontradoContato, chat ou usuário não existe
409ConflitoCanal desconectado, recurso em uso
422Validação falhouCampo obrigatório ausente, formato inválido
429Rate limit excedidoMuitas requisições no período
500Erro internoFalha inesperada no servidor

Exemplos por Status Code

400 - Requisição Inválida

json
{
  "success": false,
  "message": "JSON inválido na requisição."
}

401 - Não Autenticado

json
{
  "success": false,
  "message": "Token de autenticação não fornecido."
}

403 - Sem Permissão

json
{
  "success": false,
  "message": "Você não tem permissão para acessar este recurso."
}

404 - Não Encontrado

json
{
  "success": false,
  "message": "Contato não encontrado."
}

409 - Conflito

json
{
  "success": false,
  "message": "Canal WhatsApp desconectado.",
  "errors": [
    {
      "code": "CHANNEL_DISCONNECTED",
      "message": "O canal está desconectado. Reconecte o canal para continuar."
    }
  ]
}

422 - Validação Falhou

json
{
  "success": false,
  "message": "Erro de validação",
  "errors": [
    {
      "code": "FIELD_REQUIRED",
      "field": "phone",
      "message": "O campo phone é obrigatório."
    }
  ]
}

429 - Rate Limit Excedido

json
{
  "success": false,
  "message": "Muitas requisições. Tente novamente em alguns segundos.",
  "retry_after": 45
}

Para detalhes de limites, veja: Limites de Requisições

500 - Erro Interno

json
{
  "success": false,
  "message": "Erro interno do servidor. Tente novamente mais tarde."
}