Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/aml

Digantikan oleh POST /apiv2/screening

POST /apiv2/screening adalah kontrak versi 2: satu bentuk respons untuk setiap penyedia dan setiap status pesanan, angka desimal sebagai string alih-alih angka JSON, pembagian dalam satu skala, dan satu format kesalahan tunggal. Endpoint ini tetap berfungsi dan tidak akan ditarik tanpa pemberitahuan.

Kirimkan alamat untuk penyaringan AML (Anti-Money Laundering). Mengembalikan skor risiko, tingkat risiko, dan analisis paparan terperinci.

Semua stempel waktu dalam respons adalah UTC. Format string tidak berubah — "2026-09-09 23:01:44", tanpa sufiks zona.

URL Endpoint

POST https://netts.io/apiv2/aml

Header Permintaan

HeaderDiperlukanDeskripsi
Content-TypeYaapplication/json
X-API-KEYYaKunci API Anda dari dasbor Netts

Body Permintaan

json
{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait": true
}

Parameter

ParameterTipeDiperlukanDeskripsi
addressstringYaAlamat blockchain yang akan diperiksa (10-100 karakter)
networkstringYaPengidentifikasi jaringan blockchain (lihat Jaringan yang Didukung di bawah)
providerstringTidakPenyedia AML: elliptic (default)
waitbooleanTidakJika true, tunggu hasil secara sinkron (hingga 15 detik). Jika false atau diabaikan, segera kembalikan status pending dan client_order_id — gunakan untuk memeriksa hasil secara berkala melalui GET /apiv2/aml/{order_id}
response_formatstringTidakTingkat detail respons: rate (hanya skor), full (default, data lengkap)
report_languagestringTidakBahasa untuk laporan: en (default)

Penyedia

PenyediaRentang SkorDeskripsi
elliptic0 — 10Skor risiko Elliptic. 0 = tidak ada risiko, 10 = risiko maksimum. null = tidak ada pemicu yang terdeteksi

Contoh Permintaan

cURL (sinkron)

bash
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 (asinkron)

bash
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

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}")

Respons

Berhasil — Menunda (200 OK)

Ketika wait tidak diatur atau pemeriksaan masih diproses:

json
{
    "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"
}

Berhasil — Elliptic Selesai (200 OK)

Respons Elliptic lengkap dengan semua struktur data:

json
{
    "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"
}

Bidang Respons

BidangTipeDeskripsi
data.client_order_idstringID pesanan unik untuk pengecekan status
data.statusstringpending, processing, completed, failed, skipped
data.risk_scorenumber | nullSkor risiko. Elliptic: 0-10. null = tidak ada pemicu
data.risk_levelstring | nullnone, low, medium, high atau severe. Elliptic mengembalikan low, medium, high; BitOK menambahkan none dan severe. null ketika penyedia tidak mendeteksi pemicu sama sekali
data.is_sanctionedbooleantrue jika paparan terhadap entitas yang dikenai sanksi terdeteksi. Tidak berubah sejak endpoint diluncurkan: ini tidak membedakan alamat yang dikenai sanksi dengan alamat yang sekadar terkait dengan entitas tersebut — lihat data.sanctions untuk itu
data.sanctionsobject | nullRincian temuan sanksi: apakah alamat itu sendiri terdaftar, seberapa dekat keterkaitannya, dan seberapa besar. Lihat Sanksi
data.resultobjectRespons lengkap penyedia (jika response_format=full)

Sanksi

is_sanctioned adalah nilai boolean tunggal, dan menyatakan true dalam dua situasi yang sangat berbeda: alamat yang diperiksa itu sendiri berada dalam daftar sanksi, atau alamat yang diperiksa pernah menerima sebagian kecil persen melalui dua perantara dari pihak yang terkena sanksi. Flag ini tetap mempertahankan arti aslinya untuk kompatibilitas mundur; data.sanctions membedakan kedua kasus tersebut.

BidangTipeDeskripsi
sanctions.selfbooleantrue ketika alamat yang diperiksa itu sendiri merupakan entitas yang dikenai sanksi
sanctions.self_entitiesarray | nullNama-nama entitas sanksinya sendiri, ketika self bernilai true
sanctions.exposureobject | nullKeterkaitan sanksi tunggal terbesar — apa yang ditampilkan dalam ringkasan
sanctions.exposure.sharenumberPorsi dana yang terlibat, dalam persen (8.03 berarti 8,03%)
sanctions.exposure.proximitystringscreened_address, counterparty, indirect atau mixed
sanctions.exposure.hopsnumber | nullJumlah hop transaksi minimum ke entitas yang dikenai sanksi
sanctions.exposure.entitystring | nullNama entitas yang dikenai sanksi, termasuk daftar dan tanggalnya
sanctions.exposure.directionstring | nullsource untuk dana masuk, destination untuk dana keluar
sanctions.itemsarraySetiap kontribusi sanksi, porsi terbesar terlebih dahulu, bidang yang sama dengan exposure ditambah counterparty_share, indirect_share, value_usd, dan trigger
sanctions.relatedarray | nullKhusus BitOK: paparan terhadap bursa di bawah sanksi UE atau Inggris, dipisahkan dari daftar sanksi itu sendiri

Kedekatan mencerminkan kolom Closest Proximity pada laporan Elliptic:

NilaiArti
screened_addressAlamat yang diperiksa merupakan pemicu itu sendiri, bukan rekanan
counterpartyRekanan langsung dari alamat yang diperiksa
indirectDijangkau melalui perantara — lihat hops
mixedAliran langsung dan tidak langsung ke entitas yang sama

Sebuah kontribusi dihitung sebagai keterkaitan sanksi hanya jika penyedia menandainya demikian — risk_triggers.is_sanctioned untuk Elliptic, kategori sanctions untuk BitOK. Aturan Elliptic bernama Sanctioned, TF & CSAM juga aktif pada pemicu negara dan kategori, sehingga nama aturan saja bukanlah keputusan sanksi.

Objek result Elliptic

BidangTipeDeskripsi
risk_scorenumberSkor risiko presisi (0-10)
risk_score_detailobjectRincian: skor source dan destination
contributionsobjectLarik source dan destination dari kontributor aliran dana
contributions[].entitiesarrayEntitas yang diketahui terkait dengan kontribusi
contributions[].entities[].namestringNama entitas (mis. "Binance", "KuCoin")
contributions[].entities[].categorystringTipe entitas (mis. "Exchange", "Payment Services Provider")
contributions[].entities[].is_vaspboolean | nullApakah entitas tersebut adalah Penyedia Layanan Aset Virtual (VASP)
contributions[].contribution_value.usdnumberTotal volume USD dari kontribusi
contributions[].contribution_percentagenumberPersentase total dana dari entitas ini
contributions[].indirect_value.usdnumberVolume USD yang diterima secara tidak langsung (melalui perantara)
contributions[].indirect_percentagenumberPersentase dana yang diterima secara tidak langsung
contributions[].counterparty_value.usdnumberVolume USD sebagai rekanan langsung
contributions[].counterparty_percentagenumberPersentase sebagai rekanan langsung
contributions[].min_number_of_hopsnumberHop transaksi minimum dari entitas (0 = langsung)
contributions[].is_screened_addressbooleantrue jika ini adalah alamat yang diperiksa itu sendiri
cluster_entitiesarrayEntitas yang diketahui terkait langsung dengan kluster alamat
cluster_entities[].namestringNama entitas
cluster_entities[].categorystringKategori entitas
cluster_entities[].is_vaspboolean | nullStatus VASP
cluster_entities[].is_after_sanction_datebooleantrue jika aktivitas terjadi setelah entitas dikenai sanksi
evaluation_detailobjectLarik source dan destination dari aturan risiko yang terpicu
evaluation_detail[].rule_namestringNama aturan (mis. "Sanctions", "Illicit Activity", "Obfuscating & Misc.")
evaluation_detail[].rule_typestringTipe aturan (mis. "exposure")
evaluation_detail[].risk_scorenumberKontribusi skor risiko dari aturan ini
evaluation_detail[].matched_elementsarrayKategori dan entitas yang memicu aturan
evaluation_detail[].matched_elements[].categorystringKategori risiko (mis. "Sanctioned Entity", "Gambling", "Token Blacklisting")
evaluation_detail[].matched_elements[].contributionsarrayEntitas dalam kategori yang cocok
evaluation_detail[].matched_elements[].contributions[].entitystringNama entitas
evaluation_detail[].matched_elements[].contributions[].contribution_percentagenumberPersentase paparan
evaluation_detail[].matched_elements[].contributions[].min_number_of_hopsnumberHop transaksi
evaluation_detail[].matched_elements[].contributions[].is_screened_addressbooleantrue ketika alamat yang diperiksa itu sendiri memicu aturan
evaluation_detail[].matched_elements[].contributions[].risk_triggersobjectAlasan aturan aktif: is_sanctioned untuk daftar sanksi, country untuk yurisdiksi, category untuk tipe entitas
evaluation_detail[].matched_behaviorsarrayPola perilaku yang terdeteksi
detected_behaviorsarrayPola perilaku global yang terdeteksi pada alamat

Tingkat Risiko

Elliptic (skala 0-10):

RentangTingkatDeskripsi
0 — 3lowRisiko minimal. Tidak ada paparan signifikan
3 — 7mediumRisiko moderat. Beberapa kategori berisiko terdeteksi
7 — 10highRisiko tinggi. Entitas terkena sanksi, terlarang, atau berisiko tinggi
null-Tidak ada pemicu risiko yang terdeteksi

BitOK (skala 0-1): penyedia mengembalikan tingkat itu sendiri — none, low, medium, high, atau severe.

risk_level adalah keputusan tunggal yang digunakan di mana saja: respons API, dasbor, dan laporan PDF semuanya mencetak kata yang sama untuk pemeriksaan yang sama.

Respons Kesalahan

Kesalahan Autentikasi (401)

json
{
    "detail": {
        "code": -1,
        "msg": "API key not provided"
    }
}

Kesalahan Validasi (400)

json
{
    "success": false,
    "error": {
        "code": 4001,
        "msg": "Invalid or missing address"
    }
}
json
{
    "success": false,
    "error": {
        "code": 4002,
        "msg": "Invalid provider. Use: elliptic"
    }
}

Saldo Tidak Mencukupi (402)

json
{
    "success": false,
    "error": {
        "code": 4020,
        "message": "Insufficient balance"
    },
    "timestamp": "2026-03-10 10:00:00"
}

Penyedia Tidak Tersedia (503)

json
{
    "success": false,
    "error": {
        "code": 5030,
        "message": "Provider elliptic not available"
    },
    "timestamp": "2026-03-10 10:00:00"
}

Referensi Kode Kesalahan

KodeDeskripsiStatus HTTP
-1Autentikasi gagal401
4001Alamat tidak valid atau hilang400
4002Penyedia tidak valid400
4020Saldo tidak mencukupi402
5030Penyedia tidak tersedia503

Batas Laju

Batas laju berikut berlaku untuk semua endpoint AML (per alamat IP):

PeriodeBatasDeskripsi
1 detik2 permintaanMaksimum 2 permintaan per detik
1 menit30 permintaanMaksimum 30 permintaan per menit

Batas Laju Terlampaui (429)

json
{
    "message": "API rate limit exceeded"
}

Tembolok Hasil

Jika kombinasi alamat + penyedia yang sama diperiksa dalam 60 detik terakhir, hasil yang tersimpan dalam tembolok akan dikembalikan tanpa biaya.

Jaringan yang Didukung

Parameter network diperlukan. Gunakan ticker dari tabel di bawah.

Elliptic — Penyaringan Menyeluruh (Holistic Screening)

Penyaringan dilakukan untuk alamat tertentu pada jaringan tertentu. Namun, Elliptic melacak semua aset yang terkait dengan alamat tersebut — termasuk token, transfer lintas rantai, dan interaksi dengan entitas yang dikenal di seluruh jaringan lain.

JaringanTickerAset Asli
AlgorandalgoALGO
AptosaptAPT
ArbitrumarbETH
Avalanche (C-Chain)avaxAVAX
BasebaseETH
Binance ChainbnbBNB
Binance Smart ChainbscBNB
BitcoinbtcBTC
BittensortaoTAO
CardanoadaADA
CeloceloCELO
CosmosatomATOM
Crypto.comcroCRO
DogecoindogeDOGE
dYdXdydxDYDX
EthereumethETH
Ethereum ClassicetcETC
FantomftmFTM
FilecoinfilFIL
FlareflrFLR
GnosisgnosisxDai
HederahbarHBAR
HyperEVMhypeHYPE
InjectiveinjINJ
Internet ComputericpICP
LinealineaLINEA
LitecoinltcLTC
MobileCoinmobMOB
NearnearNEAR
OptimismopETH
PolkadotdotDOT
PolygonmaticMATIC
RipplexrpXRP
SeiseiSEI
SolanasolSOL
StarknetstrkSTRK
StellarxlmXLM
SuisuiSUI
TezosxtzXTZ
TONtonTON
TrontrxTRX
XDCxdcXDC
XLayerokbOKB
ZilliqazilZIL
zkSynczksyncETH

Penyaringan Aset Tunggal

Jaringan berikut mendukung penyaringan alamat/transaksi individual:

JaringanTickerAset Asli
Bitcoin CashbchBCH
HorizenzenZEN
ZCashzecZEC

Kompatibilitas Penyedia & Jaringan

Saat menggunakan provider: "elliptic" — semua jaringan dari tabel Penyaringan Menyeluruh dan Aset Tunggal tersedia (47 jaringan). Jika jaringan yang tidak didukung diteruskan, API mengembalikan kode kesalahan 4001.

Catatan

  • Penetapan Harga: Elliptic — $0,98 per pemeriksaan. Harga ditampilkan dalam TRX pada kurs saat ini
  • Batas Waktu Sinkronisasi: wait: true menunggu hingga 15 detik. Jika pemeriksaan memakan waktu lebih lama, mengembalikan status pending
  • Waktu Pemrosesan: Sebagian besar pemeriksaan selesai dalam beberapa detik. Namun, beberapa permintaan (terutama untuk alamat dengan riwayat transaksi yang rumit) mungkin memerlukan waktu hingga 3 menit untuk diproses. Gunakan mode asinkron (abaikan wait atau atur wait: false) dan lakukan polling melalui GET /apiv2/aml/{order_id} untuk kasus seperti ini
  • Alamat Tidak Aktif: Alamat tanpa aktivitas blockchain mengembalikan status skipped tanpa biaya