POST /apiv2/aml
POST /apiv2/screening ile değiştirilmiştir
POST /apiv2/screening sürüm 2 sözleşmesidir: her sağlayıcı ve siparişin her durumu için tek bir yanıt yapısı, JSON sayıları yerine dize olarak ondalık sayılar, tek bir ölçekte paylar ve tek bir hata biçimi. Bu uç nokta çalışmaya devam etmektedir ve önceden bildirilmeksizin kaldırılmayacaktır.
AML (Kara Para Aklamayı Önleme) taraması için bir adres gönderin. Risk skorunu, risk seviyesini ve ayrıntılı risk maruziyeti analizini döndürür.
Yanıttaki tüm zaman damgaları UTC formatındadır. Dize biçimi değişmemiştir — bölge son eki olmadan "2026-09-09 23:01:44".
Uç Nokta URL'si
POST https://netts.io/apiv2/amlİstek Başlıkları
| Başlık | Gerekli | Açıklama |
|---|---|---|
| Content-Type | Evet | application/json |
| X-API-KEY | Evet | Netts kontrol panelinizden alınan API anahtarınız |
İstek Gövdesi
{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait": true
}Parametreler
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
| address | string | Evet | Kontrol edilecek blokzincir adresi (10-100 karakter) |
| network | string | Evet | Blokzincir ağı tanımlayıcısı (aşağıdaki Desteklenen Ağlar bölümüne bakın) |
| provider | string | Hayır | AML sağlayıcısı: elliptic (varsayılan) |
| wait | boolean | Hayır | true ise sonucu eşzamanlı olarak bekler (15 saniyeye kadar). false ise veya belirtilmemişse, pending durumu ve client_order_id ile hemen döner — sonucu GET /apiv2/aml/{order_id} üzerinden sorgulamak için bunu kullanın |
| response_format | string | Hayır | Yanıt ayrıntı düzeyi: rate (yalnızca skor), full (varsayılan, eksiksiz veri) |
| report_language | string | Hayır | Rapor dili: en (varsayılan) |
Sağlayıcılar
| Sağlayıcı | Skor Aralığı | Açıklama |
|---|---|---|
elliptic | 0 — 10 | Elliptic risk skoru. 0 = risk yok, 10 = maksimum risk. null = hiçbir tetikleyici algılanmadı |
Örnek İstekler
cURL (eşzamanlı)
curl -X POST https://netts.io/apiv2/aml \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_api_key" \
-d '{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait": true
}'cURL (asenkron)
curl -X POST https://netts.io/apiv2/aml \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_api_key" \
-d '{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic"
}'Python
import requests
url = "https://netts.io/apiv2/aml"
headers = {
"Content-Type": "application/json",
"X-API-KEY": "your_api_key",
}
payload = {
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait": True
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
if response.status_code == 200:
result = data.get("data", {})
print(f"Order ID: {result.get('client_order_id')}")
print(f"Status: {result.get('status')}")
print(f"Risk Score: {result.get('risk_score')}")
print(f"Risk Level: {result.get('risk_level')}")
print(f"Sanctioned: {result.get('is_sanctioned')}")
else:
print(f"Error: {data}")Yanıt
Başarılı — Beklemede (200 OK)
wait ayarlanmadığında veya kontrol işlemi hâlâ devam ederken:
{
"success": true,
"data": {
"client_order_id": "A4C666ABE24BD4A",
"status": "pending",
"address": "T...example...",
"provider": "elliptic",
"price_usdt": 0.98,
"price_trx": 4.136286,
"currency": "TRX",
"message": "AML check order accepted. Use GET /apiv2/aml/A4C666ABE24BD4A to check status."
},
"timestamp": "2026-03-10 09:56:31"
}Başarılı — Elliptic Tamamlandı (200 OK)
Tüm veri yapılarıyla eksiksiz Elliptic yanıtı:
{
"success": true,
"data": {
"client_order_id": "A019540900E55CA",
"status": "completed",
"address": "T...example...",
"provider": "elliptic",
"report_language": "en",
"risk_score": 0.802904,
"risk_level": "low",
"is_sanctioned": true,
"created_at": "2026-03-10 15:56:28",
"completed_at": "2026-03-10 15:56:28",
"result": {
"risk_score": 0.802904473154148,
"risk_score_detail": {
"source": 0.233206,
"destination": 0.802904
},
"contributions": {
"source": [
{
"entities": [
{
"name": "Capitalist",
"is_vasp": true,
"actor_id": 53979,
"category": "Payment Services Provider",
"entity_id": "b73a9c87-...",
"category_id": "54f55bfe-...",
"is_primary_entity": true
}
],
"indirect_value": { "usd": 40194.03 },
"contribution_value": { "usd": 40194.03 },
"counterparty_value": { "usd": 0 },
"min_number_of_hops": 2,
"indirect_percentage": 31.57,
"is_screened_address": false,
"contribution_percentage": 31.57,
"counterparty_percentage": 0
},
{
"entities": [
{
"name": "KuCoin",
"is_vasp": true,
"actor_id": 11620,
"category": "Exchange",
"entity_id": "e54292da-...",
"category_id": "0a52f7a2-...",
"is_primary_entity": true
}
],
"indirect_value": { "usd": 28436.45 },
"contribution_value": { "usd": 29434.17 },
"counterparty_value": { "usd": 997.72 },
"min_number_of_hops": 1,
"indirect_percentage": 22.34,
"is_screened_address": false,
"contribution_percentage": 23.12,
"counterparty_percentage": 0.78
}
],
"destination": [
{
"entities": [
{
"name": "Bybit",
"is_vasp": true,
"actor_id": 23354,
"category": "Exchange",
"entity_id": "bddde8b7-...",
"category_id": "0a52f7a2-...",
"is_primary_entity": true
}
],
"indirect_value": { "usd": 26333.43 },
"contribution_value": { "usd": 27458.30 },
"counterparty_value": { "usd": 1124.86 },
"min_number_of_hops": 1,
"indirect_percentage": 20.69,
"is_screened_address": false,
"contribution_percentage": 21.57,
"counterparty_percentage": 0.88
}
]
},
"cluster_entities": [
{
"name": "Unknown",
"is_vasp": null,
"actor_id": -4,
"category": "Unknown",
"entity_id": "00000000-...",
"category_id": "00000000-...",
"is_primary_entity": true,
"is_after_sanction_date": false
}
],
"evaluation_detail": {
"source": [
{
"rule_id": "6c2dcb03-...",
"rule_name": "Obfuscating & Misc.",
"rule_type": "exposure",
"risk_score": 0.2332,
"matched_elements": [
{
"category": "Coin Swap Service",
"category_id": "ff85b715-...",
"contributions": [
{
"entity": "FixedFloat",
"risk_triggers": {
"category": "Coin Swap Service",
"category_id": "ff85b715-..."
},
"indirect_value": { "usd": 2891.09, "native": 0, "native_major": 0 },
"contribution_value": { "usd": 2968.66, "native": 0, "native_major": 0 },
"counterparty_value": { "usd": 77.58, "native": 0, "native_major": 0 },
"min_number_of_hops": 1,
"indirect_percentage": 2.27,
"is_screened_address": false,
"contribution_percentage": 2.33,
"counterparty_percentage": 0.06
}
],
"indirect_value": { "usd": 2891.09, "native": 0, "native_major": 0 },
"contribution_value": { "usd": 2968.66, "native": 0, "native_major": 0 },
"counterparty_value": { "usd": 0, "native": 0, "native_major": 0 },
"indirect_percentage": 100,
"contribution_percentage": 2.33,
"counterparty_percentage": 0
}
],
"matched_behaviors": []
},
{
"rule_id": "0a2b68fd-...",
"rule_name": "Illicit Activity",
"rule_type": "exposure",
"risk_score": 0.0026,
"matched_elements": [
{
"category": "Token Blacklisting",
"category_id": "94b50de8-...",
"contributions": [
{
"entity": "Tether USD",
"risk_triggers": {
"category": "Token Blacklisting",
"category_id": "94b50de8-..."
},
"contribution_value": { "usd": 1022.45, "native": 0, "native_major": 0 },
"min_number_of_hops": 3,
"contribution_percentage": 0.08
}
]
}
],
"matched_behaviors": []
},
{
"rule_id": "df59fab5-...",
"rule_name": "Sanctions",
"rule_type": "exposure",
"risk_score": 0.0024,
"matched_elements": [
{
"category": "Sanctioned Entity",
"category_id": "c1648b7a-...",
"contributions": [
{
"entity": "Garantex",
"risk_triggers": {
"category": "Sanctioned Entity",
"category_id": "c1648b7a-..."
},
"contribution_value": { "usd": 863.21, "native": 0, "native_major": 0 },
"min_number_of_hops": 3,
"contribution_percentage": 0.07
}
]
}
],
"matched_behaviors": []
}
],
"destination": []
},
"detected_behaviors": []
},
"sanctions": {
"self": false,
"self_entities": null,
"exposure": {
"share": 8.029045,
"proximity": "mixed",
"hops": 1,
"entity": "Garantex Europe OU - OFAC SDN - 5 Apr 2022",
"category": "OFAC Sanctioned Entity",
"direction": "destination",
"rule_name": "Sanctioned, TF & CSAM"
},
"items": [
{
"entity": "Garantex Europe OU - OFAC SDN - 5 Apr 2022",
"category": "OFAC Sanctioned Entity",
"share": 8.02904473154148,
"counterparty_share": 2.472410320321629,
"indirect_share": 5.556634411219852,
"hops": 1,
"proximity": "mixed",
"is_sanctioned": true,
"trigger": "sanctions_list",
"value_usd": 7494.407584232807,
"direction": "destination",
"rule_name": "Sanctioned, TF & CSAM"
}
]
}
},
"timestamp": "2026-03-10 15:56:28"
}Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
| data.client_order_id | string | Durum sorgulama için benzersiz sipariş kimliği (ID) |
| data.status | string | pending, processing, completed, failed, skipped |
| data.risk_score | number | null | Risk skoru. Elliptic: 0-10. null = tetikleyici yok |
| data.risk_level | string | null | none, low, medium, high veya severe. Elliptic low, medium, high döndürür; BitOK none ve severe değerlerini ekler. Sağlayıcı hiçbir tetikleyici algılamadığında null |
| data.is_sanctioned | boolean | Yaptırım uygulanan varlıklara maruziyet tespit edilirse true. Uç noktanın kullanıma sunulmasından bu yana değişmemiştir: yaptırım uygulanan bir adres ile yalnızca böyle bir adrese bağlantısı olan bir adres arasında ayrım yapmaz — bunun için data.sanctions alanına bakın |
| data.sanctions | object | null | Yaptırım bulgusunun ayrıntılı dökümü: adresin kendisinin listede olup olmadığı, bağlantının ne kadar yakın ve ne kadar büyük olduğu. Yaptırımlar bölümüne bakın |
| data.result | object | Eksiksiz sağlayıcı yanıtı (response_format=full olduğunda) |
Yaptırımlar
is_sanctioned tek bir boole değeridir ve iki çok farklı durumda true yanıtını verir: taranan adresin bizzat bir yaptırım listesinde bulunması ve taranan adresin bir zamanlar yaptırım listesinde bulunan birinden iki aracı üzerinden yüzde bir kesir alması. Bu bayrak, geriye dönük uyumluluk adına orijinal anlamını korur; iki durumu data.sanctions birbirinden ayırır.
| Alan | Tür | Açıklama |
|---|---|---|
| sanctions.self | boolean | Taranan adresin kendisi yaptırım uygulanan varlık olduğunda true |
| sanctions.self_entities | array | null | self değeri true olduğunda, kendisine ait yaptırım uygulanan varlıkların adları |
| sanctions.exposure | object | null | Tek bir en büyük yaptırım bağlantısı — özette gösterilecek bilgi |
| sanctions.exposure.share | number | İlgili fonların payı, yüzde olarak (8.03 değeri %8,03 anlamına gelir) |
| sanctions.exposure.proximity | string | screened_address, counterparty, indirect veya mixed |
| sanctions.exposure.hops | number | null | Yaptırım uygulanan varlığa olan minimum işlem atlama sayısı |
| sanctions.exposure.entity | string | null | Liste ve tarih de dahil olmak üzere yaptırım uygulanan varlık adı |
| sanctions.exposure.direction | string | null | Gelen fonlar için source, giden fonlar için destination |
| sanctions.items | array | Her bir yaptırım katkısı, en büyük pay ilk sırada olacak şekilde, exposure ile aynı alanlar artı counterparty_share, indirect_share, value_usd ve trigger |
| sanctions.related | array | null | Yalnızca BitOK: yaptırım listesinin kendisinden ayrı tutulan, AB veya Birleşik Krallık yaptırımları altındaki borsalara maruziyet |
Yakınlık (Proximity), bir Elliptic raporunun Closest Proximity sütununu yansıtır:
| Değer | Anlamı |
|---|---|
screened_address | Taranan adres bir karşı taraf değil, tetikleyicinin kendisidir |
counterparty | Taranan adresin doğrudan karşı tarafı |
indirect | Aracılar vasıtasıyla ulaşılmış — hops alanına bakın |
mixed | Aynı varlığa hem doğrudan hem de dolaylı akışlar |
Bir katkı, yalnızca sağlayıcı bunu bu şekilde işaretlediğinde bir yaptırım bağlantısı olarak sayılır — Elliptic için risk_triggers.is_sanctioned, BitOK için sanctions kategorisi. Elliptic'in Sanctioned, TF & CSAM adlı kuralı ülke ve kategori tetikleyicilerinde de devreye girer; bu nedenle tek başına kural adı bir yaptırım kararı niteliği taşımaz.
Elliptic result Nesnesi
| Alan | Tür | Açıklama |
|---|---|---|
| risk_score | number | Kesin risk skoru (0-10) |
| risk_score_detail | object | Ayrım dökümü: source ve destination skorları |
| contributions | object | Fon akışı katkıda bulunanlarının source ve destination dizileri |
| contributions[].entities | array | Katkıyla ilişkili bilinen varlıklar |
| contributions[].entities[].name | string | Varlık adı (ör. "Binance", "KuCoin") |
| contributions[].entities[].category | string | Varlık türü (ör. "Exchange", "Payment Services Provider") |
| contributions[].entities[].is_vasp | boolean | null | Varlığın Sanal Varlık Hizmet Sağlayıcısı (VASP) olup olmadığı |
| contributions[].contribution_value.usd | number | Katkının toplam USD hacmi |
| contributions[].contribution_percentage | number | Bu varlıktan gelen toplam fon yüzdesi |
| contributions[].indirect_value.usd | number | Dolaylı yoldan (aracılar vasıtasıyla) alınan USD hacmi |
| contributions[].indirect_percentage | number | Dolaylı yoldan alınan fonların yüzdesi |
| contributions[].counterparty_value.usd | number | Doğrudan karşı taraf olarak USD hacmi |
| contributions[].counterparty_percentage | number | Doğrudan karşı taraf olarak yüzde |
| contributions[].min_number_of_hops | number | Varlıktan itibaren minimum işlem atlama sayısı (0 = doğrudan) |
| contributions[].is_screened_address | boolean | Bunun taranan adresin kendisi olması durumunda true |
| cluster_entities | array | Adres kümesiyle doğrudan ilişkili bilinen varlıklar |
| cluster_entities[].name | string | Varlık adı |
| cluster_entities[].category | string | Varlık kategorisi |
| cluster_entities[].is_vasp | boolean | null | VASP durumu |
| cluster_entities[].is_after_sanction_date | boolean | Faaliyet varlığa yaptırım uygulandıktan sonra gerçekleşmişse true |
| evaluation_detail | object | Tetiklenen risk kurallarının source ve destination dizileri |
| evaluation_detail[].rule_name | string | Kural adı (ör. "Sanctions", "Illicit Activity", "Obfuscating & Misc.") |
| evaluation_detail[].rule_type | string | Kural türü (ör. "exposure") |
| evaluation_detail[].risk_score | number | Bu kuraldan gelen risk skoru katkısı |
| evaluation_detail[].matched_elements | array | Kuralı tetikleyen kategoriler ve varlıklar |
| evaluation_detail[].matched_elements[].category | string | Risk kategorisi (ör. "Sanctioned Entity", "Gambling", "Token Blacklisting") |
| evaluation_detail[].matched_elements[].contributions | array | Eşleşen kategori içindeki varlıklar |
| evaluation_detail[].matched_elements[].contributions[].entity | string | Varlık adı |
| evaluation_detail[].matched_elements[].contributions[].contribution_percentage | number | Maruziyet yüzdesi |
| evaluation_detail[].matched_elements[].contributions[].min_number_of_hops | number | İşlem atlama sayısı |
| evaluation_detail[].matched_elements[].contributions[].is_screened_address | boolean | Taranan adresin kendisi kuralı tetiklediğinde true |
| evaluation_detail[].matched_elements[].contributions[].risk_triggers | object | Kuralın neden tetiklendiği: bir yaptırım listesi için is_sanctioned, bir yargı yetki alanı için country, bir varlık türü için category |
| evaluation_detail[].matched_behaviors | array | Algılanan davranışsal modeller |
| detected_behaviors | array | Adreste algılanan küresel davranışsal modeller |
Risk Seviyeleri
Elliptic (0-10 ölçeği):
| Aralık | Seviye | Açıklama |
|---|---|---|
| 0 — 3 | low | Minimum risk. Önemli bir maruziyet yok |
| 3 — 7 | medium | Orta düzeyde risk. Bazı riskli kategoriler tespit edildi |
| 7 — 10 | high | Yüksek risk. Yaptırım uygulanan, yasa dışı veya yüksek riskli varlıklar |
| null | - | Risk tetikleyicisi tespit edilmedi |
BitOK (0-1 ölçeği): sağlayıcı seviyenin kendisini döndürür — none, low, medium, high veya severe.
risk_level, her yerde kullanılan tek karardır: API yanıtı, kontrol paneli ve PDF raporunun tümü aynı kontrol işlemi için aynı kelimeyi yazdırır.
Hata Yanıtları
Kimlik Doğrulama Hatası (401)
{
"detail": {
"code": -1,
"msg": "API key not provided"
}
}Doğrulama Hatası (400)
{
"success": false,
"error": {
"code": 4001,
"msg": "Invalid or missing address"
}
}{
"success": false,
"error": {
"code": 4002,
"msg": "Invalid provider. Use: elliptic"
}
}Yetersiz Bakiye (402)
{
"success": false,
"error": {
"code": 4020,
"message": "Insufficient balance"
},
"timestamp": "2026-03-10 10:00:00"
}Sağlayıcı Kullanılamıyor (503)
{
"success": false,
"error": {
"code": 5030,
"message": "Provider elliptic not available"
},
"timestamp": "2026-03-10 10:00:00"
}Hata Kodu Referansı
| Kod | Açıklama | HTTP Durumu |
|---|---|---|
-1 | Kimlik doğrulama başarısız oldu | 401 |
4001 | Geçersiz veya eksik adres | 400 |
4002 | Geçersiz sağlayıcı | 400 |
4020 | Yetersiz bakiye | 402 |
5030 | Sağlayıcı kullanılamıyor | 503 |
İstek Limitleri
Aşağıdaki istek limitleri tüm AML uç noktaları için geçerlidir (IP adresi başına):
| Süre | Limit | Açıklama |
|---|---|---|
| 1 saniye | 2 istek | Saniyede en fazla 2 istek |
| 1 dakika | 30 istek | Dakikada en fazla 30 istek |
İstek Limiti Aşıldı (429)
{
"message": "API rate limit exceeded"
}Sonuç Önbelleğe Alma
Aynı adres + sağlayıcı kombinasyonu son 60 saniye içinde kontrol edilmişse, önbelleğe alınan sonuç ücretsiz olarak döndürülür.
Desteklenen Ağlar
network parametresi zorunludur. Aşağıdaki tablodan sembolü (ticker) kullanın.
Elliptic — Bütünsel Tarama
Tarama, belirli bir ağdaki belirli bir adres için gerçekleştirilir. Bununla birlikte Elliptic, bu adresle ilişkili tüm varlıkları izler — tokenlar, zincirler arası transferler ve diğer ağlardaki bilinen varlıklarla etkileşimler dahil.
| Ağ | Sembol | Yerel Varlık |
|---|---|---|
| Algorand | algo | ALGO |
| Aptos | apt | APT |
| Arbitrum | arb | ETH |
| Avalanche (C-Chain) | avax | AVAX |
| Base | base | ETH |
| Binance Chain | bnb | BNB |
| Binance Smart Chain | bsc | BNB |
| Bitcoin | btc | BTC |
| Bittensor | tao | TAO |
| Cardano | ada | ADA |
| Celo | celo | CELO |
| Cosmos | atom | ATOM |
| Crypto.com | cro | CRO |
| Dogecoin | doge | DOGE |
| dYdX | dydx | DYDX |
| Ethereum | eth | ETH |
| Ethereum Classic | etc | ETC |
| Fantom | ftm | FTM |
| Filecoin | fil | FIL |
| Flare | flr | FLR |
| Gnosis | gnosis | xDai |
| Hedera | hbar | HBAR |
| HyperEVM | hype | HYPE |
| Injective | inj | INJ |
| Internet Computer | icp | ICP |
| Linea | linea | LINEA |
| Litecoin | ltc | LTC |
| MobileCoin | mob | MOB |
| Near | near | NEAR |
| Optimism | op | ETH |
| Polkadot | dot | DOT |
| Polygon | matic | MATIC |
| Ripple | xrp | XRP |
| Sei | sei | SEI |
| Solana | sol | SOL |
| Starknet | strk | STRK |
| Stellar | xlm | XLM |
| Sui | sui | SUI |
| Tezos | xtz | XTZ |
| TON | ton | TON |
| Tron | trx | TRX |
| XDC | xdc | XDC |
| XLayer | okb | OKB |
| Zilliqa | zil | ZIL |
| zkSync | zksync | ETH |
Tek Varlık Taraması
Bu ağlar bireysel adres/işlem taramasını destekler:
| Ağ | Sembol | Yerel Varlık |
|---|---|---|
| Bitcoin Cash | bch | BCH |
| Horizen | zen | ZEN |
| ZCash | zec | ZEC |
Sağlayıcı ve Ağ Uyumluluğu
provider: "elliptic" kullanıldığında — Bütünsel ve Tek Varlık tablolarındaki tüm ağlar kullanılabilir (47 ağ). Desteklenmeyen bir ağ iletildiğinde, API 4001 hata kodunu döndürür.
Notlar
- Fiyatlandırma: Elliptic — kontrol başına 0,98 ABD doları. Fiyatlar güncel kur üzerinden TRX cinsinden gösterilir
- Eşzamanlılık zaman aşımı:
wait: true15 saniyeye kadar bekler. Kontrol daha uzun sürersependingdurumunu döndürür - İşlem süresi: Çoğu kontrol birkaç saniye içinde tamamlanır. Bununla birlikte, bazı isteklerin (özellikle karmaşık işlem geçmişine sahip adresler için) işlenmesi 3 dakikaya kadar sürebilir. Bu gibi durumlar için asenkron modu kullanın (
waitparametresini atlayın veyawait: falseolarak ayarlayın) ve GET /apiv2/aml/{order_id} üzerinden sorgulama yapın - Aktif olmayan adresler: Blokzincir faaliyeti bulunmayan adresler ücretsiz olarak
skippeddurumunu döndürür