Pular para o conteúdo

Quickstart

A integração máquina-a-máquina usa o header X-API-Key na superfície /api/v1/vasp/*. A chave já identifica seu tenant e seus escopos: nenhum header de tenant é necessário.

Base de produção: https://api.crypto.sentinexrisk.com/api/v1 (atenção: a base é /api/v1; o prefixo /v1 sozinho retorna 404).

  1. Criar conta + tenant

  2. Gerar API key

    • Console, seção Desenvolvedores, API Keys
    • Clique em Gerar nova key
    • Defina escopos (para começar: vasp:transactions:screen, vasp:read)
    • Copie a key imediatamente: só será exibida uma vez (formato snxc_<env>_...)
  3. Primeira chamada: health check (sem auth)

    Terminal window
    curl https://api.crypto.sentinexrisk.com/api/v1/health

    Resposta real:

    {
    "postgres": "ok",
    "redis": "ok",
    "service": "crypto-sentinexrisk",
    "status": "ok",
    "version": "1.0.0"
    }
  4. Decisão KYT em tempo real (o endpoint principal)

    POST /vasp/screenings retorna decisão síncrona APPROVE / MONITOR / REVIEW / BLOCK / CRITICAL com score, sanções, regras disparadas e obrigações regulatórias brasileiras (Travel Rule, COAF, DeCripto) inline. Escopo: vasp:transactions:screen.

    Terminal window
    curl -X POST https://api.crypto.sentinexrisk.com/api/v1/vasp/screenings \
    -H "X-API-Key: <sua-api-key>" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: minha-txn-0001" \
    -d '{
    "client_transaction_id": "minha-txn-0001",
    "customer_ref": "cliente-42",
    "direction": "WITHDRAWAL",
    "asset": "USDT",
    "chain": "tron",
    "counterparty_address": "TC4VsFHJdZ66BdwobZxkudVZBVmQZgCP65",
    "amount": 1500.0
    }'

    Estrutura da resposta (campos principais):

    {
    "success": true,
    "data": {
    "screening_id": "uuid",
    "screen_status": "completed",
    "decision": "REVIEW",
    "risk_score": 62.5,
    "risk_level": "HIGH",
    "sanctions": { "hit": false },
    "rule_hits": [
    { "rule_id": "R-KYT-04", "name": "Exposição a mixer", "severity": "HIGH", "weight": 25 }
    ],
    "obligations": {
    "travel_rule": "NOT_REQUIRED",
    "coaf_sar": "MONITOR",
    "decripto": "REPORTABLE"
    },
    "amount_brl": 7733.1,
    "fail_closed": false,
    "latency_ms": 41,
    "api_version": "2026-06-01"
    }
    }

    Repetir a chamada com a mesma Idempotency-Key e o mesmo corpo devolve a mesma decisão com idempotent_replay: true.

  5. Próximos passos

    • Poll de alertas: GET /vasp/alerts (escopo vasp:read)
    • Webhook outbound: POST /vasp/webhooks (escopo vasp:webhooks:manage)
    • Feedback de decisão: PATCH /vasp/screenings/:id/decision
    • Enrollment de clientes e carteiras: POST /vasp/customers, POST /vasp/wallets
    • Contrato completo: referência OpenAPI