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:
- Espere alguns segundos.
- Tente de novo com backoff exponencial.
- 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.