Créer un contrôle AML 
Crée un nouveau contrôle AML pour une adresse de portefeuille ou un hash de transaction spécifique. La requête réserve immédiatement les fonds nécessaires et renvoie l’état actuel du contrôle.
POST /v1/aml-checks/new
Requête 
Paramètres 
| Champ | Type | Obligatoire | Description | 
|---|---|---|---|
| type | string | Oui | Type de service AML : address ou hash | 
| network | string | Oui | Code du réseau blockchain (voir tableau) | 
| address | string | Oui | Adresse valide pour le réseau sélectionné. Pour type = hash, il s’agit de l’adresse de destination. | 
| hash | string | Conditionnel* | Hash valide pour le réseau sélectionné. Requis lorsque type = hash | 
| direction | string | Conditionnel** | Direction de la transaction (deposit ou withdrawal). Requis lorsque type = hash. Si les fonds arrivent sur votre adresse, c’est un dépôt (vous recevez). S’ils partent vers une adresse externe, c’est un retrait (vous envoyez). | 
* Uniquement pour les contrôles de hash.
 ** Uniquement pour les contrôles de hash. Par défaut deposit si omis.
Types de service disponibles 
| Type | Description | 
|---|---|
| address | Analyse une adresse et calcule son profil de risque | 
| hash | Analyse un hash de transaction unique, y compris la direction d’entrée/sortie | 
Réseaux pris en charge 
| Code | Réseau | 
|---|---|
| TRX | TRON | 
| BTC | Bitcoin | 
| ETC | Ethereum Classic | 
| LTC | Litecoin | 
| BSC | BNB Chain | 
| XRP | Ripple | 
| MATIC | Polygon | 
| ADA | Cardano | 
| XLM | Stellar | 
bash
#!/bin/bash
API_TOKEN="your_api_token"
API_SECRET="your_api_secret"
REQUEST_BODY='{
  "type": "address",
  "network": "ETH",
  "address": "0x6Dc1f03B1d2c27D6c741832F4AA83322D41De7Ea"
}'
# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Envoyer la requête API
curl -X POST "https://api.tronzap.com/v1/aml-checks/new" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"javascript
const crypto = require('crypto');
const axios = require('axios');
const apiToken = 'your_api_token';
const apiSecret = 'your_api_secret';
const requestBody = JSON.stringify({
  type: 'address',
  network: 'ETH',
  address: '0x6Dc1f03B1d2c27D6c741832F4AA83322D41De7Ea'
});
// Calculer la signature
const signature = crypto
  .createHash('sha256')
  .update(requestBody + apiSecret)
  .digest('hex');
// Envoyer la requête API
axios({
  method: 'post',
  url: 'https://api.tronzap.com/v1/aml-checks/new',
  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
<?php
$apiToken = 'your_api_token';
$apiSecret = 'your_api_secret';
$requestBody = json_encode([
  'type' => 'address',
  'network' => 'ETH',
  'address' => '0x6Dc1f03B1d2c27D6c741832F4AA83322D41De7Ea',
], JSON_UNESCAPED_SLASHES);
// Calculer la signature
$signature = hash('sha256', $requestBody . $apiSecret);
// Envoyer la requête API
$ch = curl_init('https://api.tronzap.com/v1/aml-checks/new');
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;
?>python
import hashlib
import json
import requests
api_token = 'your_api_token'
api_secret = 'your_api_secret'
request_body = json.dumps({
  'type': 'address',
  'network': 'ETH',
  'address': '0x6Dc1f03B1d2c27D6c741832F4AA83322D41De7Ea'
})
# 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.tronzap.com/v1/aml-checks/new',
  headers=headers,
  data=request_body
)
print(response.json())Exemple de requête pour un hash 
bash
#!/bin/bash
API_TOKEN="your_api_token"
API_SECRET="your_api_secret"
REQUEST_BODY='{
  "type": "hash",
  "network": "BTC",
  "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "hash": "E3F2A1B66DBB9F0B24C4125229163944A7D91EB3F1AC5E409FFCEE0C81A913F2",
  "direction": "withdrawal"
}'
# Calculer la signature
SIGNATURE=$(echo -n "${REQUEST_BODY}${API_SECRET}" | sha256sum | cut -d' ' -f1)
# Envoyer la requête API
curl -X POST "https://api.tronzap.com/v1/aml-checks/new" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "X-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"javascript
const crypto = require('crypto');
const axios = require('axios');
const apiToken = 'your_api_token';
const apiSecret = 'your_api_secret';
const requestBody = JSON.stringify({
  type: 'hash',
  network: 'BTC',
  address: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
  hash: 'E3F2A1B66DBB9F0B24C4125229163944A7D91EB3F1AC5E409FFCEE0C81A913F2',
  direction: 'withdrawal'
});
// Calculer la signature
const signature = crypto
  .createHash('sha256')
  .update(requestBody + apiSecret)
  .digest('hex');
// Envoyer la requête API
axios({
  method: 'post',
  url: 'https://api.tronzap.com/v1/aml-checks/new',
  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
<?php
$apiToken = 'your_api_token';
$apiSecret = 'your_api_secret';
$requestBody = json_encode([
  'type' => 'hash',
  'network' => 'BTC',
  'address' => 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
  'hash' => 'E3F2A1B66DBB9F0B24C4125229163944A7D91EB3F1AC5E409FFCEE0C81A913F2',
  'direction' => 'withdrawal'
], JSON_UNESCAPED_SLASHES);
// Calculer la signature
$signature = hash('sha256', $requestBody . $apiSecret);
// Envoyer la requête API
$ch = curl_init('https://api.tronzap.com/v1/aml-checks/new');
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;
?>python
import hashlib
import json
import requests
api_token = 'your_api_token'
api_secret = 'your_api_secret'
request_body = json.dumps({
  'type': 'hash',
  'network': 'BTC',
  'address': 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
  'hash': 'E3F2A1B66DBB9F0B24C4125229163944A7D91EB3F1AC5E409FFCEE0C81A913F2',
  'direction': 'withdrawal'
})
# 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.tronzap.com/v1/aml-checks/new',
  headers=headers,
  data=request_body
)
print(response.json())Réponse 
La réponse renvoie l’identifiant du contrôle AML et les dernières données de risque connues. Si le contrôle est toujours en cours, le statut reste pending ou processing jusqu’au résultat final.
Champs de la réponse 
| Champ | Type | Description | 
|---|---|---|
| code | integer | Code de réponse (0 = succès) | 
| 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.hash | string | Hash analysé (uniquement pour hash) | 
| result.direction | string | Direction de la transaction (deposit ou withdrawal) le cas échéant | 
| result.network | string | Code du réseau blockchain | 
| result.status | string | Statut du contrôle (pending, processing, completed, failed) | 
| result.risk_score | float | Score de risque | 
| result.risk_level | string | Niveau de risque textuel (low, medium, high) | 
| result.blacklist | boolean | true si une correspondance sur liste noire est détectée | 
| result.risk_factors | array | Liste des facteurs de risque | 
| result.checked_at | string | Horodatage de création du contrôle (ISO 8601) | 
Exemple de réponse 
json
{
  "code": 0,
  "result": {
    "id": "01jq7h6bvf6p5t1amnz6y3n8c4",
    "type": "address",
    "address": "0x6Dc1f03B1d2c27D6c741832F4AA83322D41De7Ea",
    "network": "ETH",
    "status": "completed",
    "risk_score": 12.5,
    "risk_level": "medium",
    "blacklist": false,
    "risk_factors": [
      {
        "name": "p2p_exchange_mlrisk_high",
        "label": "P2P Exchange (High Risk)",
        "group": "medium",
        "score": 0.796
      },
      {
        "name": "exchange",
        "label": "Exchange",
        "group": "low",
        "score": 0.203
      }
    ],
    "checked_at": "2024-03-25T10:42:12Z"
  }
}Erreurs possibles 
| Code d’erreur | Description | 
|---|---|
| 1 | Erreur d’authentification (token ou signature incorrects) | 
| 2 | Service ou paramètres invalides | 
| 5 | Portefeuille introuvable | 
| 6 | Fonds insuffisants pour exécuter le contrôle | 
| 35 | Service indisponible pour votre projet | 
| 500 | Erreur interne du serveur | 
