Passport Readerby ClixWorksสร้างคีย์ API →

คู่มือ API

ส่งรูปหน้าพาสปอร์ตหนึ่งรูปต่อหนึ่งคำขอ ได้ทุกช่องพร้อมผลตรวจ · อ่านเจอหน้าพาสปอร์ตคิด 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
}

ยอดคงเหลือ

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

401unauthorizedไม่มีคีย์ คีย์ผิด หรือลายเซ็นพาร์ตเนอร์ไม่ตรง
402insufficient_creditเครดิตไม่พอ · มี balance และ price ในคำตอบ
413too_largeคำขอเกิน 6 MB (รูปเกิน 4 MB)
415bad_image / unsupported_typeเปิดรูปไม่ได้ หรือ Content-Type ไม่ใช่รูป/JSON
422not_passportไม่ใช่หน้าข้อมูลพาสปอร์ต หรือไม่เห็น MRZ · ไม่คิดเครดิต
429rate_limited / busyเกิน 30 เล่มต่อนาที หรือตัวอ่านหนาแน่น · รอแล้วลองใหม่
502 / 503model_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 นาที