Erros

Todos os erros seguem o mesmo formato JSON. O campo code é estável e pode ser tratado programaticamente; message é legível por humanos (PT-BR).

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_API_CREDENTIALS",
    "message": "Credenciais de API inválidas.",
    "details": null
  }
}

Códigos HTTP e de negócio

HTTPcodeDescrição
400MISSING_API_KEYHeader X-Api-Key ausente
400MISSING_API_SECRETHeader X-Api-Secret ausente
400MISSING_COMPANY_IDcompanyId ausente no path
400INVALID_COMPANY_IDcompanyId do path não é UUID válido
401INVALID_API_CREDENTIALSChave ou secret inválidos
402SUBSCRIPTION_REQUIREDAssinatura em atraso ou suspensa
402ACCOUNT_SUBSCRIPTION_REQUIREDAssinatura da conta não encontrada
403COMPANY_ACCESS_DENIEDUsuário sem acesso à empresa do path
404COMPANY_NOT_FOUNDEmpresa não encontrada
404INVOICE_NOT_FOUNDNota fiscal não encontrada
409COMPANY_ALREADY_EXISTSCNPJ já cadastrado nesta conta
422VALIDATION_ERRORCorpo da requisição inválido (Zod)
422INVALID_INVOICE_STATUSOperação não permitida para este status
429RATE_LIMIT_EXCEEDEDLimite de requisições excedido (conforme o plano)

Erros de validação

Erros de validação do corpo da requisição (Zod) retornam 422 com code: VALIDATION_ERROR. Os campos inválidos ficam em error.details.fields.

JSON
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Um ou mais campos contém erros de validação. Por favor, revise os dados informados.",
    "details": {
      "fields": [
        {
          "field": "borrower.name",
          "error": "String must contain at least 1 character(s)"
        }
      ]
    }
  }
}