Tratamento de erros
Todas as respostas de erro seguem o mesmo envelope, com um code estável que
você pode tratar programaticamente — mensagens podem mudar, códigos não.
{
"error": {
"code": "ERRO_VALIDACAO",
"message": "CPF inválido",
"details": {
"campo": "cpf",
"restricoes": { "matches": "cpf deve conter exatamente 11 dígitos." }
}
}
}O campo details é opcional e varia por tipo de erro (ex.: campos de validação,
ou dados do upstream com segredos já redigidos).
Catálogo de códigos
| HTTP | code | Quando acontece |
|---|---|---|
| 400 | ERRO_VALIDACAO | Payload inválido (campo faltando, formato errado) |
| 400 | IDEMPOTENCY_KEY_OBRIGATORIA | Faltou o header Idempotency-Key |
| 401 | CREDENCIAL_INVALIDA | Seu token está ausente, inválido ou expirado |
| 401 | AUTORIZACAO_PENDENTE | O trabalhador ainda não autorizou |
| 401 | AUTORIZACAO_EXPIRADA | A autorização do trabalhador venceu |
| 403 | ESCOPO_INSUFICIENTE | A credencial não tem o escopo necessário |
| 404 | EMPRESTIMO_NAO_ENCONTRADO | Empréstimo inexistente ou de outro parceiro |
| 404 | SEM_EMPREGADOR_AUTORIZADO | Nenhum vínculo autorizado para o CPF |
| 409 | CONFLITO_IDEMPOTENCIA | A mesma Idempotency-Key está em processamento (details.motivo: "em_processamento") ou a tentativa anterior falhou com 5xx e precisa de reconciliação (details.motivo: "tentativa_anterior_falhou"). Uma chave já concluída com sucesso não dá erro: devolve a resposta original (veja Idempotência) |
| 409 | CORPO_IDEMPOTENCIA_DIVERGENTE | A mesma Idempotency-Key foi reusada com um corpo diferente — gere uma chave nova |
| 422 | CONSULTA_MARGEM_NAO_ENCONTRADA | Falta uma consulta de margem válida |
| 422 | MARGEM_INSUFICIENTE | A parcela excede a margem disponível |
| 422 | ERRO_NEGOCIO | Regra de negócio impediu a operação |
| 429 | RATE_LIMIT_EXCEDIDO | Limite por credencial excedido (veja Retry-After) |
| 502 / 503 / 504 | DATAPREV_INDISPONIVEL | Uma integração externa (Dataprev, BaaS) está indisponível — tente de novo |
| 502 | PARCEIRO_NAO_HABILITADO | O parceiro não está habilitado na Socinal para esta operação. Não é transitório: repetir não resolve, contate o suporte |
| 502 | UPSTREAM_INALCANCAVEL | Não conseguimos alcançar o sistema de liquidação — a requisição não chegou a ser processada e nada foi aplicado. Repetir com a mesma Idempotency-Key é seguro |
| 503 | OPERACAO_NAO_PROVISIONADA | O parceiro está habilitado, mas falta um cadastro específico desta operação do lado da Socinal (ex.: conta corrente da linha de crédito no desembolso). Sua requisição está correta — acione o suporte e repita depois com a mesma Idempotency-Key (veja Desembolso) |
| 500 | ERRO_INTERNO | Erro interno (sem detalhes em produção) |
CREDENCIAL_INVALIDA é sempre sobre a credencial que você enviou. Quando a
falha de autenticação é nossa, com os sistemas internos da Socinal, o erro vem
como DATAPREV_INDISPONIVEL (transitório) ou PARCEIRO_NAO_HABILITADO
(habilitação) — nunca como CREDENCIAL_INVALIDA. Se você recebeu
CREDENCIAL_INVALIDA, o problema está no seu access_token.
Como tratar
- Trate pelo
code, não pelamessage. As mensagens são para humanos e podem mudar. 429e5xx(incl.DATAPREV_INDISPONIVEL) são transitórios: faça retry com backoff, respeitando oRetry-Afterquando presente.4xxde validação/negócio (ERRO_VALIDACAO,MARGEM_INSUFICIENTE…) não adianta repetir sem corrigir a entrada.PARCEIRO_NAO_HABILITADOeOPERACAO_NAO_PROVISIONADAsão as exceções entre os5xx: não são transitórios e não se resolvem corrigindo o payload — é configuração do nosso lado. A diferença: o primeiro é sobre o parceiro como um todo (abra um chamado); o segundo é sobre um cadastro específico desta operação, então depois da confirmação do suporte a mesma requisição funciona — repita com a mesmaIdempotency-Key, informando o número do empréstimo no chamado.UPSTREAM_INALCANCAVELé o oposto: a requisição não chegou ao destino, nada foi aplicado, e repetir com a mesmaIdempotency-Keyé seguro de imediato.
Em chamadas idempotentes, repetir após um 5xx ou timeout com a mesma
Idempotency-Key é sempre seguro — nunca duplica a operação. Você recebe a
resposta original (X-Idempotency-Replayed: true) se ela já tiver sido
processada, ou 409 CONFLITO_IDEMPOTENCIA — em voo (aguarde e repita) ou
tentativa anterior falhada, que exige reconciliação antes de reenviar. Veja
Idempotência.
403, 409 e 429 podem ocorrer em qualquer operação autenticada, mesmo
quando o exemplo do endpoint na referência não os ilustra. Um cliente robusto
trata os três.