Skip to main content

🊊✏ïļ āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļˆāļēāļāļĢāļđāļ›āļ–āđˆāļēāļĒāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒ

1.25 ICāļ•āđˆāļ­āļŦāļ™āđ‰āļē
v1.0 Active āļž.āļĻ. 2566 POST /v3/store/ekyc/thai-national-id-card-with-signature

āļĒāļīāļ™āļ”āļĩāļ•āđ‰āļ­āļ™āļĢāļąāļšāļŠāļđāđˆ Photographed Thai National ID Card With Signature Detection API āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒ AI āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ āļˆāļģāļāļąāļ” API āļ‚āļ­āļ‡āđ€āļĢāļēāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļēāļāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ› (āļ—āļąāđ‰āļ‡āļŠāļĩāđāļĨāļ°āļ‚āļēāļ§āļ”āļģ) āđāļĨāļ°āļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ āļĢāļ°āļšāļšāļŠāļēāļĄāļēāļĢāļ–āļĢāļ°āļšāļļāļ•āļģāđāļŦāļ™āđˆāļ‡āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļžāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđāļĨāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āđ€āļŠāđˆāļ™ āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™ āļŠāļ·āđˆāļ­ āļ™āļēāļĄāļŠāļāļļāļĨ āļ§āļąāļ™āđ€āļāļīāļ” āđāļĨāļ°āļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ āđƒāļ™āļĢāļđāļ›āđāļšāļš JSON

āļĨāļ­āļ‡āđƒāļŠāđ‰ Demo!​

Example Images (Click to try)

Example 1

āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļ‡āļēāļ™â€‹

  1. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™

    • āļ„āļĩāļĒāđŒ API āļˆāļēāļ āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ
    • āļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ›
    • āļĢāļđāļ›āđāļšāļšāđ„āļŸāļĨāđŒāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš: JPEG, JPG, PNG, HEIC, HEIF
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 2MB
  2. āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļ‡āļēāļ™āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§

    • āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ: 1-3 āļ§āļīāļ™āļēāļ—āļĩāļ•āđˆāļ­āļ āļēāļž
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāđāļĨāļ°āļ„āļĢāļ­āļšāļ•āļąāļ”āļšāļąāļ•āļĢāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
    • āļĢāļ­āļ‡āļĢāļąāļšāļ—āļąāđ‰āļ‡āļŠāļģāđ€āļ™āļēāļŠāļĩāđāļĨāļ°āļ‚āļēāļ§āļ”āļģ
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ

    • āļāļēāļĢāđāļĒāļāļ‚āđ‰āļ­āļĄāļđāļĨāļŸāļīāļĨāļ”āđŒāļ­āļĒāđˆāļēāļ‡āļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĢāļ§āļĄāļ–āļķāļ‡:
      • āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™
      • āļŠāļ·āđˆāļ­-āļ™āļēāļĄāļŠāļāļļāļĨ (āđ„āļ—āļĒāđāļĨāļ°āļ­āļąāļ‡āļāļĪāļĐ)
      • āļ§āļąāļ™āđ€āļāļīāļ”
      • āļ—āļĩāđˆāļ­āļĒāļđāđˆ
      • āļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™
    • āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš JSON āļ—āļĩāđˆāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™
  4. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļĢāļ°āđ€āļšāļĩāļĒāļš

    • āđ€āļ›āđ‡āļ™āđ„āļ›āļ•āļēāļĄ GDPR āđāļĨāļ° PDPA
    • āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
āļ§āļīāļ˜āļĩāļĢāļąāļšāļ„āļĩāļĒāđŒ API?

āļāļĢāļļāļ“āļēāđ„āļ›āļ—āļĩāđˆāļŦāļ™āđ‰āļē āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ„āļĩāļĒāđŒ API āđ€āļžāļ·āđˆāļ­āļ”āļđāļ„āļĩāļĒāđŒ API āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāļ‚āļ­āļ‡āļ„āļļāļ“ āļŦāļĢāļ·āļ­āļ‚āļ­āļ„āļĩāļĒāđŒāđƒāļŦāļĄāđˆ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡â€‹

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļš�āļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļšāļ™āļāļĢāļ°āļ”āļēāļĐāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ›āļžāļĢāđ‰āļ­āļĄāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ (āļ”āđ‰āļēāļ™āļŦāļ™āđ‰āļē)
āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ

API āļ™āļĩāđ‰āļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢ OCR āļˆāļēāļāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļ—āļĩāđˆāļžāļīāļĄāļžāđŒ āļŠāļģāļŦāļĢāļąāļš OCR āđ‚āļ”āļĒāļ•āļĢāļ‡āļˆāļēāļāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļˆāļĢāļīāļ‡ āđ‚āļ›āļĢāļ”āđƒāļŠāđ‰ Thai National ID Card OCR āđāļ—āļ™

āļ„āļģāļ‚āļ­â€‹

curl -X POST https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/idcard.jpg"

āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšâ€‹

{
"address_district": "āļšāļēāļ‡āļĨāļ°āļĄāļļāļ‡",
"address_full": "XXXXXX XXXXXX āļ•.āļŦāļ™āļ­āļ‡āļ›āļĢāļ·āļ­ āļ­.āļšāļēāļ‡āļĨāļ°āļĄāļļāļ‡ āļˆ.āļŠāļĨāļšāļļāļĢāļĩ",
"address_number": "XXXXXX XXXXXX",
"address_postal_code": "20150",
"address_province": "āļŠāļĨāļšāļļāļĢāļĩ",
"address_subdistrict": "āļ•.āļŦāļ™āļ­āļ‡āļ›āļĢāļ·āļ­",
"date_of_birth": "XX āļĄāļĩ.āļ„. 2500",
"date_of_expire": "XX āļĄāļĩ.āļ„. 2568",
"file_name_id_card": "front.jpg",
"fullname_en": "Mrs. XXXXXX Lopez",
"fullname_th": "āļ™āļēāļ‡ XXXXXX āđ‚āļĨāđ€āļ›āļŠ",
"init_en": "Mrs.",
"init_th": "āļ™āļēāļ‡",
"name_en": "XXXXXX",
"name_th": "XXXXXX",
"national_id": "34117XXXXXX334",
"process_time": 2.1,
"reason_code_api": 200,
"reason_code_id_card": 1,
"reason_code_id_card_national_id": 1,
"reason_code_id_card_signature": 0,
"reason_codename_id_card_signature": 1,
"request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx",
"surname_en": "Lopez",
"surname_th": "āđ‚āļĨāđ€āļ›āļŠ"
}

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–​

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļâ€‹

  • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļžāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
  • āļĢāļ­āļ‡āļĢāļąāļšāļ—āļąāđ‰āļ‡āļŠāļģāđ€āļ™āļēāļŠāļĩāđāļĨāļ°āļ‚āļēāļ§āļ”āļģ
  • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™
  • āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§ (1-3 āļ§āļīāļ™āļēāļ—āļĩ)
  • āļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāđ„āļŸāļĨāđŒāļŦāļĨāļēāļĒāļĢāļđāļ›āđāļšāļš

āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļŠāļģāļŦāļĢāļąāļšāļĢāļđāļ›āļ āļēāļžâ€‹

  • āļ‚āļ™āļēāļ”āļšāļąāļ•āļĢāļ‚āļąāđ‰āļ™āļ•āđˆāļģ: āļāļ§āđ‰āļēāļ‡ 600px, āļŠāļđāļ‡ 400px
  • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 2MB
  • āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš: JPEG, JPG, PNG, HEIC, HEIF

API Endpoints​

EndpointMethodāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ„āđˆāļēāļšāļĢāļīāļāļēāļĢ
POST /v3/store/ekyc/thai-national-id-card-with-signature
Legacy: /thai-national-id-card-with-signature/front
Legacy: /thai-national-id-card/copy
POSTāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļˆāļēāļāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ›āđāļĨāļ°āļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™1.25 IC āļ•āđˆāļ­āļŦāļ™āđ‰āļē

āļŸāļīāļĨāļ”āđŒāļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšâ€‹

āļŸāļīāļĨāļ”āđŒāļ›āļĢāļ°āđ€āļ āļ—āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
address_districtStringāļŠāļ·āđˆāļ­āļ­āļģāđ€āļ āļ­
address_fullStringāļ—āļĩāđˆāļ­āļĒāļđāđˆāđ€āļ•āđ‡āļĄ
address_numberStringāļ—āļĩāđˆāļ­āļĒāļđāđˆāļšāđ‰āļēāļ™
address_postal_codeStringāļĢāļŦāļąāļŠāđ„āļ›āļĢāļĐāļ“āļĩāļĒāđŒ
address_provinceStringāļŠāļ·āđˆāļ­āļˆāļąāļ‡āļŦāļ§āļąāļ”
address_subdistrictStringāļŠāļ·āđˆāļ­āļ•āļģāļšāļĨ
date_of_birthStringāļ§āļąāļ™āđ€āļāļīāļ” (āļ āļēāļĐāļēāđ„āļ—āļĒ)
date_of_expireStringāļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
file_name_id_cardStringāļŠāļ·āđˆāļ­āđ„āļŸāļĨāđŒāļĢāļđāļ›āļ āļēāļž
fullname_enStringāļŠāļ·āđˆāļ­-āļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
fullname_thStringāļŠāļ·āđˆāļ­-āļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
init_enStringāļ„āļģāļ™āļģāļŦāļ™āđ‰āļēāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
init_thStringāļ„āļģāļ™āļģāļŦāļ™āđ‰āļēāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
name_enStringāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
name_thStringāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
national_idStringāļŦāļĄāļēāļĒāđ€āļĨāļ‚āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™
process_timeFloatāđ€āļ§āļĨāļēāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ (āļ§āļīāļ™āļēāļ—āļĩ)
reason_code_apiIntegerāļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš
reason_code_id_cardInteger0 - āđ„āļĄāđˆāļžāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļž, 1 - āļžāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļž
reason_code_id_card_national_idInteger0 - āđ„āļĄāđˆāļžāļšāļŦāļĄāļēāļĒāđ€āļĨāļ‚āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™, 1 - āļžāļšāļŦāļĄāļēāļĒāđ€āļĨāļ‚āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™
reason_codename_id_cardIntegerāļĢāļŦāļąāļŠāļ­āļ˜āļīāļšāļēāļĒ reason_code_id_card_national_id (āđ€āļĢāđ‡āļ§āđ† āļ™āļĩāđ‰)
reason_code_id_card_signatureInteger0 - āđ„āļĄāđˆāļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ, 1 - āļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ
reason_codename_id_card_signatureIntegerāļĢāļŦāļąāļŠāļ­āļ˜āļīāļšāļēāļĒ reason_code_id_card_signature (āđ€āļĢāđ‡āļ§āđ† āļ™āļĩāđ‰)
request_idStringāļĢāļŦāļąāļŠāļ„āļģāļ‚āļ­āļˆāļēāļ API Gateway
surname_enStringāļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
surname_thStringāļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđ„āļ—āļĒ)

āđ€āļ­āļāļŠāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ API​

Endpoint Photographed Thai National ID Card With Signature Detection​

1. Photographed Thai National ID Card With Signature Detection​

POST /v3/store/ekyc/thai-national-id-card-with-signature

āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļˆāļēāļāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ›āđāļĨāļ°āļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™


Request Headers​

āļŠāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļ āļ—āļˆāļģāđ€āļ›āđ‡āļ™āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
apikeystringāđƒāļŠāđˆāļ„āļĩāļĒāđŒ API āļ‚āļ­āļ‡āļ„āļļāļ“

Request Body (multipart/form-data)​

āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒāļ›āļĢāļ°āđ€āļ āļ—āļˆāļģāđ€āļ›āđ‡āļ™āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
fileFileāđƒāļŠāđˆāđ„āļŸāļĨāđŒāļĢāļđāļ›āļ āļēāļžāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ›

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”​

Curl​

curl -X POST https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python​

import requests

url = "https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature"
api_key = "YOUR_API_KEY"

# āđ€āļ•āļĢāļĩāļĒāļĄāđ„āļŸāļĨāđŒāļĢāļđāļ›āļ āļēāļž
files = {
'file': ('idcard.jpg', open('path/to/idcard.jpg', 'rb'), 'image/jpeg')
}

# āđ€āļžāļīāđˆāļĄāļ„āļĩāļĒāđŒ API āđƒāļ™āļŠāđˆāļ§āļ™āļŦāļąāļ§
headers = {
'apikey': api_key
}

# āļŠāđˆāļ‡āļ„āļģāļ‚āļ­
response = requests.post(url, headers=headers, files=files)

# āđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒ
print(response.json())

JavaScript​

// āđƒāļŠāđ‰ Fetch API
const formData = new FormData()
formData.append("file", fileInput.files[0])

fetch("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature", {
method: "POST",
headers: {
apikey: "YOUR_API_KEY",
},
body: formData,
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error))

PHP​

<?php
$curl = curl_init();

$file = new CURLFile('path/to/idcard.jpg', 'image/jpeg', 'idcard.jpg');

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'apikey: YOUR_API_KEY'
],
CURLOPT_POSTFIELDS => [
'file' => $file
]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

Swift​

import Foundation

let url = URL(string: "https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature")!
var request = URLRequest(url: url)
request.httpMethod = "POST"

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

let imageData = try! Data(contentsOf: URL(fileURLWithPath: "path/to/idcard.jpg"))

var body = Data()
body.append("--\(boundary)\r\n")
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"idcard.jpg\"\r\n")
body.append("Content-Type: image/jpeg\r\n\r\n")
body.append(imageData)
body.append("\r\n--\(boundary)--\r\n")

request.httpBody = body

URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
let json = try? JSONSerialization.jsonObject(with: data)
print(json ?? "")
}
}.resume()

Kotlin​

import okhttp3.*

val client = OkHttpClient()

val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file",
"idcard.jpg",
File("path/to/idcard.jpg")
.asRequestBody("image/jpeg".toMediaTypeOrNull())
)
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature")
.addHeader("apikey", "YOUR_API_KEY")
.post(requestBody)
.build()

client.newCall(request).execute().use { response ->
println(response.body?.string())
}

Java​

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class IDCardAPI {
public static void main(String[] args) throws IOException {
String boundary = "Boundary-" + System.currentTimeMillis();

URL url = new URL("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
conn.setRequestProperty("apikey", "YOUR_API_KEY");

try (OutputStream os = conn.getOutputStream()) {
File file = new File("path/to/idcard.jpg");
writeMultipartFile(os, "file", file, boundary);

os.write(("--" + boundary + "--\r\n").getBytes());
}

try (BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}

private static void writeMultipartFile(OutputStream os, String name, File file, String boundary)
throws IOException {
os.write(("--" + boundary + "\r\n").getBytes());
os.write(("Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" +
file.getName() + "\"\r\n").getBytes());
os.write("Content-Type: image/jpeg\r\n\r\n".getBytes());

try (FileInputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[4096];
int length;
while ((length = fis.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.write("\r\n".getBytes());
}
}
}

Dart​

import 'package:http/http.dart' as http;

Future<void> uploadIDCard() async {
var url = Uri.parse('https://api.iapp.co.th/thai-national-id-card-with-signature');

var request = http.MultipartRequest('POST', url);
request.headers['apikey'] = 'YOUR_API_KEY';

request.files.add(
await http.MultipartFile.fromPath(
'file',
'path/to/idcard.jpg',
),
);

var response = await request.send();
var responseBody = await response.stream.bytesToString();

print(responseBody);
}

āļĢāļŦāļąāļŠāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”​

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™â€‹

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
1passāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰
0manual checkāđ„āļĄāđˆāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āđ€āļ™āļ·āđ‰āļ­āļŦāļē āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™â€‹

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
1passāļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ
0manual checkāđ„āļĄāđˆāļžāļšāļŦāļĢāļ·āļ­āđ„āļĄāđˆāđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļ–āļđāļāļ•āđ‰āļ­āļ‡

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš API​

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
200SUCCESSāļ„āļģāļ‚āļ­āļŠāļģāđ€āļĢāđ‡āļˆ
404REQUESTED_URL_NOT_FOUNDāđ„āļĄāđˆāļžāļš API route
405METHOD_NOT_ALLOWEDāđƒāļŠāđ‰āļ§āļīāļ˜āļĩ HTTP āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
413IMAGE_FILE_IS_TOO_LARGEāđ„āļŸāļĨāđŒāđ€āļāļīāļ™āļ‚āļĩāļ”āļˆāļģāļāļąāļ” 2MB
414NO_FILE_ATTACHEDāđ„āļĄāđˆāļĄāļĩāđ„āļŸāļĨāđŒāđƒāļ™āļ„āļģāļ‚āļ­
415INVALID_IMAGE_SIZEāļ‚āļ™āļēāļ”āļ āļēāļžāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
420NO_ID_CARD_FOUNDāđ„āļĄāđˆāļžāļš ID card āđƒāļ™āļ āļēāļž
421IMAGE_ERROR_UNSUPPORTED_FORMATāļĢāļđāļ›āđāļšāļšāļ āļēāļžāđ„āļĄāđˆāļĢāļ­āļ‡āļĢāļąāļš āļŦāļĢāļ·āļ­āđ€āļŠāļĩāļĒāļŦāļēāļĒ
422INVALID_IMAGE_SIZEāđ„āļĄāđˆāđ€āļ›āđ‡āļ™āđ„āļ›āļ•āļēāļĄāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āļ āļēāļž
427LONG_TIME_TO_PROCESSāļŦāļĄāļ”āđ€āļ§āļĨāļēāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
428LONG_TIME_TO_REQUESTāļŦāļĄāļ”āđ€āļ§āļĨāļēāļ„āļīāļ§
560SERVER_IS_BUSYāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ—āļģāļ‡āļēāļ™āļŦāļ™āļąāļāđ€āļāļīāļ™āđ„āļ›, āđ‚āļ›āļĢāļ”āļĨāļ­āļ‡āļ­āļĩāļāļ„āļĢāļąāđ‰āļ‡
563ID_CARD_API_NOT_SUPPORT_THIS_IMAGEāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”​

  1. āļ„āļļāļ“āļ āļēāļžāļ‚āļ­āļ‡āļ āļēāļž

    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļĄāļĩāđāļŠāļ‡āļŠāļ§āđˆāļēāļ‡āđ€āļžāļĩāļĒāļ‡āļžāļ­
    • āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ āļēāļžāļ—āļĩāđˆāđ€āļšāļĨāļ­
    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āļŠāļąāļ”āđ€āļˆāļ™
  2. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļĢāļŦāļąāļŠāđ€āļŦāļ•āļļāļœāļĨāđƒāļ™āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš
    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ”āļķāļ‡āļ­āļ­āļāļĄāļē
    • āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĄāļēāļ°āļŠāļĄ
  3. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

    • āđ€āļāđ‡āļš API key āđƒāļŦāđ‰āļ›āļĨāļ­āļ”āļ āļąāļĒ
    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āđ„āļŸāļĨāđŒāļ—āļĩāđˆāļŠāđˆāļ‡āđ€āļ‚āđ‰āļēāļĄāļē
    • āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ„āļļāđ‰āļĄāļ„āļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžâ€‹

āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđ‚āļ”āļĒāļĢāļ§āļĄâ€‹

  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđƒāļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ: 98.13% āđƒāļ™āļĢāļ°āļ”āļąāļšāļ•āļąāļ§āļ­āļąāļāļĐāļĢ
  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™: 96.5%
  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđ€āļ‰āļžāļēāļ°āļŸāļīāļĨāļ”āđŒāļˆāļ°āđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđ„āļ›āļ•āļēāļĄāļ›āļĢāļ°āđ€āļ āļ—āđ€āļ™āļ·āđ‰āļ­āļŦāļē

āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ​

  • āđ€āļ‰āļĨāļĩāđˆāļĒ: 1-3 āļ§āļīāļ™āļēāļ—āļĩāļ•āđˆāļ­āļ āļēāļž
  • āļ›āļąāļˆāļˆāļąāļĒāļ—āļĩāđˆāļŠāđˆāļ‡āļœāļĨāļ•āđˆāļ­āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§:
    • āļ„āļ§āļēāļĄāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‚āļ­āļ‡āļ āļēāļž
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒ
    • āļ āļēāļĢāļ°āļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
    • āļŠāļ āļēāļžāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ

āļ›āļąāļˆāļˆāļąāļĒāļ—āļĩāđˆāļŠāđˆāļ‡āļœāļĨāļ•āđˆāļ­āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģ​

  1. āļ„āļļāļ“āļ āļēāļžāļ‚āļ­āļ‡āļ āļēāļž

    • āļ„āļ§āļēāļĄāļĨāļ°āđ€āļ­āļĩāļĒāļ” (āđāļ™āļ°āļ™āļģāļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 300 DPI)
    • āļŠāļ āļēāļžāđāļŠāļ‡
    • āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļ‚āļ­āļ‡āđ‚āļŸāļāļąāļŠ
    • āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļ‚āļ­āļ‡āļŠāļĩ
  2. āļŠāļ āļēāļžāđ€āļ­āļāļŠāļēāļĢ

    • āļ„āļ§āļēāļĄāđ€āļŠāļĩāļĒāļŦāļēāļĒāļ—āļēāļ‡āļāļēāļĒāļ āļēāļžāļŦāļĢāļ·āļ­āļāļēāļĢāļŠāļķāļāļŦāļĢāļ­
    • āđāļŠāļ‡āļŠāļ°āļ—āđ‰āļ­āļ™āļŦāļĢāļ·āļ­āđāļŠāļ‡āļˆāđ‰āļē
    • āļ„āļ§āļēāļĄāļŠāļąāļ”āđ€āļˆāļ™āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ­āđˆāļēāļ™āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
    • āļāļēāļĢāļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āļĨāļēāļĒāđ€āļ‹āđ‡āļ™
  3. āļŠāļ āļēāļžāļāļēāļĢāļ–āđˆāļēāļĒāļ āļēāļž

    • āļĄāļļāļĄāļāļĨāđ‰āļ­āļ‡
    • āļŠāļąāļāļāļēāļ“āļĢāļšāļāļ§āļ™āļˆāļēāļāļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡
    • āļœāļĨāļāļĢāļ°āļ—āļšāļˆāļēāļāđ€āļ‡āļē
    • āļ āļēāļžāđ€āļšāļĨāļ­āļˆāļēāļāļāļēāļĢāđ€āļ„āļĨāļ·āđˆāļ­āļ™āđ„āļŦāļ§

āļ›āļĢāļ°āļ§āļąāļ•āļī​

āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ§āļąāļ™āļ—āļĩāđˆāđ€āļœāļĒāđāļžāļĢāđˆāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ
1.02566āđ€āļ›āļīāļ”āļ•āļąāļ§āļ„āļĢāļąāđ‰āļ‡āđāļĢāļāļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™

āļĢāļēāļ„āļē​

āļŠāļ·āđˆāļ­āļšāļĢāļīāļāļēāļĢ AI APIEndpointIC āļ•āđˆāļ­āļ„āļģāļ‚āļ­On-Premise
OCR āļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļ—āļĩāđˆāļ–āđˆāļēāļĒāļĢāļđāļ› [v1.0]iapp-photographed-copy-idcard-ocr1.25 IC/āļ™āļēāļ—āļĩāļ•āļīāļ”āļ•āđˆāļ­