ส่งรูปหน้าพาสปอร์ตหนึ่งรูปต่อหนึ่งคำขอ ได้ทุกช่องพร้อมผลตรวจ · อ่านเจอหน้าพาสปอร์ตคิด 2 เครดิต · รูปเดิมภายใน 30 วันไม่คิดซ้ำ · ไม่ใช่พาสปอร์ตหรืออ่านไม่ได้ไม่คิด · เราไม่เก็บรูปและผล
POST /api/v1/read · รูป JPG/PNG/WebP ไม่เกิน 4 MB · ถ่ายให้เห็นทั้งหน้าและสองบรรทัดล่าง
curl https://passport.clixworks.co/api/v1/read \ -H "Authorization: Bearer cwp_…" \ -H "Content-Type: image/jpeg" \ --data-binary @passport.jpg
หรือส่ง JSON { "image": "data:image/jpeg;base64,…" } กับ Content-Type: application/json
{
"ok": true,
"status": "ok", // ok = ผ่านทุกข้อ · review = มีข้อให้ทานกับรูป
"thai": true,
"passport": {
"documentType": "P", "issuingState": "THA", "nationality": "THA",
"passportNumber": "AA1234567",
"surname": "JAIDEE", "givenNames": "SOMCHAI", "titleEn": "MR",
"thai": { "title": "นาย", "firstName": "สมชาย", "lastName": "ใจดี" },
"birthDate": "1990-01-31", "sex": "M",
"expiryDate": "2035-09-26", "dateOfIssue": "2025-09-27",
"personalNumber": "1103700123458",
"placeOfBirth": "BANGKOK", "height": "1.72 M",
"authority": "MINISTRY OF FOREIGN AFFAIRS"
},
"mrz": { "line1": "P<THAJAIDEE<<SOMCHAI<<<…", "line2": "AA12345678THA9001310M…", "valid": true },
"checks": [
{ "field": "mrz", "level": "ok", "message": "เลขตรวจสอบใน MRZ ผ่านครบทุกช่อง" },
{ "field": "personalNumber", "level": "ok", "message": "เลขประจำตัวประชาชนผ่านหลักตรวจสอบ 13 หลัก" }
],
"charged": 2,
"balance": 96
}yyyy-mm-dd (ค.ศ.) · ช่องที่อ่านไม่ได้เป็นสตริงว่างchecks[].level: ok ผ่าน · info ข้อมูล · warn ให้ทาน · fail ขัดกันหรือเลขตรวจไม่ผ่าน · message เป็นภาษาไทย แสดงให้ผู้ใช้ได้เลยthai: falsecurl https://passport.clixworks.co/api/v1/balance -H "Authorization: Bearer cwp_…"
→ { "ok": true, "balance": 96, "price": 2, "packs": [100, 500, 1000] }รูปเดียวกันทุกเส้น: { "ok": false, "error": { "code", "message" } }
| 401 | unauthorized | ไม่มีคีย์ คีย์ผิด หรือลายเซ็นพาร์ตเนอร์ไม่ตรง |
| 402 | insufficient_credit | เครดิตไม่พอ · มี balance และ price ในคำตอบ |
| 413 | too_large | คำขอเกิน 6 MB (รูปเกิน 4 MB) |
| 415 | bad_image / unsupported_type | เปิดรูปไม่ได้ หรือ Content-Type ไม่ใช่รูป/JSON |
| 422 | not_passport | ไม่ใช่หน้าข้อมูลพาสปอร์ต หรือไม่เห็น MRZ · ไม่คิดเครดิต |
| 429 | rate_limited / busy | เกิน 30 เล่มต่อนาที หรือตัวอ่านหนาแน่น · รอแล้วลองใหม่ |
| 502 / 503 | model_error / config | ตัวอ่านขัดข้อง · ไม่คิดเครดิต |
ระบบที่มีลูกค้าหลายราย (เช่น ClixTourAgency) เรียกแทนลูกค้าแต่ละรายได้โดยไม่ต้องให้ลูกค้าสมัครที่นี่ · ลูกค้าแต่ละรายมีกระเป๋าของตัวเอง สร้างให้อัตโนมัติครั้งแรก · ติดต่อ ClixWorks เพื่อรับรหัสพาร์ตเนอร์และคีย์ลับ
X-Partner: <รหัสพาร์ตเนอร์> X-Account: <รหัสลูกค้าในระบบของคุณ> X-Account-Name: <ชื่อ · encodeURIComponent> X-Timestamp: <วินาที unix · คลาดได้ไม่เกิน 5 นาที> X-Signature: hex(HMAC-SHA256(คีย์ลับ, "<ts>.<METHOD>.<path>.<X-Account>.<sha256 hex ของ body>"))
POST /api/v1/topup-link ด้วย { "back": "https://…" } → ลิงก์หน้าเติมเครดิตของลูกค้ารายนั้น อายุ 30 นาที