Skip to main content
Rotas sob /v1/* retornam erros em JSON padronizado. Rotas de dashboard e autenticação podem usar formato NestJS clássico (statusCode, message).

Envelope de erro (API pública)

{
  "success": false,
  "message": "Mensagem legível para integração",
  "error": {
    "code": "Bad Request",
    "statusCode": 400
  },
  "requestId": "req_7f3a2b1c"
}
CampoDescrição
messageTexto principal (pode repetir detalhe de validação)
error.codeNome da exceção HTTP (ex.: Bad Request, Unauthorized, Forbidden, Not Found, Conflict)
error.statusCodeCódigo HTTP numérico
requestIdIdentificador para suporte
Não existe enum fixa BAD_REQUEST no campo code. Use error.statusCode e message na lógica do integrador.

Status HTTP frequentes

StatusSituação típica
400Body inválido, regra de negócio (saldo, trilho, limites)
401Chave ausente, revogada ou inválida
403Chave sem permissão na rota; trilho indisponível; conta suspensa
404Recurso não encontrado ou de outra conta
409Conflito de unicidade (ex.: externalReference duplicado)
429Rate limit excedido
500Erro interno (retente com backoff; abra ticket com requestId)

Códigos de domínio (trilho)

Respostas 403 ou 409 podem incluir mensagens relacionadas a:
Código lógicoSignificado
RAIL_UNAVAILABLETrilho não habilitado na conta
RAIL_ACCESS_REVOKEDAcesso ao trilho revogado
RAIL_OPERATION_NOT_ALLOWEDOperação não permitida neste trilho
RAIL_REQUIREDOperação exige trilho específico

Validação de body

Campos inválidos retornam 400 com mensagem agregada. Exemplos:
  • amount abaixo do mínimo da operação
  • description com menos de 3 caracteres
  • splitUser sem splitTax (ou vice-versa)
  • pixKey ausente quando não há pixCopyPaste

Prisma e conflitos

Violação de unicidade no banco (P2002) mapeia para 409 Conflict.

Rate limiting

429 com corpo simplificado. Veja Rate limiting.

Boas práticas

Registre sempre requestId nos logs do seu servidor ao tratar erros 5xx.
Não interprete mensagens em português como API estável: prefira statusCode e campos estruturados em data nas respostas de sucesso.
Em webhooks inbound para seu servidor, valide assinatura antes de processar. Erros de parsing devem retornar 4xx apenas quando o payload for inválido; duplicatas devem retornar 200.