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

GET /apiv2/screening/history ​

Lịch sử kiểm tra của bạn, mới nhất trước, có phân trang bằng con trỏ (cursor).

URL endpoint ​

GET https://netts.io/apiv2/screening/history

Header yêu cầu ​

HeaderBắt buộcMô tả
X-API-KEYCóKhóa API của bạn từ bảng điều khiển Netts

Tham số truy vấn ​

Tất cả các bộ lọc đều là tùy chọn. Nếu không có bộ lọc nào, bạn sẽ nhận được toàn bộ lịch sử của mình.

Tham sốLoạiMặc địnhMô tả
addressstring—Địa chỉ chính xác, 10–128 ký tự
networkstring—Mã mạng (ticker)
providerstring—elliptic hoặc bitok
statusstring—pending, processing, completed, skipped, failed
fromstring—Chỉ các lượt kiểm tra được tạo tại hoặc sau thời điểm này, RFC 3339
tostring—Chỉ các lượt kiểm tra được tạo tại hoặc trước thời điểm này, RFC 3339
cursorstring—Vị trí để tiếp tục. Lấy từ next_cursor
limitinteger50Số lượng mục trên mỗi trang, 1 đến 200

Các lượt kiểm tra có trạng thái skipped được bao gồm. Một lượt kiểm tra bị bỏ qua (skipped) là một đơn hàng thực sự — địa chỉ không có hoạt động blockchain nào, vì vậy nó không bao giờ được gửi tới nhà cung cấp và không bao giờ bị tính phí — và nó thuộc về lịch sử.

Yêu cầu mẫu ​

cURL ​

bash
curl "https://netts.io/apiv2/screening/history?limit=50" \
  -H "X-API-KEY: your_api_key"

Python — duyệt qua toàn bộ lịch sử ​

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

Giữ nguyên các bộ lọc trong khi phân trang. Thay đổi một bộ lọc trong khi vẫn giữ nguyên con trỏ cũ là một lỗi, chứ không phải là một sự chuyển đổi âm thầm sang một tập dữ liệu khác.

Phản hồi ​

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
}
TrườngLoạiMô tả
itemsarrayTrang dữ liệu, mới nhất trước
next_cursorstring | nullTruyền lại giá trị này để lấy trang tiếp theo. null nghĩa là bạn đã đến cuối
limitintegerGiới hạn đã được áp dụng

Dạng rút gọn của một mục ​

Các khối order, request, check và risk hoàn toàn giống với các khối trong phản hồi đầy đủ của GET /apiv2/screening/{client_order_id}, từng trường một, do đó cùng một trình phân tích cú pháp có thể xử lý cả hai.

Những phần được bỏ qua: provider_data, exposure[], rules[], entities[], wallet, billing, precheck, và khối sanctions đầy đủ. Một kết quả Elliptic đơn lẻ có dung lượng khoảng 150 KB, và một trang gồm năm mươi kết quả sẽ là bảy megabyte. Hãy lấy từng lượt kiểm tra riêng lẻ khi bạn cần thông tin chi tiết.

sanctions.verdict ​

Phân tích lệnh trừng phạt được nén thành một từ.

Giá trịÝ nghĩa
listedBản thân địa chỉ nằm trong danh sách trừng phạt
linkedĐã tìm thấy mối liên kết trừng phạt, nhưng bản thân địa chỉ không nằm trong danh sách
nonePhân tích đã chạy và không tìm thấy gì
nullChưa có kết quả để phân tích

Sự khác biệt giữa listed và linked chính là mục đích của trường này — xem Trừng phạt trong kết quả AML.

Phân trang ​

Một con trỏ (cursor) trỏ vào một vị trí cụ thể trong tập dữ liệu thay vì số thứ tự của nó, do đó các lượt kiểm tra mới xuất hiện trong quá trình duyệt sẽ không làm xáo trộn kết quả.

  • thứ tự là created_at DESC, id DESC. Cả hai trường đều nằm trong con trỏ, bởi vì created_at không phải là duy nhất — hai lượt kiểm tra được tạo trong cùng một micro giây nếu không sẽ bị lặp lại hoặc bị bỏ qua;
  • con trỏ là mờ đục (opaque). Nội dung của nó là chi tiết triển khai; hãy truyền lại chính xác như khi bạn nhận được;
  • các bộ lọc là một phần của con trỏ. Việc thay đổi một bộ lọc trong khi tái sử dụng con trỏ sẽ trả về 400, chứ không phải là sự chuyển đổi âm thầm sang một tập dữ liệu khác — nếu không bạn sẽ tin rằng mình đã đọc một tập dữ liệu mà bạn chưa từng đọc;
  • next_cursor: null biểu thị điểm kết thúc. Không có tổng số lượng: việc đếm toàn bộ tập dữ liệu trên mỗi trang gây tốn kém hơn nhiều so với giá trị thông tin nó mang lại.

Lỗi ​

RFC 9457, application/problem+json. Danh sách mã đầy đủ có trên trang POST.

MãHTTPKhi nào
4001400limit ngoài phạm vi 1…200, network, provider hoặc status không xác định, from/to không đúng định dạng RFC 3339, con trỏ bị lỗi cú pháp, hoặc con trỏ được phát hành cho các bộ lọc khác
4010 / 4011401Không có API key, hoặc khóa hay IP không được chấp nhận
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
}

Giới hạn tốc độ ​

Được chia sẻ với mọi đường dẫn AML khác: 5 yêu cầu mỗi giây, 150 yêu cầu mỗi phút. Với limit=200, toàn bộ lịch sử gồm mười nghìn lượt kiểm tra chỉ mất năm mươi yêu cầu.