Skip to main content
POST
Face Liveness Check
The Face Liveness Check endpoint analyzes a submitted selfie — recommended as a short video, though a single photo is also accepted — to confirm it shows a live person, not a spoofed replay (a photo of a photo, a screen recording, etc.). It scores liveness directly; it does not compare the submission against any other image. Both a video and a still photo are genuinely scored for liveness, so a still image works too — but a short video is the recommended submission, since motion gives the liveness check more to work with. The endpoint detects which was submitted from the file itself.

Endpoint

Request

Headers

Body Parameters

Example

Response

The HTTP status is 200 whenever the check ran to completion, regardless of whether liveness passed or failed — a failed liveness attempt is a normal, successful check outcome, not an error. Read status/data.status in the body to get the real verdict; a 400 means the request itself couldn’t be processed (missing field, unreadable file, authentication problem), not that liveness failed.

200 OK — liveness passed

200 OK — liveness failed (still a successful check)

400 Bad Request

Returned when the request itself couldn’t be processed — a missing live_media field, an unreachable/unreadable URL, or an unexpected error from the underlying check.

401 Unauthorized

Authorizations

x-access-token
string
header
required

Your Adhere API secret key

Body

application/json
live_media
string
required

URL of the short selfie video to check for liveness (recommended — supported formats .mp4, .mov, .webm, .avi, .m4v). A still selfie photo is also accepted — anything that isn't one of those video formats is treated as a still image. Both a video and a still photo are genuinely scored for liveness; the endpoint detects which was submitted from the file itself.

Response

Liveness check ran to completion. Returned for both a pass and a fail — a failed liveness attempt is a normal, successful check outcome, not an error. Read data.status / data.liveness_passed for the real verdict.