Passer au contenu principal
POST
curl

Pourquoi il est sans état

Le filtrage des portefeuilles autonome n’écrit rien dans la table des transactions. Il n’existe donc aucun enregistrement stocké à partir duquel cet endpoint pourrait générer le rendu. Vous renvoyez à la place le JSON exact que POST /v3/wallet-screening/ vous a déjà retourné, et Didit génère le PDF à partir de ce payload sans appeler à nouveau un fournisseur.

Le champ report_signature

Chaque réponse de POST /v3/wallet-screening/ inclut désormais un champ report_signature : une signature opaque propre à votre application. Cet endpoint vérifie cette signature avant le rendu. Ainsi, un appelant ne peut pas modifier risk_score, severity, sanctions_hit ni aucun autre champ pour obtenir un PDF d’apparence légitime estampillé Didit, pour un résultat que Didit n’a jamais produit. Renvoyez toujours le corps de réponse complet sans modification, y compris report_signature. Changer l’ordre des clés est sans danger ; modifier une valeur signée ne l’est pas.

Facturation

Aucun appel à un fournisseur n’est effectué et rien n’est facturé : cette opération ne fait que générer à nouveau le rendu d’un résultat que vous avez déjà payé lors de l’appel à POST /v3/wallet-screening/.

Erreurs

Étapes suivantes

Filtrer un portefeuille

Lancez le filtrage des portefeuilles à la demande sous-jacent et récupérez le résultat JSON à renvoyer ici.

Filtrage des portefeuilles à la demande

Vue d’ensemble de l’endpoint de filtrage des portefeuilles autonome et de son modèle de résultat.

Autorisations

x-api-key
string
header
requis

La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.

Corps

application/json

L'objet JSON non modifié renvoyé par POST /v3/wallet-screening/, incluant report_signature.

Même format que la réponse POST /v3/wallet-screening/ — transmettez ce corps de réponse tel quel, y compris report_signature.

provider
string
requis

Fournisseur ayant effectué le filtrage (par ex. merklescience, crystal).

screening_type
enum<string>
requis

Toujours WALLET_SCREENING pour cet endpoint.

Options disponibles:
WALLET_SCREENING
risk_score
integer
requis

Score de risque normalisé de 0 à 100. Une valeur plus élevée indique une plus forte exposition à des entités à risque. Merkle Science note une adresse de 0 à 5, ce qui correspond à 0, 15, 35, 55, 75 ou 95.

severity
enum<string>
requis

Tranche de risque dérivée de risk_score : 0-9 UNKNOWN, 10-39 LOW, 40-69 MEDIUM, 70-89 HIGH, 90-100 CRITICAL. UNKNOWN est la tranche la plus basse, pas un état distinct d'absence de données : un risk_score de 0 (le cas courant d'une adresse propre) indique l'absence d'évaluation défavorable, tandis qu'un score non nul dans la plage 1-9 est un signal réel mais inférieur à LOW - lisez le risk_score, pas seulement la tranche. Ne traitez jamais UNKNOWN comme une évaluation confirmée de faible risque ou sans risque ; ne l'affichez pas comme une validation.

Options disponibles:
UNKNOWN,
LOW,
MEDIUM,
HIGH,
CRITICAL
status
enum<string>
requis

Statut du résultat du filtrage.

Options disponibles:
SCREENED,
PENDING,
ERROR
summary
string
requis

Résumé lisible par l'utilisateur du résultat de filtrage.

wallet_address
string
requis

L'adresse filtrée, renvoyée en écho.

blockchain
string
requis

La blockchain qui a été filtrée.

source_of_funds
object[]
requis

Provenance des fonds reçus par l'adresse, attribués par entité. Chaque entrée est une ventilation de l'exposition.

destination_of_funds
object[]
requis

Destination des fonds envoyés par l'adresse, attribués par entité. Même structure d'élément que source_of_funds avec exposure_direction = outgoing.

counterparty_connections
object[]
requis

Entités auxquelles le fournisseur attribue l'adresse filtrée. Pour Merkle Science, celles-ci proviennent des propres tags de propriétaire et d'utilisateur de l'adresse, la même entité peut donc apparaître deux fois, et elles ne comportent aucun flux de fonds : received_usd, sent_usd, received_hops et sent_hops sont null et percentage est 0. N'effectuez pas de routage sur risk_level ou is_direct ici : utilisez sanctions_hit, dominant_risk_category et risk_factors[].is_high_risk pour le verdict, et exposure_type dans source_of_funds/destination_of_funds pour le caractère direct.

sanctions_hit
boolean
requis

Vrai si l'adresse a une exposition directe ou indirecte à des sanctions.

dominant_risk_category
string | null
requis

Catégorie à haut risque ayant le poids le plus élevé, ou null si aucune n'est dominante (par exemple sanctioned, mixer, stolen_funds).

report_signature
string
requis

Signature HMAC-SHA256 opaque sur ce résultat exact, restreinte à votre application. Non significative en elle-même — republiez l'intégralité du corps de la réponse, sans modification et en incluant ce champ, vers POST /v3/wallet-screening/pdf/ pour en faire le rendu sous forme de PDF. L'endpoint PDF rejette la requête avec 400 si report_signature est manquant ou si un champ signé (par exemple risk_score, severity, sanctions_hit) a été modifié avant la republication.

transaction_hash
string | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

block_timestamp
string | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

total_value_usd
number | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

fee_usd
number | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

sender_rows
object[]

Champ de filtrage de transaction, partagé avec la structure du résultat. Toujours vide sur un résultat de Filtrage des portefeuilles.

receiver_rows
object[]

Champ de filtrage de transaction, partagé avec la structure du résultat. Toujours vide sur un résultat de Filtrage des portefeuilles.

transaction_flows
object[]

Champ de filtrage de transaction, partagé avec la structure du résultat. Toujours vide sur un résultat de Filtrage des portefeuilles.

transaction_flows_status
string | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

transaction_flows_error
string | null

Champ de filtrage de transaction, partagé avec la structure du résultat. Vaut toujours null sur un résultat de Filtrage des portefeuilles.

network_nodes
object[]

Nœuds du graphe d'exposition pour le filtrage des transactions. Vide pour un résultat de filtrage des portefeuilles.

network_edges
object[]

Arêtes du graphe d'exposition pour le filtrage des transactions. Vide pour un résultat de filtrage des portefeuilles.

pep_counterparty
boolean | null

Exposition à une personne politiquement exposée. null lorsqu'aucun résultat PEP n'est disponible, ce qui est le cas de tous les résultats actuels car aucun fournisseur n'en signale ; false uniquement pour un résultat de filtrage explicitement négatif. Ne considérez pas null comme une vérification PEP terminée.

risk_factors
object[]

Explication classée de risk_score : ce qui a produit ce verdict. Les fournisseurs évaluent une adresse selon leur propre modèle et ne renvoient qu'un verdict (Merkle Science renvoie un entier de 0 à 5), de sorte que le score seul n'est pas exploitable. Les éléments sont classés par niveau de risque décroissant, puis selon la valeur ayant transité par chaque facteur déterminant, plafonnés aux cinq plus importants ; source_of_funds et destination_of_funds contiennent toujours la ventilation complète. Un risk_score élevé sans entrée is_high_risk signifie que le fournisseur n'a signalé aucune correspondance avec des sanctions ou une entité attribuée et a évalué l'adresse uniquement d'après son propre modèle d'exposition - summary l'indique explicitement.

raw_response
object

Le payload propre au fournisseur. Sa structure est spécifique au fournisseur et peut changer sans préavis : lisez les champs normalisés plutôt que de le parser.

Réponse

Le document PDF généré, renvoyé directement au format binaire application/pdf — il n'y a pas d'encapsulation JSON.

The response is of type file.

Dernière modification le 7 novembre 2026