Skip to main content
A API Simplo retorna erros no padrão RFC 7807 (Problem Details for HTTP APIs) com Content-Type: application/problem+json.

Códigos de status

Corpo não reconhecido (400)

Se o corpo não traz nenhum campo que o endpoint aceita, a resposta nomeia o parâmetro rejeitado e lista os campos esperados — você não precisa descobrir o formato por tentativa e erro:
A causa mais comum é o nome errado de um campo — por exemplo, enviar customer onde o endpoint espera customer_id. Compare detail com o corpo que você enviou. Quando o corpo nem sequer é JSON válido, o code é MALFORMED_JSON:

Validação (422)

Quando você envia dados inválidos, a resposta detalha cada campo problemático em errors[]:
Use pointer (JSON Pointer) para mostrar a mensagem ao lado do campo correto no seu formulário.

Regra de negócio (422)

Nem todo 422 é validação de campo. Algumas regras são de negócio — nesse caso, code identifica a regra e detail traz a explicação:

Autenticação (401)

Causas comuns:
  • Header faltando o prefixo ApiKey (com espaço).
  • Chave revogada no painel.
  • Usando chave de sandbox em produção (ou vice-versa).

Rate limit (429)

A resposta inclui o header Retry-After em segundos. Implemente backoff exponencial:
Não faça retry imediato em loop apertado. Isso piora o problema e pode estender o bloqueio.

Erros do servidor (5xx)

500 e 503 são raros, mas acontecem. Trate-os como transitórios:
  1. Espere alguns segundos.
  2. Tente de novo com backoff exponencial.
  3. Se persistir por mais de 5 minutos, verifique status.besimplo.com.
Como a API ainda não suporta Idempotency-Key em requisições, retries em operações financeiras (POST /checkout/sessions, POST /invoices/:id/checkout, etc.) podem gerar duplicidade. Em caso de timeout numa operação que mexe em dinheiro, consulte o recurso antes de retentar para confirmar se ele já foi criado.