Skip to main content

ðŸ‘Ĩ āļĢāļ°āļšāļšāļ•āļĢāļ§āļˆāļˆāļąāļšāđƒāļšāļŦāļ™āđ‰āļēāļ›āļĨāļ­āļĄ Face Passive Liveness Detection (Face Spoofing Check)

0.3 ICāļ•āđˆāļ­āļ„āļģāļ‚āļ­
v1.8 Active🏆 iBeta Level 1 Certified POST /v3/store/ekyc/face-passive-liveness

āļĒāļīāļ™āļ”āļĩāļ•āđ‰āļ­āļ™āļĢāļąāļšāļŠāļđāđˆ Face Passive Liveness Detection API āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒ AI āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ āļˆāļģāļāļąāļ” API āļ‚āļ­āļ‡āđ€āļĢāļēāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļˆāļąāļšāļ§āđˆāļēāļ āļēāļžāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļ‚āđ‰āļēāļĄāļēāđ€āļ›āđ‡āļ™āļ‚āļ­āļ‡āļˆāļĢāļīāļ‡āļŦāļĢāļ·āļ­āļ‚āļ­āļ‡āļ›āļĨāļ­āļĄ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļĢāļđāđ‰āļˆāļģāđƒāļšāļŦāļ™āđ‰āļē API āļ™āļĩāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āđ‚āļ”āļĒ iBeta Level 1 āđāļĨāļ°āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ—āļ„āļ™āļīāļ„āļ•āđˆāļēāļ‡āđ† āđ€āļžāļ·āđˆāļ­āļĢāļ°āļšāļļāļ„āļ§āļēāļĄāļžāļĒāļēāļĒāļēāļĄāđƒāļ™āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļē

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

Example Images (Click to try)

Example 1

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

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

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

    • āđ€āļ§āļĨāļēāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļĢāļ§āļ”āđ€āļĢāđ‡āļ§
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļŠāļđāļ‡
    • āļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāđ„āļŸāļĨāđŒāļŦāļĨāļēāļĒāļĢāļđāļ›āđāļšāļš
    • āļĢāļąāļšāļĢāļ­āļ‡āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļĢāļ°āļ”āļąāļš iBeta Level 1
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ

    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļēāđ‚āļ”āļĒāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„āļ•āđˆāļēāļ‡āđ†
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļē
    • āļŦāļ™āđ‰āļēāļāļēāļāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļŠāļĄāļˆāļĢāļīāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĢāļđāļ›āļ–āđˆāļēāļĒāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ–āđˆāļēāļĒāļˆāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļāļēāļĢāđ€āļĨāđˆāļ™āļ§āļīāļ”āļĩāđ‚āļ­āļ‹āđ‰āļģ
    • āļ„āļ°āđāļ™āļ™āļāļēāļĢāļ—āļģāļ™āļēāļĒāđ‚āļ”āļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđāļĨāļ°āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™
    • āļāļēāļĢāļ§āļąāļ”āļĢāļ°āļ”āļąāļšāļ„āļ§āļēāļĄāļĄāļ·āļ”
    • āļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄāļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
  4. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”

    • āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ GDPR āđāļĨāļ° PDPA
    • āđ„āļĄāđˆāļĄāļĩ āļāļēāļĢāđ€āļāđ‡āļšāļĢāļąāļāļĐāļēāļ‚āđ‰āļ­āļĄāļđāļĨ āļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
    • āļĢāļąāļšāļĢāļ­āļ‡āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĢāļ°āļ”āļąāļš iBeta Level 1
āļ§āļīāļ˜āļĩāļĢāļąāļš API Key?

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

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

āļ„āļģāļ‚āļ­ Face Passive Liveness Detection:​

āđāļŠāļ”āļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļĢāļđāļ›āļ āļēāļž

Face Detection Example

  curl --location 'https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness' \
--header 'apikey: {YOUR API KEY}' \
--form 'file=@"{YOUR UPLOADED FILE}"'

āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš Face Passive Liveness Detection:​

{
"filename": "S__5333002.jpg",
"predict": "SPOOF",
"score": 0.9999989633974822,
"darkness": 0.51,
"data": {
"SPOOF": 0.9999990463256836,
"REAL": 9.35794162160164e-7
},
"normalized": {
"SPOOF": 0.9999989633974822,
"REAL": 1.0366025178232263e-6
},
"status_code": 200,
"duration": 0.35393,
"message": "SUCCESS"
}

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

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

  • āļ•āļĢāļ§āļˆāļˆāļąāļšāļ§āļīāļ˜āļĩāļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļēāļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™ āļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļē āļŦāļ™āđ‰āļēāļāļēāļāļ—āļĩāđˆāļŠāļĄāļˆāļĢāļīāļ‡ āļĢāļđāļ›āļ āļēāļžāļˆāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđāļĨāļ°āļ§āļīāļ”āļĩāđ‚āļ­āļ—āļĩāđˆāđ€āļĨāđˆāļ™āļ‹āđ‰āļģ
  • āđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđ€āļŠāļīāļ‡āļĨāļķāļāļ‚āļąāđ‰āļ™āļŠāļđāļ‡āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ„āļ§āļēāļĄāļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āļŠāļđāļ‡
  • āđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļāļ§āđˆāļē 99.43% āļˆāļēāļāļāļēāļĢāļ—āļ”āļŠāļ­āļš 7,680 āļ„āļĢāļąāđ‰āļ‡
  • āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āļĢāļ°āļ”āļąāļš iBeta Level 1 āļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāļĢāļđāđ‰āļˆāļģāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰
  • āļœāļŠāļēāļ™āļĢāļ§āļĄāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĢāļēāļšāļĢāļ·āđˆāļ™āļœāđˆāļēāļ™ RESTful API āđ€āļžāļ·āđˆāļ­āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļ‡āđˆāļēāļĒāđƒāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

āļŠāđˆāļ­āļ‡āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšâ€‹

  • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ„āļ§āļēāļĄāļžāļĒāļēāļĒāļēāļĄāđƒāļ™āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļē (āļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļē āļŦāļ™āđ‰āļēāļāļēāļ āļĢāļđāļ›āļ āļēāļžāļŦāļ™āđ‰āļēāļˆāļ­ āļ§āļīāļ”āļĩāđ‚āļ­āļ—āļĩāđˆāđ€āļĨāđˆāļ™āļ‹āđ‰āļģ)
  • āļ„āļ°āđāļ™āļ™āļ„āļ§āļēāļĄāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđāļ—āđ‰āļˆāļĢāļīāļ‡āđ€āļ—āļĩāļĒāļšāļāļąāļšāđƒāļšāļŦāļ™āđ‰āļēāļ›āļĨāļ­āļĄ
  • āđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļāļąāļšāļĢāļđāļ›āđāļšāļšāļĢāļđāļ›āļ āļēāļžāļĒāļ­āļ”āļ™āļīāļĒāļĄ āđ€āļŠāđˆāļ™ PNG, JPG, JPEG, HEIC āđāļĨāļ° HEIF

API Endpoints​

EndpointMethodāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļĢāļēāļ„āļē
POST /v3/store/ekyc/face-passive-liveness
Legacy: /anti_face_spoofing, /api/v2/fas, /face-spoofing, /passive-face-liveness-detection
POSTāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļš Face Liveness - āļ•āļĢāļ§āļˆāļˆāļąāļšāļ„āļ§āļēāļĄāļžāļĒāļēāļĒāļēāļĄāđƒāļ™āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡0.3 IC āļ•āđˆāļ­āļ„āļģāļ‚āļ­
POST /v3/store/ekyc/face-passive-liveness/v1p10
Legacy: /v1p10/facial_anti_spoofing
POSTāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļš Face Liveness (v1p10)0.3 IC āļ•āđˆāļ­āļ„āļģāļ‚āļ­

āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ API​

Face Passive Liveness Endpoints​

1. Face Passive Liveness Detection (Base)​

POST /v3/store/ekyc/face-passive-liveness

āļ•āļĢāļ§āļˆāļˆāļąāļšāļ§āđˆāļēāļ āļēāļžāđƒāļšāļŦāļ™āđ‰āļēāđ€āļ›āđ‡āļ™āļ‚āļ­āļ‡āļˆāļĢāļīāļ‡āļŦāļĢāļ·āļ­āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡ āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļē āļŦāļ™āđ‰āļēāļāļēāļāļ—āļĩāđˆāļŠāļĄāļˆāļĢāļīāļ‡ āļ āļēāļžāļˆāļąāļšāļŦāļ™āđ‰āļēāļˆāļ­ āđāļĨāļ°āļ§āļīāļ”āļĩāđ‚āļ­āļ—āļĩāđˆāđ€āļĨāđˆāļ™āļ‹āđ‰āļģ āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āļĢāļ°āļ”āļąāļš iBeta Level 1


2. Face Passive Liveness Detection (v1p10)​

POST /v3/store/ekyc/face-passive-liveness/v1p10

āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļ‚āļ­āļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļš Face Passive Liveness āļžāļĢāđ‰āļ­āļĄāļ­āļąāļĨāļāļ­āļĢāļīāļ—āļķāļĄāļ—āļĩāđˆāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđāļĨāđ‰āļ§āļŠāļģāļŦāļĢāļąāļšāļāļĢāļ“āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļ‰āļžāļēāļ°


āļĢāļđāļ›āđāļšāļšāļ„āļģāļ‚āļ­āđāļĨāļ°āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšâ€‹

Headers​

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

Request Body​

āļŠāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļ āļ—āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
fileFileāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļšāļ™āļēāļĢāļĩāļ‚āļ­āļ‡āļĢāļđāļ›āļ āļēāļž

Response​

{
"filename": "Image.jpeg",
"predict": "SPOOF",
"score": 0.9999590674225165,
"darkness": 0.29,
"data": {
"SPOOF": 0.9999197721481323,
"REAL": 8.024471753742546e-5
},
"normalized": {
"SPOOF": 0.9999590674225165,
"REAL": 4.093257748349899e-5
},
"status_code": 200,
"duration": 0.38198,
"message": "SUCCESS"
}

āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒāđƒāļ™āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšâ€‹

āļŠāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļ āļ—āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
filenameStringāļŠāļ·āđˆāļ­āđ„āļŸāļĨāđŒ
predictStringāļœāļĨāļāļēāļĢāļ—āļģāļ™āļēāļĒ āđ€āļ›āđ‡āļ™ REAL āļŦāļĢāļ·āļ­ SPOOF āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļ„āļ°āđāļ™āļ™āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™
scoreFloatāļ„āļ°āđāļ™āļ™āļāļēāļĢāļ—āļģāļ™āļēāļĒāļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™
darknessFloatāļĢāļ°āļ”āļąāļšāļ„āļ§āļēāļĄāļĄāļ·āļ”āđƒāļ™āļĢāļđāļ›āđāļšāļšāđ€āļ›āļ­āļĢāđŒāđ€āļ‹āđ‡āļ™āļ•āđŒ
dataDictionaryāļ„āļ°āđāļ™āļ™āļāļēāļĢāļ—āļģāļ™āļēāļĒāļŠāļģāļŦāļĢāļąāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ§āļ”āļŦāļĄāļđāđˆ REAL āđāļĨāļ° SPOOF āļāđˆāļ­āļ™āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™
normalizedDictionaryāļ„āļ°āđāļ™āļ™āļāļēāļĢāļ—āļģāļ™āļēāļĒāļŠāļģāļŦāļĢāļąāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ§āļ”āļŦāļĄāļđāđˆ REAL āđāļĨāļ° SPOOF āļŦāļĨāļąāļ‡āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™
status_codeIntegerāļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ—āļĩāđˆāļĢāļ°āļšāļļāļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆāļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
durationFloatāļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
messageStringāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļœāļĨāļĨāļąāļžāļ˜āđŒāļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

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

Curl​

curl -X POST https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness \
-H "apikey: YOUR API KEY" \
-F "file=@/path/to/file.jpg"

Python​

import requests

def detect_face_spoofing(image_path, api_key):
url = "https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness"
headers = {'apikey': {YOUR API KEY}}
files = {'file': open(image_path, 'rb')}
response = requests.post(url, headers=headers, files=files)
return response.json()

JavaScript​

const axios = require('axios');

async function detectFaceSpoofing(imagePath, apiKey) {
const url = "https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness";
const headers = { 'apikey': {YOUR API KEY} };
const formData = new FormData();
formData.append('file', fs.createReadStream(imagePath));

try {
const response = await axios.post(url, formData, { headers });
return response.data;
} catch (error) {
console.error('Error:', error);
}
}

PHP​

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR UPLOADED FILE}')),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Swift​

let parameters = [
[
"key": "file",
"src": "{YOUR UPLOADED FILE}",
"type": "file"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR API KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin​

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE}",
File("{YOUR UPLOADED FILE}").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build()
val response = client.newCall(request).execute()

Java​

OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR UPLOADED FILE}",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED FILE}")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness")
.method("POST", body)
.addHeader("apikey", "{YOUR API KEY}")
.build();
Response response = client.newCall(request).execute();

Dart​

var headers = {
'apikey': '{YOUR API KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness'));
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED FILE}'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

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

  • āđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļāļ§āđˆāļē 99.43% āļˆāļēāļāļāļēāļĢāļ—āļ”āļŠāļ­āļš 7,680 āļ„āļĢāļąāđ‰āļ‡
  • āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āļĢāļ°āļ”āļąāļš iBeta Level 1 āļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāļĢāļđāđ‰āļˆāļģāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰

āđƒāļšāļĢāļąāļšāļĢāļ­āļ‡ iBeta [iBeta Level 1]​

āļĢāļ°āļšāļšāļ™āļĩāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āļĢāļ°āļ”āļąāļš iBeta Level 1 āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļˆāļąāļšāļ„āļ§āļēāļĄāļžāļĒāļēāļĒāļēāļĄāđƒāļ™āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āđƒāļšāļŦāļ™āđ‰āļēāļœāđˆāļēāļ™āđ€āļ—āļ„āļ™āļīāļ„āļ•āđˆāļēāļ‡āđ† āļĢāļ§āļĄāļ–āļķāļ‡āļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļē āļŦāļ™āđ‰āļēāļāļēāļāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļŠāļĄāļˆāļĢāļīāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡ āļĢāļđāļ›āļ āļēāļžāļ—āļĩāđˆāļ–āđˆāļēāļĒāļˆāļēāļāļŦāļ™āđ‰āļēāļˆāļ­āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđāļĨāļ°āļ§āļīāļ”āļĩāđ‚āļ­āļ—āļĩāđˆāđ€āļĨāđˆāļ™āļ‹āđ‰āļģ

āļ”āļđāđƒāļšāļĢāļąāļšāļĢāļ­āļ‡ iBeta āļ—āļĩāđˆāļ™āļĩāđˆ

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

āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢProduction PathLegacy Pathāļ•āđ‰āļ™āļ—āļļāļ™ ICāļŦāļ™āđˆāļ§āļĒOn-Premise
Face Passive Liveness Detection/v3/store/ekyc/face-passive-liveness/anti_face_spoofing0.3 ICāļ•āđˆāļ­ 1 āļ„āļģāļ‚āļ­āļ•āļīāļ”āļ•āđˆāļ­āđ€āļĢāļē
Face Passive Liveness Detection (v1p10)/v3/store/ekyc/face-passive-liveness/v1p10/v1p10/facial_anti_spoofing0.3 ICāļ•āđˆāļ­ 1 āļ„āļģāļ‚āļ­