Documentação da API

Erros

Formato dos erros da API, códigos estáveis, status HTTP e como tratar cada um.

Erros usam o mesmo envelope, com o código HTTP correspondente:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Dados inválidos",
    "requestId": "req_5f0c…",
    "details": { "in": "body", "issues": [{ "path": "cpf", "message": "CPF inválido" }] }
  }
}

O code é estável (use-o na lógica do seu código); a message pode mudar. Informe o requestId (também no cabeçalho X-Request-Id) ao falar com o suporte.

Autenticação e requisição

HTTP Código O que fazer
401 INVALID_CREDENTIALS revise a chave e os cabeçalhos (HMAC)
401 INVALID_SIGNATURE revise a string canônica, o corpo e o secret
401 TIMESTAMP_OUT_OF_RANGE sincronize o relógio (±5 min)
403 OPERATOR_SUSPENDED fale com a equipe
403 FORBIDDEN_IP o IP de saída não está na lista permitida
403 SANDBOX_ONLY rota exclusiva de sandbox chamada com chave de produção
400 IDEMPOTENCY_KEY_REQUIRED envie Idempotency-Key
409 IDEMPOTENCY_CONFLICT a chave já foi usada com outro pedido
409 IDEMPOTENCY_IN_PROGRESS aguarde e repita com a mesma chave
422 VALIDATION_ERROR corrija os campos apontados em details.issues
413 PAYLOAD_TOO_LARGE o corpo excede 256 KB
404 NOT_FOUND rota ou recurso inexistente
405 METHOD_NOT_ALLOWED método incorreto (veja o cabeçalho Allow)
429 RATE_LIMITED aguarde Retry-After segundos e use backoff
500 INTERNAL_ERROR repita com a mesma Idempotency-Key; persistindo, informe o requestId

Domínio

HTTP Código Significado
404 PLAYER_NOT_FOUND jogador inexistente ou de outra marca
409 PLAYER_ALREADY_EXISTS externalId, e-mail ou CPF já cadastrado (details.field)
409 PLAYER_NOT_ACTIVE conta suspensa, bloqueada, restrita ou encerrada
403 KYC_REQUIRED a operação exige KYC aprovado
409 KYC_ALREADY_APPROVED o KYC já foi aprovado
409 RG_BLOCKED bloqueio de jogo responsável (autoexclusão ou limite diário)
422 CURRENCY_MISMATCH a moeda difere da moeda do jogador
402 INSUFFICIENT_BALANCE saldo disponível para saque insuficiente (details.withdrawable)
409 BONUS_ROLLOVER_PENDING há bônus com rollover pendente
404 / 409 DEPOSIT_NOT_FOUND / DEPOSIT_NOT_PENDING / DEPOSIT_ALREADY_EXISTS depósito inexistente, já processado ou externalReference repetida
404 / 409 WITHDRAWAL_NOT_FOUND / WITHDRAWAL_NOT_CANCELLABLE saque inexistente ou já aprovado
409 INVALID_WITHDRAWAL_STATE (sandbox) a decisão não vale para o estado atual do saque
404 GAME_NOT_FOUND jogo inexistente ou desativado
502 PROVIDER_UNAVAILABLE o Game Provider não respondeu; tente novamente

Como tratar

  • 4xx: o pedido está incorreto ou viola uma regra; não repita igual.
  • 5xx e timeouts: repita com a mesma Idempotency-Key, com backoff exponencial.
  • 429: respeite o Retry-After.