Quickstart
A integração máquina a máquina usa o header X-API-Key na superfície /vasp. A chave identifica o tenant e carrega os escopos: nenhum header de tenant é necessário.
Existem dois ambientes, cada um com a sua base e o seu tipo de chave. Todos os caminhos do contrato são relativos à base, e o prefixo /v1 sozinho responde 404.
| Ambiente | Base | Chave |
|---|---|---|
| Sandbox | https://sandbox.api.crypto.sentinexrisk.com/api/v1 |
snxc_sand_... |
| Produção | https://crypto-api.sentinexrisk.com/api/v1 |
snxc_live_... |
-
Conta liberada para a API
A chave só é aceita quando a conta do tenant está em estado operacional e com o acesso por API liberado pela Sentinex Risk. Quando não está, qualquer chamada responde
402ou403com o motivo no campocode(TRIAL_EXPIRED,TENANT_NOT_OPERATIONAL,API_ACCESS_DISABLEDe outros), antes de chegar à operação. -
Gerar a chave de sandbox
- No painel, entre com a conta de teste, abra Desenvolvedores > Chaves e uso da API e clique em Nova API key
- Escolha os escopos mínimos. Para os passos abaixo:
vasp:readevasp:transactions:screen - A chave de sandbox é emitida na hora e vale até 30 dias
- Copie a chave na hora: o servidor guarda só o resumo dela e não a mostra de novo (formato
snxc_sand_<identificador>_<segredo>)
O passo a passo com as telas está no Guia de chaves de API.
-
Primeira chamada autenticada
Esta leitura confere a chave, o ambiente e o acesso da conta sem gravar nada. Escopo:
vasp:read.Janela do terminal export SENTINEX_API_KEY='snxc_sand_<sua_chave>'export SENTINEX_BASE_URL='https://sandbox.api.crypto.sentinexrisk.com/api/v1'curl "$SENTINEX_BASE_URL/vasp/alerts?limit=1" \-H "X-API-Key: $SENTINEX_API_KEY"Resposta em um tenant sem alertas:
{"success": true,"data": [],"pagination": { "total": 0, "limit": 1, "offset": 0 }}Chave ausente ou inválida responde
401comerror.codeigual amissing_api_keyouinvalid_api_key. Uma chave de outro ambiente não autentica: a resposta é401cominvalid_api_key, ou403comapi_key_environment_not_allowedquando o prefixo já indica outro ambiente, antes da autenticação, ou o ambiente registrado é recusado. Confira se o prefixo da chave e a base são do mesmo ambiente. -
Analisar uma transação
POST /vasp/screeningsdevolve, na mesma resposta, a recomendação da Sentinex Risk:ALLOW,REVIEW,HOLDouDENY, com score, sanções e regras acionadas. A recomendação é análise auxiliar; a decisão operacional é sua. Escopo:vasp:transactions:screen.No sandbox, a contraparte precisa ser uma das fixtures de Homologação e testes. O endereço abaixo é a fixture de baixo risco.
Janela do terminal CHAVE="$(uuidgen)" # uma por operação; numa repetição, reenvie a mesmacurl -X POST "$SENTINEX_BASE_URL/vasp/screenings" \-H "X-API-Key: $SENTINEX_API_KEY" \-H "Content-Type: application/json" \-H "Idempotency-Key: $CHAVE" \-d '{"client_transaction_id": "pedido-0001","customer_ref": "cliente-42","direction": "WITHDRAWAL","asset": "ETH","chain": "ethereum","counterparty_address": "0x7eae68ba864d7e60463ca6842c53f1b20ecfb1a2","amount": 1.5,"fiat_value_brl": 7500.5}'Só
asseté obrigatório. Enviechainsempre que enviarcounterparty_address: sem a rede, a contraparte não é consultada e a análise volta comoHOLDcomfail_closed: true. No sandbox, um endereço que não seja fixture responde422comSANDBOX_FIXTURE_NOT_SUPPORTED.Recorte dos campos principais da resposta (o schema completo está em
POST /vasp/screenings). O endereço acima é a fixturefx-kyt-low-v1. A resposta atual também traznot_covered,capabilities,direct_exposure,indirect_exposure,score_ledger,shadow_observations,operation_at,operation_time_sourceedeclared_fiat_value_brl(este último ecoa ofiat_value_brlenviado).{"success": true,"data": {"screening_id": "0b8f3c2e-5a7d-4e61-9f2b-1c3d4e5f6a7b","client_transaction_id": "pedido-0001","screen_status": "completed","recommendation": "ALLOW","client_decision": { "status": "PENDING_CLIENT_DECISION" },"risk_score": 5,"risk_level": "LOW","fail_closed": false,"api_version": "v1","operation_at": "2026-10-01T12:00:00Z","operation_time_source": "RECEIVED_AT","declared_fiat_value_brl": 7500.5,"capabilities": {"sanctions": "MEASURED","labels": "NOT_MEASURED","exposures": "NOT_MEASURED","graph": "NOT_MEASURED","typologies": "NOT_MEASURED"},"direct_exposure": null,"indirect_exposure": null,"shadow_observations": []}}Consulte Como as regras decidem antes de automatizar a liberação. HTTP 200 com
fail_closed: truee HOLD é uma análise registrada que exige retenção e reprocessamento; uma base de DENY continua prevalecendo.Repetir a chamada com a mesma
Idempotency-Keye os mesmos bytes devolve a mesma análise comidempotent_replay: true, sem registrar uso de novo. Para verREVIEW,DENYeHOLD, troque o endereço pelo das outras fixtures. -
Registrar a sua decisão
A decisão operacional e o desfecho de suspeição são seus e são registrados uma única vez. Escopo:
vasp:transactions:screen.Janela do terminal curl -X PATCH "$SENTINEX_BASE_URL/vasp/screenings/0b8f3c2e-5a7d-4e61-9f2b-1c3d4e5f6a7b/client-decision" \-H "X-API-Key: $SENTINEX_API_KEY" \-H "Content-Type: application/json" \-d '{"client_decision": {"operational_action": "ALLOW","suspicion_outcome": "NOT_SUSPICIOUS","rationale": "Teste de integração no sandbox."}}'A segunda chamada para a mesma análise responde
409comKYT_CLIENT_DECISION_ALREADY_RECORDED. O caminho antigoPATCH /vasp/screenings/{id}/decisionestá obsoleto. -
Levar a integração para a produção
- Em produção, a chave não nasce na hora. Na conta real, Desenvolvedores > Chaves e uso da API > Nova API key registra um pedido; outro Tenant Admin do mesmo tenant aprova, e quem pediu emite a chave, que aparece uma única vez. Telas e detalhes no Guia de chaves de API
- Troque a chave por uma
snxc_live_...e a base porhttps://crypto-api.sentinexrisk.com/api/v1. O restante da chamada não muda - Na produção não há simulador: a contraparte é consultada de verdade, e a análise é real, gravada e auditada. Comece pela leitura do passo 3 e siga o roteiro de Homologação e testes
-
Próximos passos
- Resolver dúvidas operacionais: Dúvidas frequentes
- Receber eventos em vez de consultar: Webhooks
- Cadastrar clientes e carteiras:
POST /vasp/customersePOST /vasp/wallets, no Guia de integração - Todas as operações do contrato: referência da API
- Contrato em arquivo: openapi.yaml e openapi.json