Skip to content
This translation is behind the English original, updated 2026-09-15. Read the English version for the current text.

POST /apiv2/screening

สั่งการตรวจสอบ AML สำหรับที่อยู่บล็อกเชน นี่คือสัญญาเวอร์ชัน 2: รูปแบบการตอบกลับรูปแบบเดียวสำหรับทุกผู้ให้บริการและทุกสถานะของคำสั่งซื้อ, ตัวเลขทศนิยมในรูปแบบสตริง, และรูปแบบข้อผิดพลาดรูปแบบเดียว

ส่วนนี้มาแทนที่ POST /apiv2/aml ซึ่งยังคงใช้งานได้ต่อไปและจะไม่มีการยกเลิกโดยไม่แจ้งให้ทราบล่วงหน้า

URL ของ Endpoint

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

Headers ของคำขอ

ส่วนหัวจำเป็นคำอธิบาย
Content-Typeใช่application/json
X-API-KEYใช่คีย์ API ของคุณจากแดชบอร์ด Netts
X-Idempotency-Keyไม่คีย์ของคุณเองสำหรับการลองใหม่ได้อย่างปลอดภัย ดูที่ การทำงานแบบ Idempotency

เนื้อหาของคำขอ

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

พารามิเตอร์

พารามิเตอร์ชนิดจำเป็นคำอธิบาย
addressstringใช่ที่อยู่ที่ต้องการตรวจสอบ, ความยาว 10–128 ตัวอักษร
networkstringใช่ทิกเกอร์เครือข่าย โดยทิกเกอร์ที่ผู้ให้บริการแต่ละรายครอบคลุมจะแสดงไว้ที่ GET /apiv2/screening/providers; ตารางเครือข่ายแบบเต็มพร้อมชื่อสามารถดูได้ที่ ที่นี่
providerstringใช่elliptic หรือ bitok ไม่มีค่าเริ่มต้น
wait_for_resultbooleanไม่true จะรอผลลัพธ์นานสูงสุด 15 วินาที ค่าเริ่มต้นคือ false
languagestringไม่ภาษาของรายงาน รองรับเฉพาะ en

ฟิลด์ที่ไม่รู้จักจะถูกปฏิเสธ Body ที่มีฟิลด์ที่ไม่ได้อยู่ในตารางข้างต้นจะส่งคืนรหัส 400 พร้อมโค้ด 4001 ในเวอร์ชัน 1 ฟิลด์ที่ไม่รู้จักจะถูกละเว้นไปโดยไม่มีการแจ้งเตือน และการสะกดคำว่า wait ผิดหมายความว่าผู้เรียกจะรอผลลัพธ์ที่ไม่มีวันส่งมาแบบ synchronous

provider เป็นฟิลด์ที่จำเป็นและไม่มีค่าเริ่มต้น ในเวอร์ชัน 1 การเว้นว่าง provider ไว้จะหมายถึง Elliptic ทำให้ผู้เรียกที่ไม่ได้เลือกต้องจ่ายเงินสำหรับผู้ให้บริการที่ตนไม่ได้ระบุชื่อไว้

provider เป็นสตริงรูปแบบอิสระใน schema ไม่ใช่แบบ enumeration ในปัจจุบันรองรับอยู่สองค่า การเพิ่มผู้ให้บริการรายที่สามจะต้องไม่เป็นการเปลี่ยนแปลงที่ทำให้ระบบเดิมพัง (breaking change) สำหรับผู้ที่ตรวจสอบความถูกต้องของการตอบกลับเทียบกับ schema รายการปัจจุบัน, เครือข่ายที่ผู้ให้บริการแต่ละรายครอบคลุม และสเกลการให้คะแนนของแต่ละรายสามารถเรียกดูได้จาก GET /apiv2/screening/providers

ตัวอย่าง Request

cURL — รอผลลัพธ์

bash
curl -X POST https://netts.io/apiv2/screening \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -d '{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait_for_result": true
  }'

cURL — ยอมรับและรอตรวจสอบสถานะ (poll)

bash
curl -X POST https://netts.io/apiv2/screening \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -d '{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "bitok"
  }'

การตอบกลับจะเป็น 202 Accepted พร้อมส่วนหัว Location ที่ชี้ไปยังคำสั่งซื้อ

Python

python
import requests
from decimal import Decimal

url = "https://netts.io/apiv2/screening"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": "your_api_key",
}
payload = {
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait_for_result": True,
}

response = requests.post(url, headers=headers, json=payload)

if response.status_code in (200, 202):
    body = response.json()
    print("Order:", body["order"]["client_order_id"])
    print("Status:", body["order"]["status"])
    if body["risk"]["score"] is not None:
        # แปลงตัวเลขของผู้ให้บริการเป็น Decimal ห้ามแปลงเป็น float
        print("Score:", Decimal(body["risk"]["score"]), "of", body["risk"]["scale"]["max"])
    print("Level:", body["risk"]["level"], "-", body["risk"]["level_source"])
    print("Charged:", body["billing"]["charged_amount"], body["billing"]["charged_currency"])
else:
    problem = response.json()
    print(problem["code"], problem["title"], "-", problem["detail"])

รหัสการตอบกลับ

สถานการณ์รหัสส่วนหัว
สร้างคำสั่งซื้อแล้ว การตรวจสอบกำลังดำเนินการในเบื้องหลัง202 AcceptedLocation: /apiv2/screening/{client_order_id}
มีผลลัพธ์รวมอยู่ในการตอบกลับ (wait_for_result)200 OK
นำผลลัพธ์จากการตรวจสอบล่าสุดมาใช้ซ้ำ ไม่มีการเรียกเก็บเงิน200 OK
ที่อยู่ไม่มีกิจกรรมบนบล็อกเชน ไม่มีการเรียกเก็บเงิน200 OK
ข้อผิดพลาดดูที่ ข้อผิดพลาดContent-Type: application/problem+json

การตอบกลับที่มีผลการตรวจสอบจะถูกส่งไปพร้อมกับ Cache-Control: private, no-store

การตอบกลับ

json
{
  "schema_version": 2,
  "order": {
    "client_order_id": "A90D21F68C9AEA2",
    "status": "completed",
    "api_version": "v2",
    "cache_hit": false,
    "created_at": "2026-09-13T08:14:29.614988Z",
    "started_at": "2026-09-13T08:14:30.288251Z",
    "completed_at": "2026-09-13T08:14:34.993174Z"
  },
  "request": {
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic"
  },
  "billing": {
    "charged": true,
    "price_usdt": "0.98",
    "base_amount": "2.882421",
    "markup_amount": "0",
    "charged_amount": "2.882421",
    "charged_currency": "TRX",
    "exchange_rate": "0.33999200",
    "payment_status": "pending"
  },
  "precheck": {
    "activity_checked": true,
    "activity_status": "active",
    "source": "tron-address-checker"
  },
  "check": {
    "provider": "elliptic",
    "provider_check_id": "b4903a5d-9f22-4075-b51b-beb40b419b97",
    "checked_at": "2026-09-13T08:14:32.144000Z",
    "status": "completed",
    "provider_status": "complete"
  },
  "risk": {
    "score": "0.9634087310611608",
    "scale": { "min": 0, "max": 10 },
    "level": "low",
    "level_source": "computed",
    "provider_level": null,
    "policy": "netts-risk-v1",
    "by_direction": {
      "source": "0.12332156899576921",
      "destination": "0.9634087310611608"
    }
  },
  "sanctions": {
    "self": false,
    "self_entities": null,
    "exposure": {
      "entity": "HTX (formerly Huobi) - Post-Sanctions - UK Sanctions List - 26 May 2026",
      "category": "Exchange",
      "share_fraction": "0.004409451392423414",
      "proximity": "indirect",
      "hops": 3,
      "direction": "source",
      "rule_name": "Sanctioned, TF & CSAM"
    },
    "items": []
  },
  "exposure": [
    {
      "category": "Exchange",
      "share_fraction": "0.1888065152442461",
      "direction": "source",
      "hops": 2,
      "is_screened_address": false,
      "entities": [
        { "name": "Binance", "category": "Exchange", "is_vasp": true,
          "is_primary": true, "is_after_sanction_date": null }
      ]
    }
  ],
  "rules": [
    { "name": "Sanctioned, TF & CSAM", "type": "exposure", "level": null,
      "score": "0.061426483114820525", "share_fraction": null, "category": null,
      "proximity": null, "direction": "source", "detected_at": null }
  ],
  "entities": [
    { "name": "Unknown", "category": "Unknown", "is_vasp": null,
      "is_primary": true, "is_after_sanction_date": false }
  ],
  "primary_entity": {
    "name": "Unknown", "category": "Unknown", "is_vasp": null,
    "is_primary": true, "is_after_sanction_date": false
  },
  "sanctioned_entities": [],
  "wallet": {
    "inflow_usd": "354663.6116669158",
    "outflow_usd": "80248.63081808022"
  },
  "provider_data": { }
}

ชุดฟิลด์จะไม่มีการเปลี่ยนแปลง

ทุกบล็อกที่ระบุไว้ข้างต้นจะมีอยู่ในการตอบกลับทุกครั้ง ไม่ว่าจะเป็นผู้ให้บริการรายใดและไม่ว่าคำสั่งซื้อจะอยู่ในสถานะใดก็ตาม ข้อมูลที่ผู้ให้บริการไม่ได้ส่งมาจะระบุเป็น null; รายการที่ไม่มีข้อมูลอยู่จะระบุเป็น [] ไม่ใช่ null; บล็อกที่ยังไม่มีข้อมูลจะถูกเติมด้วยค่าว่าง (null) แทนที่จะถูกตัดออก ตัวแจงส่วน (parser) เพียงตัวเดียวสามารถจัดการการตรวจสอบที่เพิ่งได้รับการยอมรับและการตรวจสอบเดียวกันนั้นเมื่อดำเนินการเสร็จสิ้นแล้วได้

ข้อควรระวังสองประการสำหรับโค้ดของคุณ:

  • ละเว้นฟิลด์ที่คุณไม่รู้จัก ฟิลด์ใหม่อาจถูกเพิ่มลงในบล็อกเหล่านี้ได้โดยไม่มีการอัปเดตเวอร์ชันใหม่ การที่ระบบของคุณปฏิเสธฟิลด์ที่ไม่รู้จักถือเป็นข้อผิดพลาดของฝั่งคุณ ไม่ใช่ของเรา
  • provider_data ไม่ได้เป็นส่วนหนึ่งของสัญญา รูปแบบของฟิลด์นี้จะเป็นไปตามผู้ให้บริการ และจะเปลี่ยนไปเมื่อผู้ให้บริการเปลี่ยนไป ข้อมูลทั้งหมดที่สัญญาให้การรับประกันจะอยู่ในบล็อกต่างๆ ด้านบน

order

ฟิลด์ชนิดคำอธิบาย
client_order_idstringตัวระบุคำสั่งซื้อ ใช้สำหรับอ่านผลลัพธ์ในภายหลัง
statusstringpending, processing, completed, skipped, failed
api_versionstringสัญญาที่สร้างคำสั่งซื้อ
cache_hitbooleantrue เมื่อมีการนำผลลัพธ์ล่าสุดมาใช้ซ้ำและไม่มีการเรียกเก็บเงิน
created_atstringRFC 3339, UTC, ความละเอียดระดับไมโครวินาที
started_atstring | nullเวลาที่เริ่มเรียกใช้งานผู้ให้บริการ จะเป็น null สำหรับ skipped
completed_atstring | nullเวลาที่ได้รับผลลัพธ์
errorstringสำหรับ failed เท่านั้น: สาเหตุที่ล้มเหลว
reasonstringสำหรับ skipped เท่านั้น: address_inactive

การประทับเวลาทั้งหมดเป็นรูปแบบ UTC, RFC 3339 พร้อมต่อท้ายด้วย Z และมีความละเอียดระดับไมโครวินาที

billing

ฟิลด์ชนิดคำอธิบาย
chargedbooleanมีการหักเงินหรือไม่
price_usdtstringราคาตามรายการของผู้ให้บริการในสกุลเงิน USDT
base_amountstringราคาคำสั่งซื้อในสกุลเงินที่เรียกเก็บเงิน โดยไม่รวมมาร์กอัปของบัญชีย่อย
markup_amountstringมาร์กอัปของบัญชีย่อย จะเป็น "0" สำหรับบัญชีโดยตรง
charged_amountstringจำนวนเงินที่ถูกหักออกจากยอดคงเหลือจริง
charged_currencystringTRX
exchange_ratestring | nullอัตราแลกเปลี่ยนที่ใช้สำหรับการแปลงสกุลเงิน
payment_statusstringpaid, pending, failed, not_charged

payment_status จะเป็น pending ในช่วงเวลาสั้นๆ หลังจากการตรวจสอบสำเร็จ: ค่าบริการจะถูกระงับไว้ก่อนและจะตัดบัญชีภายในหนึ่งชั่วโมง failed หมายถึงมีการคืนเงินแล้ว not_charged หมายถึงไม่เคยมีการสร้างรายการเรียกเก็บเงินขึ้นเลย — เช่น ผลลัพธ์ที่นำมาใช้ซ้ำหรือที่อยู่ที่ถูกข้ามไป

precheck

ก่อนการตรวจสอบแบบมีค่าบริการ ที่อยู่ดังกล่าวจะถูกตรวจสอบกิจกรรมบนบล็อกเชนก่อน ที่อยู่ที่ไม่มีกิจกรรมจะไม่ถูกส่งไปยังผู้ให้บริการและจะไม่มีการเรียกเก็บเงิน

ฟิลด์ชนิดคำอธิบาย
activity_checkedbooleanดำเนินการตรวจสอบแล้วหรือไม่ จะเป็น false บนเครือข่ายที่ไม่มีฟังก์ชันนี้
activity_statusstringactive, inactive, unknown
sourcestring | nullชื่อของกลไกที่ใช้ตรวจสอบ

unknown จะไม่หยุดการตรวจสอบแบบมีค่าบริการ: หากบริการตรวจสอบกิจกรรมไม่สามารถใช้งานได้ ระบบจะถือว่าที่อยู่นั้นเป็น active

check

ฟิลด์ชนิดคำอธิบาย
providerstringผู้ให้บริการที่ทำการตรวจสอบ
provider_check_idstring | nullตัวระบุเฉพาะของผู้ให้บริการเอง — ให้อ้างอิงรหัสนี้เมื่อต้องการโต้แย้งผลการตรวจสอบกับผู้ให้บริการ
checked_atstring | nullเวลาที่ผู้ให้บริการแสดงผลลัพธ์ออกมา
statusstringดูตารางด้านล่าง
provider_statusstring | nullข้อความสถานะดั้งเดิมของผู้ให้บริการโดยไม่มีการแก้ไข
order.statuscheck.statusความหมาย
pendingpendingได้รับคำสั่งซื้อแล้ว ยังไม่ได้เริ่มดำเนินการ
processingrunningผู้ให้บริการกำลังดำเนินการ
completedcompletedได้รับผลลัพธ์แล้ว
failedfailedถูกปฏิเสธก่อนหรือระหว่างการเรียกใช้งานผู้ให้บริการ
skippednot_performedที่อยู่ดังกล่าวไม่มีกิจกรรม ผู้ให้บริการจะไม่ถูกเรียกใช้งานและไม่มีการเรียกเก็บเงินใดๆ

risk

ฟิลด์ชนิดคำอธิบาย
scorestring | nullคะแนนของผู้ให้บริการเอง ในรูปแบบสตริงทศนิยม
scaleobjectค่า min และ max ของสเกลผู้ให้บริการรายนั้น
levelstringnone, low, medium, high, severe
level_sourcestringcomputed — เราคำนวณระดับความเสี่ยงจากคะแนน; provider — ผู้ให้บริการเป็นผู้ระบุระดับมาโดยตรง
provider_levelstring | nullคำระบุระดับของผู้ให้บริการเอง ในกรณีที่มีการส่งกลับมา
policystringชื่อของนโยบายเกณฑ์คะแนน netts-risk-v1
by_directionobjectคะแนนที่แยกตาม source และ destination ในกรณีที่ผู้ให้บริการมีการแยกให้

คะแนนจะไม่ถูกปรับสเกลใหม่โดยเด็ดขาด Elliptic ใช้สเกล 0–10 และ BitOK ใช้สเกล 0–1 ซึ่งคะแนน 7 ในสเกลหนึ่งไม่ได้เท่ากับ 0.7 ในอีกสเกลหนึ่งในทางความหมายแต่อย่างใด สเกลจะถูกส่งมาในการตอบกลับเพื่อให้การเชื่อมต่อระบบที่เขียนขึ้นสำหรับผู้ให้บริการรายหนึ่งไม่อ่านค่าผิดพลาดเมื่อเปลี่ยนไปใช้อีกรายหลังจากการเปลี่ยนการตั้งค่าเพียงครั้งเดียว

ระดับความเสี่ยงใช้คำศัพท์ชุดเดียวกันทั่วทั้ง API ในกรณีที่ผู้ให้บริการระบุระดับความเสี่ยงมาเอง เราจะส่งต่อค่านั้นและระบุไว้ใน level_source ส่วนในกรณีที่ไม่ได้ระบุมา เราจะคำนวณระดับจากคะแนนโดยใช้เกณฑ์ของ netts-risk-v1 และระบุเช่นนั้นแทน คำศัพท์ชุดเดียวกันจะปรากฏทั้งในการตอบกลับของ API, แดชบอร์ด และรายงาน PDF สำหรับการตรวจสอบรายการเดียวกัน

exposure[], rules[], entities[]

exposure[] จำแนกเงินตามหมวดหมู่ของคู่สัญญา rules[] แสดงรายการกฎของผู้ให้บริการที่มีการทริกเกอร์ entities[] แสดงรายการเอนทิตีที่ที่อยู่นั้นสังกัดอยู่ โดย primary_entity จะเลือกหนึ่งในนั้นตามกฎตายตัว — ได้แก่ เอนทิตีที่ผู้ให้บริการระบุว่าเป็นเอนทิตีหลัก หากไม่มีจะเลือกเอนทิตีแรก หากไม่มีเลยจะเป็น null ส่วน sanctioned_entities[] จะเก็บเอนทิตีใน entities[] ที่ถูกตั้งค่าสถานะว่ายังมีความเคลื่อนไหวหลังวันที่เริ่มมีมาตรการคว่ำบาตร

ส่วนแบ่งเป็นสัดส่วน ไม่ใช่เปอร์เซ็นต์

ทุกสัดส่วนในการตอบกลับจะอยู่ในฟิลด์เดียว คือ share_fraction ซึ่งเป็นสตริงทศนิยมระหว่าง "0" ถึง "1"

text
Elliptic รายงาน 31.574732212596924 %  ->  "share_fraction": "0.31574732212596924"
BitOK รายงาน    0.8488                ->  "share_fraction": "0.8488"

ผู้ให้บริการแต่ละรายใช้หน่วยไม่ตรงกัน: สัดส่วนหนึ่งในสามของการสัมผัสความเสี่ยง (exposure) จะส่งมาเป็น 31.57 จากรายหนึ่ง และ 0.3157 จากอีกรายหนึ่ง การใช้ฟิลด์เดียวเพื่อรองรับทั้งสองแบบจะทำให้อ่านค่าไม่ได้หากไม่ทราบว่ามาจากผู้ให้บริการรายใด ตัวเลขดั้งเดิมของผู้ให้บริการในหน่วยของผู้ให้บริการเองจะยังคงอยู่ใน provider_data

ตัวเลขอยู่ในรูปแบบสตริง

ตัวเลขทุกตัวที่มาจากผู้ให้บริการ — คะแนน, สัดส่วน, ปริมาณเงิน USD และทุกจำนวนเงินใน billing — จะเป็นสตริงทศนิยม

json
"score": "0.9634087310611608"

การแปลงค่าดังกล่าวเป็นตัวเลข JSON ใน JavaScript, Go หรือภาษาอื่นๆ ที่ใช้ floating point แบบเลขฐานสอง จะทำให้ได้ค่าประมาณ และค่าที่คุณพิมพ์ออกมาจะไม่ตรงกับค่าที่ผู้ให้บริการออกให้อีกต่อไป ให้แปลงฟิลด์เหล่านี้ด้วยประเภทข้อมูลแบบทศนิยม: Decimal ใน Python, BigDecimal ใน Java, decimal.Decimal หรือสตริงใน JavaScript

ฟิลด์ที่เป็นของเราเองไม่ใช่ของผู้ให้บริการ — เช่น scale.min, scale.max, hops — จะเป็นตัวเลข JSON ปกติ

การใช้ผลลัพธ์ล่าสุดซ้ำ

เมื่อคุณตรวจสอบที่อยู่ เครือข่าย และผู้ให้บริการเดิมซ้ำอีกครั้งภายใน 60 วินาที ระบบจะส่งคืนผลลัพธ์ก่อนหน้าและไม่มีการเรียกเก็บเงิน

แต่ละ request จะยังคงสร้างคำสั่งซื้อของตัวเองพร้อม client_order_id เฉพาะตัว โดยรายการที่นำผลลัพธ์มาใช้ซ้ำจะถูกทำเครื่องหมายว่า "cache_hit": true และบล็อก billing จะรายงาน "charged": false พร้อมทั้ง "payment_status": "not_charged" ทั้งนี้จะไม่มีการเปิดเผยตัวระบุคำสั่งซื้อที่เป็นต้นทางของผลลัพธ์ — เนื่องจากอาจเป็นของบัญชีอื่น

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

การทำงานแบบ Idempotency

ส่ง X-Idempotency-Key พร้อมค่าของคุณเองเพื่อให้การส่งซ้ำมีความปลอดภัย: การใช้คีย์เดิมกับ body เดียวกันจะส่งคืนการตอบกลับที่ถูกบันทึกไว้แทนที่จะเป็นการสั่งตรวจสอบเป็นครั้งที่สอง

สถานการณ์รหัสการตอบกลับ
Request แรกที่ใช้คีย์นี้ยังคงทำงานอยู่4094090
คีย์เดิม แต่ Request Body แตกต่างกัน4094093
คีย์เดิม Body เดิม และดำเนินการเสร็จสิ้นแล้วรหัสที่ถูกบันทึกไว้การตอบกลับที่ถูกบันทึกไว้

หากคุณไม่ได้ส่งส่วนหัวนี้ ระบบจะสร้างคีย์ให้คุณโดยอัตโนมัติจากคีย์ API, ที่อยู่, ผู้ให้บริการ และที่อยู่ IP ของคุณ ภายในกรอบเวลาสองวินาที ซึ่งจะช่วยป้องกันการคลิกซ้ำสองครั้งและการลองใหม่ของเกตเวย์ แต่จะไม่ครอบคลุมการทำซ้ำในอีกหนึ่งนาทีต่อมา: กรณีดังกล่าวจะถือเป็นคำสั่งซื้อใหม่จริงๆ และจะมีการเรียกเก็บเงิน

ขอบเขตของคีย์จะแยกตาม endpoint ค่าเดียวกันที่ส่งไปยัง POST /apiv2/aml และส่งมายัง endpoint นี้จะถือเป็นข้อตกลงอิสระสองรายการสำหรับสองคำขอที่แตกต่างกัน — เนื่องจากโครงสร้าง body แตกต่างกัน และการตอบกลับก็แตกต่างกันด้วย การใช้คีย์เดิมซ้ำระหว่างการย้ายระบบเชื่อมต่อจากเวอร์ชัน 1 ไปยังเวอร์ชัน 2 จึงปลอดภัย: จะไม่มีการส่งผลการตอบกลับของเวอร์ชัน 1 คืนให้คุณ และไม่นับว่าเป็นการใช้คีย์เดิมกับ body ที่แตกต่างกัน

ข้อผิดพลาด

ทุกข้อผิดพลาดที่เกิดขึ้นจากแอปพลิเคชันจะใช้มาตรฐาน RFC 9457 ร่วมกับ Content-Type: application/problem+json:

json
{
  "type": "https://doc.netts.io/api/v2/errors/insufficient-funds",
  "title": "Insufficient funds",
  "status": 403,
  "detail": "Insufficient funds. Required: 2.888742 TRX, Available: 1.203000 TRX",
  "instance": "/apiv2/screening",
  "code": 1004,
  "required_trx": "2.888742",
  "available_trx": "1.203000"
}

type, title, status, detail และ instance เป็นฟิลด์มาตรฐาน ส่วน code ที่เป็นตัวเลขจะยังคงเก็บไว้เป็นส่วนขยายเพื่อให้ระบบเชื่อมต่อที่เขียนขึ้นสำหรับเวอร์ชัน 1 ยังคงสามารถจับคู่ค่านี้ได้ สำหรับฟิลด์เพิ่มเติมจะขึ้นอยู่กับข้อผิดพลาดนั้นๆ และต้องละเว้นฟิลด์ดังกล่าวเมื่อคุณไม่รู้จัก

รหัสHTTPความหมาย
4000400Body ไม่ใช่ JSON ที่ถูกต้อง
4001400มีฟิลด์ที่ไม่ผ่านการตรวจสอบความถูกต้อง หรือมีการส่งฟิลด์ที่ไม่รู้จักมา
4002403ผู้ให้บริการไม่พร้อมใช้งานสำหรับบัญชีของคุณ
4003400รูปแบบตัวระบุคำสั่งซื้อไม่ถูกต้อง
4004400ผู้ให้บริการไม่รองรับเครือข่ายที่ร้องขอ
4010401ไม่มีคีย์ API
4011401คีย์ API หรือที่อยู่ IP ไม่ได้รับการยอมรับ
4040404ไม่พบคำสั่งซื้อ
4041404ไม่พบบัญชี
4090409Request ที่ใช้คีย์ idempotency นี้ยังคงทำงานอยู่
4091409Request ซ้ำซ้อน
4093409คีย์ idempotency นี้ถูกนำไปใช้กับ body อื่นแล้ว
1004403ยอดคงเหลือไม่เพียงพอ
5000500ข้อผิดพลาดภายในระบบ
5001500การเรียกเก็บเงินไม่สำเร็จ
5002500ไม่ได้สร้างคำสั่งซื้อ
5030503ผู้ให้บริการไม่พร้อมใช้งาน

ข้อผิดพลาดที่ไม่ได้ใช้รูปแบบนี้

ข้อผิดพลาดบางอย่างเกิดขึ้นที่เกตเวย์ก่อนที่จะถึงตัวแอปพลิเคชัน และข้อผิดพลาดเหล่านั้นจะยังคงรูปแบบเดิมของเกตเวย์ไว้ ให้ปฏิบัติต่อการตอบกลับใดๆ ที่ Content-Type ไม่ใช่ application/problem+json เสมือนเป็นกรณีใดกรณีหนึ่งดังต่อไปนี้:

สถานการณ์HTTPBody
ไม่มีคีย์ API หรือคีย์ไม่ได้รับการยอมรับ401{"detail":{"code":-1,"msg":"Invalid or missing API key"}}
อัตราการเรียกใช้งานเกินกำหนด (Rate limit exceeded)429{"message":"API rate limit exceeded"}
ไม่พบพาธ หรือใช้เมธอดที่เส้นทางดังกล่าวไม่รองรับ404 / 405{"detail":"Method Not Allowed"}

ขีดจำกัดอัตราการเรียกใช้ (Rate Limits)

ขีดจำกัดนี้จะแชร์ร่วมกับ POST /apiv2/aml และเส้นทาง AML อื่นๆ: 5 คำขอต่อวินาที และ 150 คำขอต่อนาที การเปลี่ยนมาใช้ endpoint นี้ไม่ได้ให้โควตาเพิ่มเติมแก่คุณ

หมายเหตุ

  • ราคา: Elliptic $0.98, BitOK $0.50 ต่อการตรวจสอบหนึ่งครั้ง หักจากยอดคงเหลือ TRX ตามอัตราแลกเปลี่ยน ณ ขณะที่ทำการเรียกเก็บเงิน
  • ระยะเวลาประมวลผล: การตรวจสอบส่วนใหญ่จะเสร็จสิ้นภายในไม่กี่วินาที ที่อยู่ที่มีประวัติยาวนานอาจใช้เวลานานสูงสุดถึงสามนาที แนะนำให้ใช้โหมด asynchronous และอ่านผลลัพธ์ด้วย GET /apiv2/screening/{client_order_id}
  • ที่อยู่ที่ไม่มีกิจกรรม จะส่งคืนสถานะ skipped และไม่มีการเรียกเก็บเงิน
  • ไม่มีการส่งคืนข้อมูลดิบที่ตอบกลับมาจากผู้ให้บริการโดยเด็ดขาด provider_data เป็นข้อมูลที่ผ่านการตรวจสอบและคัดกรองแล้ว ฟิลด์ที่เป็นของบัญชีเราที่เปิดไว้กับผู้ให้บริการ ซึ่งไม่ได้เป็นข้อมูลของที่อยู่ที่ถูกตรวจสอบ จะไม่ถูกเผยแพร่ให้แก่ผู้ใด

รายงาน

Endpoint นี้จะส่งคืนข้อมูลเป็น JSON เท่านั้น ไม่มีรูปแบบ PDF หรือ Markdown

ทุกองค์ประกอบที่ประกอบขึ้นเป็นรายงานมีอยู่ในการตอบกลับแล้ว: ทั้งบล็อกแบบรวมศูนย์และ provider_data การนำข้อมูลไปเรนเดอร์ในฝั่งของคุณเองจะช่วยให้คุณได้เอกสารในแบบที่คุณต้องการอย่างแท้จริง — ทั้งแบรนด์ของคุณ, ภาษาของคุณ, รูปแบบเลย์เอาต์ของคุณ — ซึ่งเป็นสิ่งสำคัญอย่างยิ่งหากคุณนำบริการตรวจสอบไปขายต่อ เพราะรายงานที่มีชื่อของเราย่อมเป็นเอกสารที่ไม่เหมาะสมในการส่งมอบให้กับลูกค้าของคุณเอง

หากคุณต้องการรายงานเพื่อใช้เป็นหลักฐานสำหรับบุคคลที่สาม — เช่น ธนาคาร, หน่วยงานกำกับดูแล, หรือคู่สัญญา — โปรดทราบว่า PDF ที่ไม่มีการลงนามดิจิทัลจะไม่ถือเป็นหลักฐานไม่ว่าใครจะเป็นผู้สร้างขึ้นก็ตาม: เนื่องจากสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความภายในเวลาไม่กี่นาที เอกสารที่สามารถยืนยันความถูกต้องได้จำเป็นต้องมีลายเซ็นดิจิทัลหรือหน้ายืนยันความถูกต้องแบบสาธารณะ ซึ่งนั่นเป็นฟีเจอร์คนละส่วนกัน หากกรณีของคุณเป็นเช่นนั้น โปรดแจ้งให้เราทราบถึงสิ่งที่คู่สัญญาของคุณต้องการ

อย่างไรก็ตาม มีรายงาน PDF ที่มนุษย์สามารถอ่านได้สำหรับการตรวจสอบเหล่านี้จัดเตรียมไว้ให้ในแดชบอร์ด Netts ซึ่งรองรับถึง 17 ภาษา

ดูเพิ่มเติม