Une clé, un appel, un objet : score, bande, décision, recommandation, confiance, exposition. Un filtrage rapide pour l'instant où un transfert arrive, le filtrage complet quand vous avez besoin des raisons, le mode en lot pour une liste, des webhooks signés. Ci-dessous : un appel réel sur une organisation réelle, le journal et une livraison, tels que le produit les affiche.
$ curl -X POST https://api.sanctuary.cv/api/v1/wallets/check \ -H "Authorization: Bearer sk_live_••••••••••••••••" \ -H "Content-Type: application/json" \ -d '{"address":"TBbkhZXuz8NBMf4djthALQ5nKeL7pZ4i11","chain":"tron"}'
{ "address": "TBbkhZ…4i11", "chain": "tron", "score": 55, "riskLevel": "medium", "verdict": "MEDIUM RISK", "decision": "REVIEW", "recommendation": "Be careful, keep an eye on it", "isSanctioned": false, "confidence": 33, "confidenceBand": "possible", "exposure": { "riskPct": 5, "cleanPct": 33 }, "sourcesCount": 10, "checkedAt": "2026-08-22T13:10:41Z"}
Le filtrage rapide s'intègre au parcours de dépôt ; tout ce qu'il ne peut pas valider passe à l'appel complet. Un seul champ de décision sur lequel votre code peut se brancher.
Clé Bearer, JSON en entrée, JSON en sortie. La même bande et la même recommandation que celles vues par le desk conformité dans l'espace de travail, pour que les deux ne divergent jamais.
Identifiants de requête dans les en-têtes, un journal par organisation, signatures HMAC sur les livraisons, rejeu depuis le journal. La piste d'audit est écrite par l'intégration elle-même.
L'API retourne ce que montre l'espace de travail : score, bande, décision, recommandation, confiance et exposition, dans un seul objet JSON, avec l'identifiant de requête dans les en-têtes. Un oui/non rapide pour l'instant où un dépôt arrive, le filtrage complet quand vous avez besoin des raisons, un lot quand vous avez une liste.
Le filtrage rapide répond à partir du renseignement déjà détenu, en moins de 100 ms avec un P95 de 22 ms, pour le parcours de dépôt où un filtrage complet serait trop lent. Tout ce qu'il ne peut pas valider passe à l'appel complet.
{ "address": "0x…", "chain": "ethereum" }
→ 200 · 21 ms
{ "score": 0, "verdict": "CLEAN", "isSanctioned": false, "mode": "fast_screen" }Le même résultat que celui affiché dans l'espace de travail : score, bande, décision, recommandation, confiance, exposition et le nombre de familles de sources consultées. Le PDF signé du même contrôle n'est qu'à un appel de plus.
{ "score": 55, "riskLevel": "medium", "decision": "REVIEW",
"confidence": 33, "exposure": { "riskPct": 5, "cleanPct": 33 },
"sourcesCount": 10, "checkedAt": "2026-08-22T13:10:41Z" }Le mode en lot prend le fichier et retourne une ligne par adresse avec les mêmes champs. Les webhooks livrent les alertes avec une signature HMAC dans les en-têtes, un identifiant par livraison, et un bouton de rejeu dans le journal si votre endpoint était hors service.
X-Sanctuary-Signature: sha256=… X-Sanctuary-Event: alert.created X-Sanctuary-Delivery: un identifiant par livraison · 204 · 9 ms · rejeu
Professional : 1,000 contrôles par mois, clés API, $0.20 par contrôle ensuite. Business : 5,000 par mois, l'endpoint en lot, des webhooks pour les alertes et le filtrage pré-transaction, SLA. Enterprise : contrats de volume, support dédié.