Pular para o conteúdo

Authentication

ModoHeaderUso
API keyX-API-Key: snxc_<env>_...Integração máquina-a-máquina na superfície /api/v1/vasp/*.
JWT RS256Authorization: Bearer <access_token>Console web, operações humanas com RBAC e MFA.

A API key identifica o tenant e carrega os escopos. Não existe header X-Tenant-ID: o backend nunca resolve tenant por header (anti-spoof); qualquer tutorial que peça esse header está desatualizado.

Terminal window
curl -X POST https://api.crypto.sentinexrisk.com/api/v1/vasp/screenings \
-H "X-API-Key: snxc_live_<sua_chave>" \
-H "Content-Type: application/json" \
-d '{ "direction": "DEPOSIT", "asset": "BTC", "chain": "btc", "amount": 0.5, "counterparty_address": "bc1q..." }'

O backend também aceita Authorization: Bearer snxc_... como fallback para a API key, mas X-API-Key é o modo canônico.

EscopoAbre
vasp:transactions:screenPOST /vasp/screenings, PATCH /vasp/screenings/:id/decision
vasp:readGETs da superfície: screenings, alerts, wallets, deposits, trades, withdrawals, balances
vasp:customers:read / vasp:customers:writeGET / POST /vasp/customers
vasp:wallets:writePOST /vasp/wallets
vasp:deposits:write / vasp:deposits:creditregistro / transições de depósitos
vasp:trades:write / vasp:trades:executecotação / execução e falha de trades
vasp:withdrawals:write / vasp:withdrawals:approvesolicitação / transições de saques
vasp:webhooks:managePOST / GET / DELETE /vasp/webhooks
vasp:compliance:readGET /vasp/sars, GET /vasp/decripto/*

Keys live e de teste/sandbox são isoladas: uma key de teste não acessa a superfície live e vice-versa. O ambiente faz parte do prefixo da key (snxc_live_..., snxc_test_...).

A superfície VASP aplica rate limit por key, por minuto. Os headers de resposta indicam o estado atual:

X-RateLimit-Limit: <limite da sua key>
X-RateLimit-Remaining: <restante na janela>

Quando excedido, retorno 429 com header Retry-After (em segundos) e o envelope de erro codificado:

{
"success": false,
"error": { "code": "api_key_rate_limit_exceeded", "message": "API key rate limit exceeded" }
}

O limite default da key é definido no provisionamento; consulte o suporte para o valor contratado do seu plano.

Pelo console (Desenvolvedores, API Keys) ou por API com JWT:

Terminal window
# rotacionar (a nova key é retornada UMA única vez)
curl -X POST https://api.crypto.sentinexrisk.com/api/v1/keys/<key_id>/rotate \
-H "Authorization: Bearer <jwt>"
# revogar
curl -X DELETE https://api.crypto.sentinexrisk.com/api/v1/keys/<key_id> \
-H "Authorization: Bearer <jwt>"

Mutações (POST/PUT/PATCH/DELETE) em rotas com sessão de browser (JWT + cookie) exigem header X-CSRF-Token. Para clientes server-to-server com API key, CSRF não se aplica.

O acesso ao console web (crypto.sentinexrisk.com) exige MFA TOTP. API keys não usam MFA: a autenticação é pela posse da chave, por isso guarde-a em um cofre de segredos e nunca a exponha em frontend ou repositório.