Skip to main content

🙂 āļĢāļ°āļšāļšāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āļ‚āļ­āļ‡āđƒāļšāļŦāļ™āđ‰āļēāđāļšāļšāđāļ­āļ„āļ—āļĩāļŸ Face Active Liveness Detection

1 ICāļ•āđˆāļ­āļ„āļģāļ‚āļ­ðŸ” āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™ HMAC
v1.0 Active āļ.āļ„. 2026 POST /v3/store/ekyc/face-active-liveness/finalize

āļĒāļīāļ™āļ”āļĩāļ•āđ‰āļ­āļ™āļĢāļąāļšāļŠāļđāđˆ Face Active Liveness Detection API āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒ AI āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ āļˆāļģāļāļąāļ” āđāļ•āļāļ•āđˆāļēāļ‡āļˆāļēāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸ (āļ‹āļķāđˆāļ‡āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļˆāļēāļāļ āļēāļžāđ€āļžāļĩāļĒāļ‡āļ āļēāļžāđ€āļ”āļĩāļĒāļ§) āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāđāļ­āļ„āļ—āļĩāļŸāļˆāļ°āļ‚āļ­āđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļ—āļĩāđˆāļŠāļļāđˆāļĄāļ‚āļķāđ‰āļ™ â€” āļāļ°āļžāļĢāļīāļšāļ•āļē āļŦāļąāļ™āļ‹āđ‰āļēāļĒ āļŦāļąāļ™āļ‚āļ§āļē āļĒāļīāđ‰āļĄ â€” āļ•āđˆāļ­āļŦāļ™āđ‰āļēāļāļĨāđ‰āļ­āļ‡ āđ€āļžāļ·āđˆāļ­āļžāļīāļŠāļđāļˆāļ™āđŒāļ§āđˆāļēāļĄāļĩāļšāļļāļ„āļ„āļĨāļˆāļĢāļīāļ‡āļ—āļĩāđˆāđƒāļŦāđ‰āļ„āļ§āļēāļĄāļĢāđˆāļ§āļĄāļĄāļ·āļ­āļ­āļĒāļđāđˆāļˆāļĢāļīāļ‡ āđ€āļ‹āļŠāļŠāļąāļ™āļˆāļ°āļ–āļđāļāļŠāļĢāļļāļ›āļœāļĨāļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āđāļĨāļ° API āļˆāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļ”āđ‰āļ§āļĒāļ§āļīāļ—āļĒāļēāļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļĨāļąāļš āļ‹āļķāđˆāļ‡āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļ‚āļ­āļ‡āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ­āļīāļŠāļĢāļ° āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāļ—āļĩāđˆāļ–āļđāļāļ”āļąāļ”āđāļ›āļĨāļ‡āļˆāļ°āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒ "āļœāđˆāļēāļ™" āđ„āļ”āđ‰āđ€āļĨāļĒ

āļ—āļ”āļĨāļ­āļ‡āđƒāļŠāđ‰ SDK (āļāļĨāđ‰āļ­āļ‡āļŠāļ”)​

āļ—āļ”āļĨāļ­āļ‡āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āđāļšāļšāđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļšāđ„āļ”āđ‰āļ—āļĩāđˆāļ™āļĩāđˆāđƒāļ™āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒ iApp eKYC Web SDK āđāļšāļšāđ‚āļ­āđ€āļžāļ™āļ‹āļ­āļĢāđŒāļŠāļŸāļĢāļĩ — SDK āļˆāļ°āļĨāđ‡āļ­āļāđƒāļšāļŦāļ™āđ‰āļēāļ‚āļ­āļ‡āļ„āļļāļ“ āļ­āļ­āļāļ„āļģāļŠāļąāđˆāļ‡āļ—āđˆāļēāļ—āļēāļ‡āđāļšāļšāļŠāļļāđˆāļĄ āđ€āļĨāļ·āļ­āļāđ€āļŸāļĢāļĄāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ” āđāļĨāđ‰āļ§āļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡ finalize API āļ”āļđāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ­āļ·āđˆāļ™āđ† āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ„āļ”āđ‰āļ—āļĩāđˆāļŦāļ™āđ‰āļēāđ€āļ”āđ‚āļĄāļŠāļ”āļ‚āļ­āļ‡ SDK āļ‰āļšāļąāļšāđ€āļ•āđ‡āļĄ

Loading live demoâ€Ķ

āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļģāļ‡āļēāļ™â€‹

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļĄāļēāđƒāļŦāđ‰āļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ”āđ‰āļ§āļĒ eKYC SDK āđāļšāļšāđ‚āļ­āđ€āļžāļ™āļ‹āļ­āļĢāđŒāļŠāļŸāļĢāļĩāļ‚āļ­āļ‡āđ€āļĢāļē (Flutter āđāļĨāļ°āđ€āļ§āđ‡āļš) āļ‹āļķāđˆāļ‡āļˆāļąāļ”āļāļēāļĢāļāļĨāđ‰āļ­āļ‡ āļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄāđƒāļšāļŦāļ™āđ‰āļē āđāļĨāļ°āļ•āļĢāļĢāļāļ°āļ‚āļ­āļ‡āļ—āđˆāļēāļ—āļēāļ‡āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāđƒāļŦāđ‰āļ—āļąāđ‰āļ‡āļŦāļĄāļ”:

  1. āļĨāđ‡āļ­āļāđƒāļšāļŦāļ™āđ‰āļē — SDK āļˆāļ°āļ„āđ‰āļ™āļŦāļēāđƒāļšāļŦāļ™āđ‰āļēāļ•āļĢāļ‡āđ€āļžāļĩāļĒāļ‡āļŦāļ™āļķāđˆāļ‡āđƒāļšāļŦāļ™āđ‰āļē āđāļĨāļ°āļĢāļ­āļˆāļ™āļāļ§āđˆāļēāđƒāļšāļŦāļ™āđ‰āļēāļˆāļ°āļ™āļīāđˆāļ‡āđāļĨāļ°āļ­āļĒāļđāđˆāđƒāļ™āļāļĢāļ­āļšāļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĄāļēāļ°āļŠāļĄ
  2. āļ—āđˆāļēāļ—āļēāļ‡āđāļšāļšāļŠāļļāđˆāļĄ â€” SDK āļˆāļ°āļŠāļļāđˆāļĄāđ€āļĨāļ·āļ­āļāļ—āđˆāļēāļ—āļēāļ‡āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™ 3 āļ—āđˆāļēāļˆāļēāļ āļāļ°āļžāļĢāļīāļšāļ•āļē / āļŦāļąāļ™āļ‹āđ‰āļēāļĒ / āļŦāļąāļ™āļ‚āļ§āļē / āļĒāļīāđ‰āļĄ āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļ•āđˆāļĨāļ°āļ—āđˆāļēāļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāđ‚āļ”āļĒāđƒāļŠāđ‰āļˆāļļāļ”āļŠāļąāļ‡āđ€āļāļ•āđƒāļšāļŦāļ™āđ‰āļē (face landmarks) āđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ (āđ€āļŠāđˆāļ™ āļāļēāļĢāļāļ°āļžāļĢāļīāļšāļ•āļēāļ•āđ‰āļ­āļ‡āđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļˆāļēāļāļŦāļĨāļąāļšāļ•āļēāđāļĨāđ‰āļ§āļĨāļ·āļĄāļ•āļē āļ”āļąāļ‡āļ™āļąāđ‰āļ™āļĢāļđāļ›āļ–āđˆāļēāļĒāļ—āļĩāđˆāļžāļīāļĄāļžāđŒāļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļ āļēāļžāļŦāļĨāļąāļšāļ•āļēāļˆāļķāļ‡āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļœāđˆāļēāļ™āđ„āļ”āđ‰)
  3. āļāļēāļĢāđ€āļĨāļ·āļ­āļāđ€āļŸāļĢāļĄāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ” â€” āļ•āļĨāļ­āļ”āļ—āļąāđ‰āļ‡āđ€āļ‹āļŠāļŠāļąāļ™ SDK āļˆāļ°āđƒāļŦāđ‰āļ„āļ°āđāļ™āļ™āļ—āļļāļāđ€āļŸāļĢāļĄāļ—āļĩāđˆāļ„āļĄāļŠāļąāļ” āđ€āļ›āđ‡āļ™āļ āļēāļžāļŦāļ™āđ‰āļēāļ•āļĢāļ‡ āđāļĨāļ°āļĨāļ·āļĄāļ•āļē āđāļĨāđ‰āļ§āđ€āļāđ‡āļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āđ„āļ§āđ‰ (āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ” Ã— āļ‚āļ™āļēāļ”āđƒāļšāļŦāļ™āđ‰āļē)
  4. āļŠāļĢāļļāļ›āļœāļĨ (Finalize) — SDK āļˆāļ°āļŠāđˆāļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļžāļĢāđ‰āļ­āļĄāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡ (challenge log) āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ›āļĢāļ°āļ—āļąāļšāđ€āļ§āļĨāļē āđ„āļ›āļĒāļąāļ‡ POST /v3/store/ekyc/face-active-liveness/finalize
  5. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‹āđ‰āļģāļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ — āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡ (āļ›āļĢāļ°āđ€āļ āļ—āļ—āđˆāļēāļ—āļēāļ‡āļ•āđ‰āļ­āļ‡āļ­āļĒāļđāđˆāđƒāļ™āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļ­āļ™āļļāļāļēāļ• āļĄāļĩāļ—āđˆāļēāļ—āļēāļ‡āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 2 āļ—āđˆāļē āļœāđˆāļēāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ” āļāļēāļĢāļ›āļĢāļ°āļ—āļąāļšāđ€āļ§āļĨāļēāļ•āđ‰āļ­āļ‡āđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™āļ­āļĒāđˆāļēāļ‡āđ€āļ„āļĢāđˆāļ‡āļ„āļĢāļąāļ” āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļ•āđˆāļ­āļ—āđˆāļēāļ—āļēāļ‡āļŠāļĄāđ€āļŦāļ•āļļāļŠāļĄāļœāļĨ āđāļĨāļ°āđ€āļ‹āļŠāļŠāļąāļ™āļĒāļąāļ‡āđƒāļŦāļĄāđˆāļ­āļĒāļđāđˆ) āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ‹āđ‰āļģāļ­āļĒāđˆāļēāļ‡āļ­āļīāļŠāļĢāļ°āļ”āđ‰āļ§āļĒāđ€āļ­āļ™āļˆāļīāļ™āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡ iBeta Level 1 āļ‚āļ­āļ‡āđ€āļĢāļē
  6. āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™ â€” āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļˆāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļ”āđ‰āļ§āļĒ HMAC-SHA256 āđ‚āļ”āļĒāļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļˆāļ°āļāļąāļ‡āļ„āđˆāļēāđāļŪāļŠ SHA-256 āļ‚āļ­āļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩ āļ‹āļķāđˆāļ‡āļœāļđāļāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđ€āļ‚āđ‰āļēāļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļšāļ•āđŒāļ‚āļ­āļ‡āļ āļēāļžāļ™āļąāđ‰āļ™āđ‚āļ”āļĒāļ•āļĢāļ‡ āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļ‚āļ­āļ‡āļ„āļļāļ“āļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļ”āđ‰āļ§āļĒāļĢāļŦāļąāļŠāļĨāļąāļšāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™ (shared secret) āļ—āļĩāđˆāļ­āļ­āļāđ‚āļ”āļĒ iApp āđāļĨāļ°āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ€āļ‰āļžāļēāļ°āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ â€” āđ„āļĄāđˆāđƒāļŠāđˆāļ„āļģāļāļĨāđˆāļēāļ§āļ­āđ‰āļēāļ‡āļˆāļēāļāļāļąāđˆāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđ€āļ­āļ‡

āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§āļ”āđ‰āļ§āļĒ SDK​

āļ§āļīāļ˜āļĩāļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§āļ—āļĩāđˆāļŠāļļāļ”āđƒāļ™āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāđāļ­āļ„āļ—āļĩāļŸāļ„āļ·āļ­ iApp eKYC SDK āļŸāļĢāļĩ āļ āļēāļĒāđƒāļ•āđ‰āļŠāļąāļāļāļēāļ­āļ™āļļāļāļēāļ• Apache-2.0 — āļ”āļđ āļ„āļđāđˆāļĄāļ·āļ­āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļ‡āļēāļ™ SDK

Flutter​

# pubspec.yaml
dependencies:
iapp_ekyc_sdk:
git:
url: https://github.com/iapp-technology/iapp-ekyc-sdk.git
path: flutter
import 'package:iapp_ekyc_sdk/iapp_ekyc_sdk.dart';

final client = IappEkycClient(apiKey: 'YOUR_API_KEY');

// āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āļ‚āļ­āļ‡āđƒāļšāļŦāļ™āđ‰āļēāđāļšāļšāđāļ­āļ„āļ—āļĩāļŸ āļžāļĢāđ‰āļ­āļĄāļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āđ‚āļ”āļĒāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
final liveness = await ActiveLivenessView.start(context, client: client);
if (liveness.verdict.passed) { /* āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™āļ•āđˆāļ­ */ }

āđ€āļ§āđ‡āļš (JavaScript)​

npm install @iapp-technology/ekyc-sdk
import { IappEkyc } from '@iapp-technology/ekyc-sdk';

const ekyc = new IappEkyc({ apiKey: 'YOUR_API_KEY' });

const liveness = await ekyc.startActiveLiveness({
mount: document.getElementById('ekyc-mount'),
});

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

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

    • āļ„āļĩāļĒāđŒ API āļˆāļēāļ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ
    • eKYC SDK (āđāļ™āļ°āļ™āļģ) āļŦāļĢāļ·āļ­āļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāļ—āļĩāđˆāđ€āļ—āļĩāļĒāļšāđ€āļ—āđˆāļēāļ‹āļķāđˆāļ‡āļžāļąāļ’āļ™āļēāļ‚āļķāđ‰āļ™āđ€āļ­āļ‡
    • āļĢāļđāļ›āđāļšāļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩ: JPEG, JPG, PNG
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 10MB
  2. āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§

    • āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāđƒāļŠāđ‰āļāļĨāđ‰āļ­āļ‡āļœāđˆāļēāļ™ SDK āđāļšāļšāļžāļĢāđ‰āļ­āļĄāđƒāļŠāđ‰āļ‡āļēāļ™āļŠāļģāļŦāļĢāļąāļš Flutter (Android/iOS) āđāļĨāļ°āđ€āļ§āđ‡āļš
    • āļĨāļģāļ”āļąāļšāļ—āđˆāļēāļ—āļēāļ‡āđāļšāļšāļŠāļļāđˆāļĄāđƒāļ™āļ—āļļāļāđ€āļ‹āļŠāļŠāļąāļ™
    • āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āđ‚āļ”āļĒāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļžāļ·āđˆāļ­āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļ›āļĨāļ­āļĄāđāļ›āļĨāļ‡
    • āļĢāļ­āļ‡āļĢāļąāļšāļ”āđ‰āļ§āļĒāđ€āļ­āļ™āļˆāļīāļ™āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡ iBeta Level 1 āļ‚āļ­āļ‡āđ€āļĢāļē
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ

    • āļ—āđˆāļēāļ—āļēāļ‡āļāļ°āļžāļĢāļīāļšāļ•āļē āļŦāļąāļ™āļ‹āđ‰āļēāļĒ āļŦāļąāļ™āļ‚āļ§āļē āđāļĨāļ°āļĒāļīāđ‰āļĄ
    • āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļāļ‡: āđ€āļ‹āļŠāļŠāļąāļ™āļˆāļ°āđ€āļĢāļīāđˆāļĄāđƒāļŦāļĄāđˆāđ€āļĄāļ·āđˆāļ­āđƒāļšāļŦāļ™āđ‰āļēāļŦāļēāļĒāđ„āļ› āļĄāļĩāļŦāļĨāļēāļĒāđƒāļšāļŦāļ™āđ‰āļē āļŦāļĢāļ·āļ­āļĄāļĩāļāļēāļĢāļŠāļĨāļąāļšāļ•āļąāļ§āļšāļļāļ„āļ„āļĨ
    • āļāļēāļĢāđ€āļĨāļ·āļ­āļāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļˆāļēāļāđ€āļŸāļĢāļĄāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ” (āđƒāļŦāđ‰āļ„āļ°āđāļ™āļ™āļ•āļēāļĄāļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”)
    • āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™ HMAC-SHA256 āļ—āļĩāđˆāļœāļđāļāļāļąāļšāļ„āđˆāļēāđāļŪāļŠ SHA-256 āļ‚āļ­āļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩ
  4. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”

    • āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ GDPR āđāļĨāļ° PDPA
    • āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāđ€āļāđ‡āļšāļĢāļąāļāļĐāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļđāļ›āļ āļēāļžāļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
    • āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļšāļšāļ­āļ­āļŸāđ„āļĨāļ™āđŒāļšāļ™āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļ‚āļ­āļ‡āļ„āļļāļ“āđ„āļ”āđ‰
āļ§āļīāļ˜āļĩāļĢāļąāļš API Key?

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

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

āļ„āļģāļ‚āļ­ Face Active Liveness Finalize:​

SDK āļˆāļ°āļŠāļĢāđ‰āļēāļ‡āļ„āļģāļ‚āļ­āļ™āļĩāđ‰āđƒāļŦāđ‰āļ„āļļāļ“āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļŦāļēāļāļ„āļļāļ“āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ API āđ‚āļ”āļĒāļ•āļĢāļ‡ āđƒāļŦāđ‰āļŠāđˆāļ‡āđ€āļŸāļĢāļĄāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļžāļĢāđ‰āļ­āļĄāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āđƒāļ™āļĢāļđāļ›āđāļšāļš JSON āļ—āļĩāđˆāļšāļąāļ™āļ—āļķāļāđ„āļ§āđ‰āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒ:

curl --location 'https://api.iapp.co.th/v3/store/ekyc/face-active-liveness/finalize' \
--header 'apikey: {YOUR API KEY}' \
--form 'file=@"selfie.jpg"' \
--form 'challenges={
"session_id": "b0e7c1a2-4f5d-4e6a-9b8c-7d6e5f4a3b2c",
"sdk": { "name": "iapp-ekyc-sdk-flutter", "version": "0.1.0", "platform": "android" },
"started_at": 1767500000000,
"finished_at": 1767500008000,
"challenges": [
{ "type": "blink", "issued_at": 1767500000123, "completed_at": 1767500001873, "passed": true },
{ "type": "turn_left", "issued_at": 1767500002000, "completed_at": 1767500004100, "passed": true },
{ "type": "smile", "issued_at": 1767500004500, "completed_at": 1767500006900, "passed": true }
]
}'

āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļš Face Active Liveness Finalize:​

{
"verdict": {
"passed": true,
"passive_liveness": { "predict": "REAL", "real_score": 0.9999, "threshold": 0.5 },
"challenge_summary": {
"total": 3,
"passed": 3,
"types": ["blink", "turn_left", "smile"],
"duration_ms": 8000,
"valid": true,
"reasons": []
},
"session_id": "b0e7c1a2-4f5d-4e6a-9b8c-7d6e5f4a3b2c",
"selfie_sha256": "ab12cd34ef56ab12cd34ef56ab12cd34ef56ab12cd34ef56ab12cd34ef56ab12",
"timestamp": "2026-07-04T09:00:00.000Z",
"nonce": "9f3a1c7e2b8d4f60"
},
"signature": "hex(HMAC-SHA256(secret, canonicalJSON(verdict)))",
"signature_alg": "HMAC-SHA256",
"process_time": 0.42
}

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ (Node.js):​

āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļ‚āļ­āļ‡āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļ„āļģāļ™āļ§āļ“ HMAC āļ‹āđ‰āļģāļˆāļēāļ canonical JSON āļ‚āļ­āļ‡ verdict (āđ€āļĢāļĩāļĒāļ‡āļĨāļģāļ”āļąāļšāļ„āļĩāļĒāđŒāļ‚āļ­āļ‡āļ­āļ­āļšāđ€āļˆāđ‡āļāļ•āđŒāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđāļšāļšāđ€āļĢāļĩāļĒāļāļ‹āđ‰āļģ āđ„āļĄāđˆāļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļ—āļĩāđˆāđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™ āđāļĨāļ°āđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāđāļšāļš UTF-8) āđ‚āļ”āļĒāđƒāļŠāđ‰āļĢāļŦāļąāļŠāļĨāļąāļšāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™āļ‹āļķāđˆāļ‡āļ­āļ­āļāđ‚āļ”āļĒ iApp āđāļĨāđ‰āļ§āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāđāļšāļš constant time:

const crypto = require('crypto');
const sortKeysDeep = (v) =>
Array.isArray(v) ? v.map(sortKeysDeep)
: v && typeof v === 'object'
? Object.fromEntries(Object.keys(v).sort().map((k) => [k, sortKeysDeep(v[k])]))
: v;
const canonical = (o) => JSON.stringify(sortKeysDeep(o));
const expected = crypto.createHmac('sha256', SECRET).update(canonical(verdict)).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected, 'hex'), Buffer.from(signature, 'hex'));

āļˆāļēāļāļ™āļąāđ‰āļ™āļ•āļĢāļ§āļˆāļŠāļ­āļš verdict.passed āļ„āļ§āļēāļĄāđƒāļŦāļĄāđˆāļ‚āļ­āļ‡ verdict.timestamp āđāļĨāļ° â€” āļŦāļēāļāļĄāļĩāļāļēāļĢāļŠāđˆāļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāđāļĒāļāļ•āđˆāļēāļ‡āļŦāļēāļ â€” āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļēāļ„āđˆāļē SHA-256 āļ‚āļ­āļ‡āļ āļēāļžāļ•āļĢāļ‡āļāļąāļš verdict.selfie_sha256

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

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

  • āļĨāļģāļ”āļąāļšāļ—āđˆāļēāļ—āļēāļ‡āđāļšāļšāļŠāļļāđˆāļĄāļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒ (āļāļ°āļžāļĢāļīāļšāļ•āļē āļŦāļąāļ™āļ‹āđ‰āļēāļĒ āļŦāļąāļ™āļ‚āļ§āļē āļĒāļīāđ‰āļĄ) āđƒāļ™āļ—āļļāļāđ€āļ‹āļŠāļŠāļąāļ™ â€” āļ­āļ­āļāđāļšāļšāļĄāļēāđƒāļŦāđ‰āļ—āļ™āļ—āļēāļ™āļ•āđˆāļ­āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļšāđ€āļĨāđˆāļ™āļ‹āđ‰āļģ (replay)
  • āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ‹āđ‰āļģāļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ”āđ‰āļ§āļĒāđ€āļ­āļ™āļˆāļīāļ™āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡ iBeta Level 1 āļ‚āļ­āļ‡āđ€āļĢāļē
  • āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™ HMAC-SHA256 āļ—āļĩāđˆāļœāļđāļāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđ€āļ‚āđ‰āļēāļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļšāļ•āđŒāļ‚āļ­āļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļœāđˆāļēāļ™ selfie_sha256
  • āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļ­āļĒāđˆāļēāļ‡āđ€āļ‚āđ‰āļĄāļ‡āļ§āļ”: āļ›āļĢāļ°āđ€āļ āļ—āļ•āđ‰āļ­āļ‡āļ­āļĒāļđāđˆāđƒāļ™āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļ­āļ™āļļāļāļēāļ• āļĄāļĩāļ—āđˆāļēāļ—āļēāļ‡āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 2 āļ—āđˆāļē āļāļēāļĢāļ›āļĢāļ°āļ—āļąāļšāđ€āļ§āļĨāļēāđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™āļ­āļĒāđˆāļēāļ‡āđ€āļ„āļĢāđˆāļ‡āļ„āļĢāļąāļ” āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļ•āđˆāļ­āļ—āđˆāļēāļ—āļēāļ‡ 300 ms–30 s āļ„āļ§āļēāļĄāļĒāļēāļ§āđ€āļ‹āļŠāļŠāļąāļ™ â‰Ī 120 s āđāļĨāļ°āļ„āļ§āļēāļĄāđƒāļŦāļĄāđˆāļ āļēāļĒāđƒāļ™ 5 āļ™āļēāļ—āļĩāļˆāļēāļāđ€āļ§āļĨāļēāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
  • SDK āļāļąāđˆāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđāļšāļšāđ‚āļ­āđ€āļžāļ™āļ‹āļ­āļĢāđŒāļŠāļŸāļĢāļĩāļŠāļģāļŦāļĢāļąāļš Flutter (Android/iOS) āđāļĨāļ°āđ€āļ§āđ‡āļš āļžāļĢāđ‰āļ­āļĄ UI āļ—āļĩāđˆāļ›āļĢāļąāļšāđāļ•āđˆāļ‡āļ˜āļĩāļĄāđ„āļ”āđ‰āđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļšāđƒāļ™āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ āđ„āļ—āļĒ āđāļĨāļ°āļˆāļĩāļ™

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

  • āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļœāđˆāļēāļ™/āđ„āļĄāđˆāļœāđˆāļēāļ™ āļžāļĢāđ‰āļ­āļĄāļ„āļ°āđāļ™āļ™āđāļĨāļ°āļ„āđˆāļēāđ€āļāļ“āļ‘āđŒ (threshold) āļ‚āļ­āļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸ
  • āļŠāļĢāļļāļ›āļ—āđˆāļēāļ—āļēāļ‡āļ•āđˆāļ­āđ€āļ‹āļŠāļŠāļąāļ™ (āļ›āļĢāļ°āđ€āļ āļ— āļˆāļģāļ™āļ§āļ™ āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļē āđ€āļŦāļ•āļļāļœāļĨāļ‚āļ­āļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡)
  • āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļŠāđˆāļ‡āļ„āļ·āļ™āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāđ‰āļ§āđƒāļ™āļĢāļđāļ›āđāļšāļš base64 (return_image=true)
  • āđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļāļąāļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļĢāļđāļ›āđāļšāļš JPEG, JPG āđāļĨāļ° PNG

API Endpoints​

EndpointMethodāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļĢāļēāļ„āļē
POST /v3/store/ekyc/face-active-liveness/finalizePOSTāļŠāļĢāļļāļ›āļœāļĨāđ€āļ‹āļŠāļŠāļąāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāđāļ­āļ„āļ—āļĩāļŸ â€” āļ•āļĢāļ§āļˆāļŠāļ­āļšāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡ āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ‹āđ‰āļģ āđāļĨāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™1 IC āļ•āđˆāļ­āļ„āļģāļ‚āļ­

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

Face Active Liveness Endpoints​

1. Face Active Liveness Finalize​

POST /v3/store/ekyc/face-active-liveness/finalize

āļŠāļĢāļļāļ›āļœāļĨāđ€āļ‹āļŠāļŠāļąāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāđāļ­āļ„āļ—āļĩāļŸ āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒ āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļŸāļĢāļĄāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ‹āđ‰āļģāļ”āđ‰āļ§āļĒāđ€āļ­āļ™āļˆāļīāļ™āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸ āđāļĨāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļ”āđ‰āļ§āļĒ HMAC-SHA256

SDK āļ„āļ·āļ­āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāļ—āļĩāđˆāļ­āļ­āļāđāļšāļšāļĄāļēāđƒāļŦāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™

āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ endpoint āļ™āļĩāđ‰āđ‚āļ”āļĒāļ•āļĢāļ‡ āļ„āļļāļ“āļˆāļ°āļ•āđ‰āļ­āļ‡āļžāļąāļ’āļ™āļēāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāļ—āļĩāđˆāđ€āļ—āļĩāļĒāļšāđ€āļ—āđˆāļēāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡ (āļāļēāļĢāļŠāļļāđˆāļĄāđ€āļĨāļ·āļ­āļāļ—āđˆāļēāļ—āļēāļ‡ āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ”āđ‰āļ§āļĒāļˆāļļāļ”āļŠāļąāļ‡āđ€āļāļ•āđƒāļšāļŦāļ™āđ‰āļēāđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ āļāļēāļĢāļ›āļĢāļ°āļ—āļąāļšāđ€āļ§āļĨāļēāļ™āļēāļŽāļīāļāļēāļˆāļĢāļīāļ‡āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡) eKYC SDK āļ„āļ·āļ­āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāļ—āļĩāđˆāļ­āļ­āļāđāļšāļšāļĄāļēāļŠāļģāļŦāļĢāļąāļšāļ‡āļēāļ™āļ™āļĩāđ‰āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ™āļĩāđ‰āđƒāļŦāđ‰āļ„āļļāļ“


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

Headers​

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

Request Body (multipart/form-data)​

āļŠāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļ āļ—āļˆāļģāđ€āļ›āđ‡āļ™āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
fileFileāđƒāļŠāđˆāđ€āļŸāļĢāļĄāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļˆāļēāļāđ€āļ‹āļŠāļŠāļąāļ™ (JPEG/PNG āļĄāļĩāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš magic byte āļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āļŠāļđāļ‡āļŠāļļāļ” 10MB)
challengesStringāđƒāļŠāđˆāļŠāļ•āļĢāļīāļ‡ JSON āļ‚āļ­āļ‡āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡ â€” āļĢāļŦāļąāļŠāđ€āļ‹āļŠāļŠāļąāļ™ āļ‚āđ‰āļ­āļĄāļđāļĨ SDK āđāļĨāļ°āļāļēāļĢāļ›āļĢāļ°āļ—āļąāļšāđ€āļ§āļĨāļēāļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļ—āđˆāļēāļ—āļēāļ‡ (āļ”āļđāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļšāļ™)
return_imageStringāđ„āļĄāđˆāļāļģāļŦāļ™āļ”āđ€āļ›āđ‡āļ™ "true" āđ€āļžāļ·āđˆāļ­āļĢāļąāļšāļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļŠāđˆāļ‡āļāļĨāļąāļšāđƒāļ™āļĢāļđāļ›āđāļšāļš base64 āđƒāļ™āļŸāļīāļĨāļ”āđŒ selfie (āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­āđ„āļĄāđˆāļŠāđˆāļ‡)

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

āļŠāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļ āļ—āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
verdictDictionaryāļ­āļ­āļšāđ€āļˆāđ‡āļāļ•āđŒāļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™
verdict.passedBooleanāļœāļĨāļĨāļąāļžāļ˜āđŒāđ‚āļ”āļĒāļĢāļ§āļĄ â€” āđ€āļ›āđ‡āļ™ true āđ€āļ‰āļžāļēāļ°āđ€āļĄāļ·āđˆāļ­āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļ–āļđāļāļ•āđ‰āļ­āļ‡ āđāļĨāļ°āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļœāđˆāļēāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸ
verdict.passive_livenessDictionaryāļœāļĨāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‹āđ‰āļģāđāļšāļšāļžāļēāļŠāļ‹āļĩāļŸ: predict (REAL/SPOOF), real_score, threshold
verdict.challenge_summaryDictionaryāļœāļĨāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ—āđˆāļēāļ—āļēāļ‡: total, passed, types, duration_ms, valid, reasons
verdict.session_idStringUUID āļ‚āļ­āļ‡āđ€āļ‹āļŠāļŠāļąāļ™āļ—āļĩāđˆāļŠāđˆāļ‡āļāļĨāļąāļšāļˆāļēāļāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡
verdict.selfie_sha256Stringāļ„āđˆāļēāđāļŪāļŠ SHA-256 (64 āļ­āļąāļāļ‚āļĢāļ°āļāļēāļ™āļŠāļīāļšāļŦāļ) āļ‚āļ­āļ‡āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļ—āļĩāđˆāļ­āļąāļ›āđ‚āļŦāļĨāļ” â€” āļœāļđāļāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āđ€āļ‚āđ‰āļēāļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļšāļ•āđŒāļ‚āļ­āļ‡āļ āļēāļž
verdict.timestampStringāđ€āļ§āļĨāļēāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ‚āļ­āļ‡āļœāļĨāļ•āļąāļ”āļŠāļīāļ™ (ISO 8601)
verdict.nonceStringāļ„āđˆāļē nonce āđāļšāļšāļŠāļļāđˆāļĄāļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āđāļ•āđˆāļĨāļ°āļĢāļēāļĒāļāļēāļĢāđ„āļĄāđˆāļ‹āđ‰āļģāļāļąāļ™
signatureStringāļ„āđˆāļē HMAC-SHA256 āđāļšāļšāļāļēāļ™āļŠāļīāļšāļŦāļāļ‚āļ­āļ‡ canonical JSON āļ‚āļ­āļ‡ verdict āđ‚āļ”āļĒāđƒāļŠāđ‰āļĢāļŦāļąāļŠāļĨāļąāļšāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“
signature_algStringāđ€āļ›āđ‡āļ™ HMAC-SHA256 āđ€āļŠāļĄāļ­
selfieDictionaryāđ€āļ‰āļžāļēāļ°āđ€āļĄāļ·āđˆāļ­ return_image=true: filename, content_type, size, image_base64
process_timeFloatāđ€āļ§āļĨāļēāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ§āļīāļ™āļēāļ—āļĩ

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

āļĢāļŦāļąāļŠāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
400INVALID_CHALLENGE_LOG / INVALID_IMAGE / MISSING_FIELDāļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ—āļģāļ—āđˆāļēāļ—āļēāļ‡āļœāļīāļ”āļĢāļđāļ›āđāļšāļš āļĢāļđāļ›āļ āļēāļžāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļŦāļĢāļ·āļ­āļ‚āļēāļ”āļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™ (āļžāļĢāđ‰āļ­āļĄāļ­āļēāļĢāđŒāđ€āļĢāļĒāđŒ reasons)
401āļ„āļĩāļĒāđŒ API āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāļŦāļĢāļ·āļ­āļĄāļĩ header apikey āļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ (gateway)
402āđ€āļ„āļĢāļ”āļīāļ•āđ„āļĄāđˆāđ€āļžāļĩāļĒāļ‡āļžāļ­āđ€āļ•āļīāļĄāđ€āļ„āļĢāļ”āļīāļ•āđ„āļ”āđ‰āļ—āļĩāđˆ Credits (gateway)
413āđ„āļŸāļĨāđŒāļĄāļĩāļ‚āļ™āļēāļ”āđƒāļŦāļāđˆāđ€āļāļīāļ™āđ„āļ›āļ āļēāļžāđ€āļ‹āļĨāļŸāļĩāļĄāļĩāļ‚āļ™āļēāļ”āđ€āļāļīāļ™āļ‚āļĩāļ”āļˆāļģāļāļąāļ” 10MB
502UPSTREAM_UNAVAILABLEāđ€āļ­āļ™āļˆāļīāļ™āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđ„āļĄāđˆāļžāļĢāđ‰āļ­āļĄāđƒāļŠāđ‰āļ‡āļēāļ™āļŠāļąāđˆāļ§āļ„āļĢāļēāļ§ â€” āļāļĢāļļāļ“āļēāļĨāļ­āļ‡āđƒāļŦāļĄāđˆāļ āļēāļĒāļŦāļĨāļąāļ‡
āļāļēāļĢāļ„āļīāļ”āļ„āđˆāļēāļšāļĢāļīāļāļēāļĢ

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ—āļĩāđˆāđ€āļŠāļĢāđ‡āļˆāļŠāļĄāļšāļđāļĢāļ“āđŒāļ‹āļķāđˆāļ‡āļŠāđˆāļ‡āļ„āļ·āļ™ "passed": false āļĒāļąāļ‡āļ„āļ‡āđ€āļ›āđ‡āļ™ HTTP 200 āđāļĨāļ°āļ„āļīāļ”āļ„āđˆāļēāļšāļĢāļīāļāļēāļĢ 1 IC — āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļĄāļĩāļŠāļĩāļ§āļīāļ•āđ„āļ”āđ‰āļ—āļģāļ‡āļēāļ™āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āļœāļĨāļ•āļąāļ”āļŠāļīāļ™āļ—āļĩāđˆāļĨāļ‡āļĨāļēāļĒāđ€āļ‹āđ‡āļ™āđāļĨāđ‰āļ§ āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” (400/401/402/413/502) āļˆāļ°āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ„āļīāļ”āļ„āđˆāļēāļšāļĢāļīāļāļēāļĢ

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

āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢProduction Pathāļ•āđ‰āļ™āļ—āļļāļ™ ICāļŦāļ™āđˆāļ§āļĒOn-Premise
Face Active Liveness Finalize/v3/store/ekyc/face-active-liveness/finalize1 ICāļ•āđˆāļ­ 1 āļ„āļģāļ‚āļ­āļ•āļīāļ”āļ•āđˆāļ­āđ€āļĢāļē