Appearance
GET /apiv2/screening/history
Riwayat screening Anda, yang terbaru terlebih dahulu, dengan paginasi kursor.
Ini adalah kontrak versi 2. Kontrak ini menggantikan GET /apiv2/aml/history, yang tetap berfungsi.
URL Endpoint
GET https://netts.io/apiv2/screening/historyHeader Permintaan
| Header | Wajib | Deskripsi |
|---|---|---|
| X-API-KEY | Ya | Kunci API Anda dari dasbor Netts |
Parameter Kueri
Semua filter bersifat opsional. Tanpa filter apa pun, Anda akan mendapatkan seluruh riwayat Anda.
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
| address | string | — | Alamat persis, 10–128 karakter |
| network | string | — | Ticker jaringan |
| provider | string | — | elliptic atau bitok |
| status | string | — | pending, processing, completed, skipped, failed |
| from | string | — | Hanya pemeriksaan yang dibuat pada atau setelah waktu ini, RFC 3339 |
| to | string | — | Hanya pemeriksaan yang dibuat pada atau sebelum waktu ini, RFC 3339 |
| cursor | string | — | Lokasi untuk melanjutkan. Ambil ini dari next_cursor |
| limit | integer | 50 | Item per halaman, 1 hingga 200 |
Pada versi 1 address dan network keduanya wajib diisi, sehingga tidak ada cara untuk menanyakan "apa yang telah saya periksa baru-baru ini".
Pemeriksaan dengan status skipped disertakan. Versi 1 menyembunyikannya. Pemeriksaan yang dilewati adalah pesanan nyata — alamat tersebut tidak memiliki aktivitas blockchain, sehingga tidak pernah dikirim ke penyedia dan tidak pernah ditagih — dan pesanan ini berhak berada dalam riwayat.
Examples Permintaan
cURL
bash
curl "https://netts.io/apiv2/screening/history?limit=50" \
-H "X-API-KEY: your_api_key"Python — menelusuri seluruh riwayat
python
import requests
headers = {"X-API-KEY": "your_api_key"}
params = {"limit": 200, "provider": "elliptic"}
while True:
page = requests.get("https://netts.io/apiv2/screening/history",
headers=headers, params=params).json()
for item in page["items"]:
print(item["order"]["client_order_id"],
item["order"]["status"],
item["risk"]["level"],
item["sanctions"]["verdict"])
if not page["next_cursor"]:
break
params = {"limit": 200, "provider": "elliptic", "cursor": page["next_cursor"]}Pertahankan filter tetap identik selama melakukan paginasi. Mengubah salah satu filter saat membawa kursor yang sama akan menghasilkan error, bukan beralih secara diam-diam ke kumpulan data yang berbeda.
Respons
json
{
"schema_version": 2,
"items": [
{
"order": {
"client_order_id": "A6F3221BAAE093A",
"status": "completed",
"api_version": "v2",
"cache_hit": false,
"created_at": "2026-09-13T08:24:19.838584Z",
"started_at": "2026-09-13T08:24:20.998619Z",
"completed_at": "2026-09-13T08:24:25.179967Z"
},
"request": {
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic"
},
"check": {
"provider": "elliptic",
"provider_check_id": "1cc2fd64-1483-4ce3-946f-23a614f41a12",
"checked_at": "2026-09-13T08:24:22.372000Z",
"status": "completed",
"provider_status": "complete"
},
"risk": {
"score": "0.12428176721891304",
"scale": { "min": 0, "max": 10 },
"level": "low",
"level_source": "computed",
"provider_level": null,
"policy": "netts-risk-v1",
"by_direction": { "source": "0.12428176721891304", "destination": null }
},
"sanctions": { "verdict": "linked" }
}
],
"next_cursor": "eyJmIjp7InN0YXR1cyI6ImNvbXBsZXRlZCJ9LCJpIjoxMzQyNywidCI6...",
"limit": 1
}| Bidang | Tipe | Deskripsi |
|---|---|---|
| items | array | Halaman ini, yang terbaru terlebih dahulu |
| next_cursor | string | null | Kirimkan kembali ini untuk mengambil halaman berikutnya. null berarti Anda telah mencapai bagian akhir |
| limit | integer | Batas yang diterapkan |
Bentuk ringkas dari sebuah item
Blok order, request, check, dan risk adalah identik dengan yang ada pada respons lengkap dari GET /apiv2/screening/{client_order_id}, bidang demi bidang, sehingga parser yang sama dapat menangani keduanya.
Apa yang dihilangkan: provider_data, exposure[], rules[], entities[], wallet, billing, precheck, dan blok sanctions lengkap. Satu hasil Elliptic berukuran sekitar 150 KB, dan satu halaman berisi lima puluh hasil akan berukuran tujuh megabita. Ambil satu pemeriksaan saat Anda memerlukan detailnya.
sanctions.verdict
Analisis sanksi yang dipadatkan menjadi satu kata.
| Nilai | Arti |
|---|---|
listed | Alamat itu sendiri berada dalam daftar sanksi |
linked | Tautan sanksi ditemukan, tetapi alamat itu sendiri tidak terdaftar |
none | Analisis telah berjalan dan tidak menemukan apa pun |
null | Belum ada hasil untuk dianalisis |
Perbedaan antara listed dan linked adalah tujuan dari bidang ini — lihat Sanksi dalam hasil AML.
Paginasi
Versi 1 membagi halaman berdasarkan angka: ?page=2, 100 per halaman. Urutannya berdasarkan waktu pembuatan, yang terbaru terlebih dahulu, sehingga saat Anda beralih dari halaman 1 ke halaman 2, pemeriksaan baru dapat masuk dan menggeser semuanya ke bawah. Catatan yang sudah Anda lihat akan muncul kembali, catatan yang belum Anda lihat akan terlewatkan. Pada akun yang sibuk, ini bukan kasus yang jarang terjadi.
Kursor menunjuk ke suatu lokasi dalam kumpulan data daripada ke nomor urutnya, sehingga pemeriksaan baru yang masuk selama penelusuran tidak akan mengganggunya.
- urutannya adalah
created_at DESC, id DESC. Kedua bidang berada di dalam kursor, karenacreated_attidak unik — dua pemeriksaan yang dibuat pada mikrodetik yang sama jika tidak akan mengalami perulangan (loop) atau terlewati; - kursor bersifat buram (opaque). Isinya adalah detail implementasi; kirimkan kembali persis seperti yang Anda terima;
- filter adalah bagian dari kursor. Mengubah salah satunya saat menggunakan kembali kursor akan mengembalikan
400, bukan beralih secara diam-diam ke kumpulan data yang berbeda — jika tidak, Anda akan mengira telah membaca kumpulan data yang sebenarnya tidak pernah Anda baca; next_cursor: nullberarti akhir data. Tidak ada jumlah total: menghitung seluruh kumpulan data pada setiap halaman memakan biaya lebih besar daripada informasi yang diberikannya.
Respons Kesalahan
RFC 9457, application/problem+json. Daftar kode lengkap ada di halaman POST.
| Kode | HTTP | Kapan |
|---|---|---|
4001 | 400 | limit di luar rentang 1…200, network, provider, atau status tidak dikenal, from/to bukan RFC 3339, kursor salah format, atau kursor diterbitkan untuk filter yang berbeda |
4010 / 4011 | 401 | Tidak ada kunci API, atau kunci maupun IP tidak diterima |
json
{
"type": "https://doc.netts.io/api/v2/errors/validation-failed",
"title": "Request validation failed",
"status": 400,
"detail": "Cursor was issued for a different set of filters",
"instance": "/apiv2/screening/history",
"code": 4001
}Batas Frekuensi
Berbagi batas dengan setiap jalur AML lainnya: 5 permintaan per detik, 150 per menit. Dengan limit=200, seluruh riwayat sebanyak sepuluh ribu pemeriksaan hanya membutuhkan lima puluh permintaan.