Consulter le statut AML
Récupère le statut le plus récent et l’évaluation des risques pour une vérification AML existante. Les données sont actualisées dès que de nouvelles informations sont disponibles.
POST /v1/aml-checks/check
Requête
Paramètres
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| id | string | Oui | Identifiant du contrôle AML |
#!/bin/bash
API_TOKEN="your_api_token"
API_SECRET="your_api_secret"
REQUEST_BODY='{
"id": "1042"
}'
# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Envoyer la requête API
curl -X POST "https://api.trxup.com/v1/aml-checks/check" \
-H "Authorization: Bearer ${API_TOKEN}" \
-H "X-Signature: ${SIGNATURE}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}"const crypto = require('crypto');
const axios = require('axios');
const apiToken = 'your_api_token';
const apiSecret = 'your_api_secret';
const requestBody = JSON.stringify({
id: '1042'
});
// Calculer la signature
const signature = crypto
.createHash('sha256')
.update(requestBody + apiSecret)
.digest('hex');
// Envoyer la requête API
axios({
method: 'post',
url: 'https://api.trxup.com/v1/aml-checks/check',
headers: {
'Authorization': `Bearer ${apiToken}`,
'X-Signature': signature,
'Content-Type': 'application/json'
},
data: requestBody
})
.then(response => console.log(response.data))
.catch(error => console.error(error));<?php
$apiToken = 'your_api_token';
$apiSecret = 'your_api_secret';
$requestBody = json_encode([
'id' => '1042'
]);
// Calculer la signature
$signature = hash('sha256', $requestBody . $apiSecret);
// Envoyer la requête API
$ch = curl_init('https://api.trxup.com/v1/aml-checks/check');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiToken,
'X-Signature: ' . $signature,
'Content-Type': 'application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>import hashlib
import json
import requests
api_token = 'your_api_token'
api_secret = 'your_api_secret'
request_body = json.dumps({
'id': '1042'
})
# Calculer la signature
signature = hashlib.sha256((request_body + api_secret).encode()).hexdigest()
# Envoyer la requête API
headers = {
'Authorization': f'Bearer {api_token}',
'X-Signature': signature,
'Content-Type': 'application/json'
}
response = requests.post(
'https://api.trxup.com/v1/aml-checks/check',
headers=headers,
data=request_body
)
print(response.json())Réponse
Renvoie les détails du contrôle AML avec les données de risque les plus récentes. Si le contrôle est encore pending, le serveur redemande le résultat avant de répondre, de sorte que chaque appel renvoie l’état le plus récent ; continuez à interroger jusqu’à ce que le statut change.
Champs de la réponse
| Champ | Type | Description |
|---|---|---|
| code | integer | Code de réponse (0 = succès) |
| request_id | string | Identifiant unique de la requête |
| result | object | Données du contrôle AML |
| result.id | string | Identifiant du contrôle AML |
| result.type | string | Type de service AML (address ou hash) |
| result.address | string | Adresse analysée |
| result.network | string | Code du réseau blockchain, tel qu’écrit dans la liste des réseaux pris en charge (par ex. TRX, TetherOMNI) |
| result.status | string | Statut actuel (pending, processing, completed, failed, expired, skipped) |
| result.risk_score | string|null | Score de risque sous forme de chaîne à deux décimales (par ex. "12.50"), ou null tant qu’aucun score n’est disponible |
| result.risk_level | string|null | Niveau de risque textuel (low, medium, high) |
| result.blacklist | boolean | Indique si une correspondance sur liste noire est détectée |
| result.risk_factors | array | Catégories de risque auxquelles les fonds sont liés, triées par score décroissant, une entrée par catégorie ; [] vide si aucune catégorie n’a été signalée (par exemple tant que le contrôle n’est pas terminé) |
| result.risk_factors[].name | string | Clé de la catégorie, l’une de celles listées dans Catégories de facteurs de risque ; une catégorie hors de cette liste est signalée comme other |
| result.risk_factors[].label | string | Libellé anglais de la catégorie (non traduit) |
| result.risk_factors[].group | string | Groupe de risque de la catégorie : low, medium ou high |
| result.risk_factors[].score | number | Part des fonds liée à cette catégorie, de 0 à 1, arrondie à 3 décimales |
| result.checked_at | string | Horodatage de création du contrôle (ISO 8601) |
| result.hash | string | Hash analysé (uniquement pour hash) |
| result.direction | string | Côté de la transaction analysé, deposit ou withdrawal (uniquement pour hash) |
Catégories de facteurs de risque
risk_factors[].name est toujours l’une de ces clés. Une catégorie hors de cette liste est signalée comme other. Le label est toujours en anglais : il fait partie de la réponse, ce n’est pas une traduction.
| name | label | group |
|---|---|---|
enforcement_action | Enforcement Action | high |
ransom | Ransom | high |
dark_market | Dark Market | high |
dark_service | Dark Service | high |
illegal_service | Illegal Service | high |
mixer | Mixer | high |
scam | Scam | high |
gambling | Gambling | high |
stolen_coins | Stolen Coins | high |
exchange_fraudulent | Fraudulent Exchange | high |
child_exploitation | Child Exploitation | high |
sanctions | Sanctions | high |
terrorism_financing | Terrorism Financing | high |
malware | Malware | high |
infrastructure_as_a_service | Infrastructure-as-a-Service | medium |
decentralized_exchange_contract | Decentralized Exchange Contract | medium |
unnamed_service | Unnamed Service | medium |
atm | ATM | medium |
risky_exchange | Risky Exchange | medium |
p2p_exchange_mlrisk_high | P2P Exchange (High Risk) | medium |
liquidity_pools | Liquidity Pools | medium |
exchange | Exchange | low |
merchant_services | Merchant Services | low |
wallet | Wallet | low |
miner | Miner | low |
payment | Payment | low |
marketplace | Marketplace | low |
p2p_exchange | P2P Exchange | low |
seized_assets | Seized Assets | low |
other | Other | low |
Exemple de réponse
{
"code": 0,
"request_id": "bbf74bcd-fb36-4df8-adc8-25f2bacd087b",
"result": {
"id": "1042",
"type": "address",
"address": "TPY1Kb8cKAZQfm95gXQQs2Mh8Uygtos21D",
"network": "TRX",
"status": "completed",
"risk_score": "12.50",
"risk_level": "medium",
"blacklist": false,
"risk_factors": [
{
"name": "exchange",
"label": "Exchange",
"group": "low",
"score": 0.9
},
{
"name": "p2p_exchange_mlrisk_high",
"label": "P2P Exchange (High Risk)",
"group": "medium",
"score": 0.1
}
],
"checked_at": "2024-03-25T10:42:12+00:00"
}
}Pour un contrôle de hash, hash et direction suivent checked_at :
{
"code": 0,
"request_id": "bbf74bcd-fb36-4df8-adc8-25f2bacd087b",
"result": {
"id": "1043",
"type": "hash",
"address": "TPY1Kb8cKAZQfm95gXQQs2Mh8Uygtos21D",
"network": "TRX",
"status": "completed",
"risk_score": "3.20",
"risk_level": "low",
"blacklist": false,
"risk_factors": [],
"checked_at": "2024-03-25T10:44:31+00:00",
"hash": "E3F2A1B66DBB9F0B24C4125229163944A7D91EB3F1AC5E409FFCEE0C81A913F2",
"direction": "deposit"
}
}Erreurs possibles
| Code d’erreur | Key | Description |
|---|---|---|
| 1 | auth | Erreur d’authentification (token ou signature incorrects) |
| 2 | invalid_service_or_params | Paramètres invalides (id manquant ou vide) |
| 30 | aml_check_not_found | Contrôle AML introuvable, ou il appartient à un autre compte |
| 500 | internal_server_error | Erreur interne du serveur |