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

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/history

Header Permintaan

HeaderWajibDeskripsi
X-API-KEYYaKunci API Anda dari dasbor Netts

Parameter Kueri

Semua filter bersifat opsional. Tanpa filter apa pun, Anda akan mendapatkan seluruh riwayat Anda.

ParameterTipeDefaultDeskripsi
addressstringAlamat persis, 10–128 karakter
networkstringTicker jaringan
providerstringelliptic atau bitok
statusstringpending, processing, completed, skipped, failed
fromstringHanya pemeriksaan yang dibuat pada atau setelah waktu ini, RFC 3339
tostringHanya pemeriksaan yang dibuat pada atau sebelum waktu ini, RFC 3339
cursorstringLokasi untuk melanjutkan. Ambil ini dari next_cursor
limitinteger50Item 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
}
BidangTipeDeskripsi
itemsarrayHalaman ini, yang terbaru terlebih dahulu
next_cursorstring | nullKirimkan kembali ini untuk mengambil halaman berikutnya. null berarti Anda telah mencapai bagian akhir
limitintegerBatas 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.

NilaiArti
listedAlamat itu sendiri berada dalam daftar sanksi
linkedTautan sanksi ditemukan, tetapi alamat itu sendiri tidak terdaftar
noneAnalisis telah berjalan dan tidak menemukan apa pun
nullBelum 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, karena created_at tidak 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: null berarti 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.

KodeHTTPKapan
4001400limit 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 / 4011401Tidak 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.