ข้ามไปยังเนื้อหา

API Reference

API ป้องกันการฉ้อโกง

SDK สำหรับเบราว์เซอร์ในการระบุตัวตน, webhooks ที่ลงนามสำหรับเหตุการณ์แบบเรียลไทม์ และ Server API แบบอ่านอย่างเดียวสำหรับดูประวัติ ทุกสิ่งที่คุณต้องการเพื่อหยุดการฉ้อโกงที่ระดับอุปกรณ์

SDK@tracio/sdk

ระบุตัวตนผู้เข้าชมในเบราว์เซอร์ด้วย client SDK คืนค่า visitor ID ที่เสถียรและคำตัดสินบอตโดยไม่ต้องวนกลับไปที่เซิร์ฟเวอร์ public key ปลอดภัยที่จะส่งไปในโค้ดฝั่งไคลเอนต์

Request

import { Tracio } from '@tracio/sdk'
const tracio = Tracio.init({ publicKey: '5ca175fc...' })
const result = await tracio.getResult()

Response

{
"visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y",
"bot": {
"detected": false,
"confidence": 2,
"reasons": []
}
}
POST/webhook/tracio

TRACIO ส่งเหตุการณ์ที่ลงนามไปยัง endpoint ของคุณทุกครั้งที่มีการระบุตัวตน ตรวจสอบ header X-Tracio-Signature จากนั้นดำเนินการกับ payload JSON แบบ flat นี่คือพื้นผิวแบบ push คุณไม่ต้อง poll เอง หากคุณจำเป็นต้องอ่านการเข้าชมย้อนหลัง Server API ตอบได้ตาม requestId

Request

POST /webhook/tracio HTTP/1.1
Host: your-server.com
Content-Type: application/json
X-Tracio-Payload-Version: 2
X-Tracio-Event-Type: identification
X-Tracio-Signature: t=1710432000,v1=5257a869e7ecebed...

Response

{
"version": 2,
"event": "identification",
"eventId": "9c1f4b2e-7d3a-4f18-8b6c-2e5a71d0c4f9:primary",
"requestId": "9c1f4b2e-7d3a-4f18-8b6c-2e5a71d0c4f9",
"phase": "primary",
"visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y",
"timestamp": "2026-03-12T16:00:00Z",
"bot": { "result": "human", "score": 2 },
"identification": { "confidence": 0.95, "incognito": false },
"network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false },
"decision": { "action": "real", "riskScore": 4 }
}
GET/.well-known/webhook-keys

ดึง Ed25519 public key ของแพลตฟอร์มที่ใช้ตรวจสอบการส่ง webhook เส้นทางนี้ไม่ต้องยืนยันตัวตนและถูกแคชไว้ห้านาที ค่า kid ใน header ลายเซ็นจะบอกคุณว่าต้องใช้คีย์ตัวไหน

Request

curl https://api.tracio.ai/.well-known/webhook-keys

Response

{
"keys": [
{
"kid": "k1",
"alg": "Ed25519",
"publicKey": "MCowBQYDK2VwAyEA9tR2v1kQ..."
}
]
}
GET/v1/visitors/{visitorId}

อ่านประวัติของผู้เข้าชมจาก Server API ด้วย secret key ของคุณ ใช้ได้ตั้งแต่แพ็กเกจ Pro กรอบเวลาถูกจำกัดตามแพ็กเกจของคุณ และกรอบเวลาที่คุณได้รับจริงจะถูกรายงานกลับมาใน meta รองรับคำขอสิทธิ์การเข้าถึงข้อมูลตาม GDPR

Request

# Server API — available on the Pro plan and above
curl "https://api.tracio.ai/v1/visitors/X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y" \
-H "Authorization: Bearer tracio_sk_XXXX...XXXX"

Response

{
"visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y",
"firstSeenAt": "2026-03-01T08:11:00Z",
"lastSeenAt": "2026-03-16T14:22:01Z",
"visits": 12,
"incognitoVisits": 1,
"uniqueIps": 4,
"uniqueCountries": 2,
"risk": { "maxRiskScore": 63, "lastDecision": "real" },
"network": {
"vpnSeen": false,
"proxySeen": false,
"torSeen": false,
"datacenterSeen": true
},
"meta": {
"plan": "pro",
"retentionDays": 30,
"from": "2026-02-14T00:00:00Z",
"to": "2026-03-16T14:30:00Z"
}
}

การตรวจสอบสิทธิ์

TRACIO ใช้ข้อมูลรับรองสามชุด หนึ่งชุดต่อหนึ่งพื้นผิว: public key สำหรับ browser SDK, secret key (tracio_sk_…) ที่ส่งเป็น Authorization: Bearer สำหรับ Server API และ HMAC signing secret เพื่อตรวจสอบการส่ง webhook ส่วน secret key ถูกสร้างในแดชบอร์ด แสดงเพียงครั้งเดียว และต้องไม่ไปถึงเบราว์เซอร์เด็ดขาด — Server API จงใจไม่คืนค่า CORS header

# Client SDK — public key (safe to ship in the browser)
Tracio.init({ publicKey: '5ca175fc...' })
# Server API — secret key, created in the dashboard and shown once
Authorization: Bearer tracio_sk_XXXX...XXXX
# Webhook verification — HMAC-SHA256 over "<t>.<rawBody>"
X-Tracio-Signature: t=<unix>,v1=<hmac_sha256_hex>

ขีดจำกัดอัตรา

ขีดจำกัดคิดต่อ workspace การเรียก Server API ถูกนับแยกจากการระบุตัวตน การอ่านประวัติของคุณเองจึงไม่กินโควตาที่คุณจ่ายเงินไป ทุกการตอบกลับมี X-RateLimit-Limit, X-RateLimit-Remaining และ X-RateLimit-Reset พร้อม Retry-After เมื่อเกิด 429 ทั้งนี้ Server API ไม่ได้อยู่ในแพ็กเกจ Free

แพ็กเกจอัตรา Server APIServer API ต่อวันWebhook endpointกรอบเวลาการค้นหา
ฟรีไม่รวมไม่รวม07 days
Pro10 req/s10,000530 days
Business50 req/s100,0002090 days
Enterprise200 req/sไม่จำกัด100365 days

รหัสข้อผิดพลาด

ข้อผิดพลาดทุกแบบคืนค่า envelope เดียวกัน: อ็อบเจกต์ error พร้อม code แบบสตริง, message ที่มนุษย์อ่านได้ และ requestId ของการเรียกที่ล้มเหลว

400Bad Requestพารามิเตอร์คิวรีผิดรูปแบบ, กรอบเวลาที่ไม่รองรับ หรือตัวระบุที่ไม่ใช่ visitor ID ที่ถูกต้อง
401Unauthorizedข้อมูลรับรองขาดหายหรือไม่ถูกต้อง — public key (SDK), secret key (Server API) หรือลายเซ็น webhook
402Upgrade Requiredแพ็กเกจของคุณไม่รวมการเข้าถึง Server API ซึ่งเริ่มมีในแพ็กเกจ Pro
404Not Foundไม่พบผู้เข้าชมหรือเซสชันที่มีตัวระบุนั้นภายในกรอบเวลาการค้นหาของแพ็กเกจคุณ
405Method Not AllowedServer API เป็นแบบอ่านอย่างเดียว ทุกเส้นทางตอบเฉพาะ GET เท่านั้น
429Rate Limitedคำขอต่อวินาทีมากเกินไป หรือโควตารายวันถูกใช้หมดแล้ว ตรวจสอบ header Retry-After และขีดจำกัดแพ็กเกจของคุณ
500Internal Errorข้อผิดพลาดเซิร์ฟเวอร์ ลองใหม่ด้วย exponential backoff หากยังคงเกิดขึ้น ติดต่อฝ่ายสนับสนุนพร้อมแจ้ง requestId
503Service UnavailableAPI ไม่สามารถตอบได้ชั่วคราว ลองใหม่ด้วย exponential backoff

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

{
"error": {
"code": "rate_limited",
"message": "too many requests",
"requestId": "8f14e45fceea167a5a36dedd"
}
}

เริ่มสร้าง

รับ API key ของคุณและสร้างคำขอระบุตัวตนครั้งแรกภายในไม่ถึง 5 นาที