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

GET /apiv2/screening/history

ประวัติการตรวจสอบของคุณ เรียงจากใหม่สุดไปเก่าสุด พร้อมระบบแบ่งหน้าแบบเคอร์เซอร์ (cursor pagination)

นี่คือสัญญาข้อกำหนดเวอร์ชัน 2 ซึ่งเข้ามาแทนที่ GET /apiv2/aml/history โดยที่เอนด์พอยต์เดิมยังคงใช้งานได้อยู่

URL ของ Endpoint

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

Headers ของคำขอ

HeaderRequiredDescription
X-API-KEYใช่คีย์ API ของคุณจากแดชบอร์ด Netts

Query พารามิเตอร์

ตัวกรองทั้งหมดเป็นแบบระบุหรือไม่ก็ได้ หากไม่ระบุตัวกรองใดเลย คุณจะได้รับประวัติทั้งหมดของคุณ

ParameterTypeDefaultDescription
addressstringที่อยู่อย่างแน่นอน ความยาว 10–128 ตัวอักษร
networkstringทิกเกอร์ของเครือข่าย
providerstringelliptic หรือ bitok
statusstringpending, processing, completed, skipped, failed
fromstringเฉพาะรายการตรวจสอบที่สร้างขึ้น ณ หรือหลังช่วงเวลานี้ ตามมาตรฐาน RFC 3339
tostringเฉพาะรายการตรวจสอบที่สร้างขึ้น ณ หรือก่อนช่วงเวลานี้ ตามมาตรฐาน RFC 3339
cursorstringจุดที่ต้องการเริ่มดึงข้อมูลต่อ ให้นำมาจาก next_cursor
limitinteger50จำนวนรายการต่อหน้า ระหว่าง 1 ถึง 200

ในเวอร์ชัน 1 พารามิเตอร์ address และ network จำเป็นต้องระบุทั้งคู่ จึงไม่มีวิธีที่จะ สอบถามว่า "ช่วงนี้ฉันได้ตรวจสอบอะไรไปบ้าง"

รายการตรวจสอบที่มีสถานะ skipped จะรวมอยู่ด้วย เวอร์ชัน 1 จะซ่อนรายการเหล่านี้ไว้ รายการที่ถูกข้าม (skipped) ถือเป็นคำสั่งจริง — ที่อยู่ดังกล่าวไม่มีกิจกรรมบนบล็อกเชน จึงไม่เคยถูกส่ง ไปยังผู้ให้บริการและไม่มีการคิดค่าบริการ — และถือเป็นส่วนหนึ่งของประวัติ

ตัวอย่าง

cURL

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

Python — ดึงประวัติทั้งหมดแบบต่อเนื่อง

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

คงตัวกรองให้เหมือนเดิมทุกประการขณะเลื่อนหน้า การเปลี่ยนตัวกรองในขณะที่ใช้เคอร์เซอร์เดิม จะถือเป็นข้อผิดพลาด ไม่ใช่การเปลี่ยนชุดข้อมูลโดยอัตโนมัติ

การตอบกลับ

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
}
FieldTypeDescription
itemsarrayข้อมูลในหน้านี้ เรียงจากใหม่สุดไปเก่าสุด
next_cursorstring | nullส่งค่านี้กลับมาเพื่อดึงหน้าถัดไป ค่า null หมายความว่าคุณมาถึงจุดสิ้นสุดแล้ว
limitintegerขีดจำกัดจำนวนรายการที่ถูกนำมาใช้

รูปแบบย่อของแต่ละรายการ

บล็อก order, request, check และ risk มีความเหมือนกันกับบล็อกที่อยู่ในคำตอบแบบเต็ม ของ GET /apiv2/screening/{client_order_id} ฟิลด์ต่อฟิลด์ ดังนั้นตัวแยกวิเคราะห์ (parser) ชุดเดียวกันจึงสามารถประมวลผลได้ทั้งสองแบบ

สิ่งที่ตัดออกไปได้แก่: provider_data, exposure[], rules[], entities[], wallet, billing, precheck และบล็อก sanctions แบบเต็ม ผลลัพธ์ของ Elliptic เพียงรายการเดียว มีขนาดประมาณ 150 KB และหนึ่งหน้าที่มี 50 รายการจะมีขนาดถึง 7 เมกะไบต์ ให้ดึงข้อมูลรายการตรวจสอบเดี่ยวเมื่อคุณต้องการดูรายละเอียด

sanctions.verdict

ผลการวิเคราะห์การคว่ำบาตรที่สรุปให้เหลือคำเดียว

ValueMeaning
listedที่อยู่นี้อยู่ในรายชื่อการคว่ำบาตรโดยตรง
linkedพบความเชื่อมโยงกับการคว่ำบาตร แต่ตัวที่อยู่ไม่ได้อยู่ในรายชื่อคว่ำบาตรโดยตรง
noneการวิเคราะห์ทำงานแล้วและไม่พบสิ่งใด
nullยังไม่มีผลลัพธ์ที่จะนำมาวิเคราะห์

ความแตกต่างระหว่าง listed และ linked คือประเด็นสำคัญของฟิลด์นี้ — ดูที่ การคว่ำบาตรในผลลัพธ์ AML

การแบ่งหน้า

เวอร์ชัน 1 แบ่งหน้าด้วยหมายเลขหน้า: ?page=2, 100 รายการต่อหน้า โดยเรียงตามเวลา ที่สร้าง จากใหม่สุดไปเก่าสุด ดังนั้นในขณะที่คุณกำลังเลื่อนจากหน้า 1 ไปยังหน้า 2 รายการตรวจสอบใหม่ๆ จะเข้ามาและดันข้อมูลทั้งหมดลงไป รายการที่คุณเคยเห็นแล้วจะปรากฏขึ้นมาใหม่อีกครั้ง และรายการที่คุณ ยังไม่เคยเห็นก็จะเลื่อนผ่านคุณไป สำหรับบัญชีที่มีการใช้งานสูง นี่ไม่ใช่กรณีที่เกิดขึ้นได้ยากเลย

เคอร์เซอร์จะชี้ไปที่ตำแหน่งของข้อมูลในชุดข้อมูลนั้นแทนที่จะชี้ไปที่หมายเลขลำดับของมัน ดังนั้น รายการตรวจสอบใหม่ที่เข้ามาในระหว่างที่คุณกำลังไล่ดูข้อมูลจึงไม่กระทบต่อการทำงาน

  • การจัดเรียงคือ created_at DESC, id DESC ทั้งสองฟิลด์จะรวมอยู่ในเคอร์เซอร์ เนื่องจาก created_at ไม่ได้มีค่าที่ไม่ซ้ำกันเสมอไป — หากมีสองรายการตรวจสอบที่สร้างขึ้นในไมโครวินาที เดียวกัน อาจทำให้เกิดการวนซ้ำหรือข้ามข้อมูลได้;
  • เคอร์เซอร์เป็นแบบ ทึบแสง (opaque) เนื้อหาภายในเป็นรายละเอียดเชิงการใช้งานภายใน โปรดส่งค่ากลับมาตามที่ได้รับไปทุกประการ;
  • ตัวกรองจะรวมอยู่ในเคอร์เซอร์ด้วย การเปลี่ยนตัวกรองในขณะที่นำเคอร์เซอร์กลับมาใช้ใหม่ จะส่งกลับรหัส 400 ไม่ใช่การสลับไปยังชุดข้อมูลอื่นโดยไม่มีการแจ้งเตือน — มิฉะนั้นคุณอาจเข้าใจผิด ว่าตนเองได้อ่านชุดข้อมูลที่คุณไม่เคยอ่านจริงๆ;
  • next_cursor: null หมายถึงสิ้นสุดข้อมูลแล้ว ไม่มีการบอกจำนวนรวมทั้งหมด: การนับข้อมูล ทั้งชุดในทุกๆ หน้าต้องใช้ทรัพยากรสูงเกินกว่าประโยชน์ที่ได้รับ

การตอบกลับข้อผิดพลาด

RFC 9457, application/problem+json รายการรหัสทั้งหมดอยู่ที่ หน้า POST

CodeHTTPWhen
4001400ค่า limit อยู่นอกช่วง 1…200, network, provider หรือ status ไม่ถูกต้อง, ค่า from/to ไม่เป็นไปตาม RFC 3339, รูปแบบเคอร์เซอร์ไม่ถูกต้อง หรือเคอร์เซอร์ถูกออกให้สำหรับตัวกรองชุดอื่น
4010 / 4011401ไม่มีคีย์ API หรือคีย์หรือ IP ไม่ได้รับการยอมรับ
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
}

การจำกัดอัตราการส่งคำขอ

ใช้งานร่วมกับทุกเส้นทาง AML อื่นๆ: 5 คำขอต่อวินาที, 150 คำขอต่อนาที หากใช้ limit=200 ประวัติทั้งหมดจำนวน 10,000 รายการจะใช้เพียง 50 คำขอ