Passive Liveness
Passive Liveness Check
Passive liveness verifies that a selfie comes from a real person who is physically present, and not from a photo, a screen, or a manipulated image. The check runs in the backend using AI and ML image analysis, and returns a selfie score.
Attack Vendors Covered
2D Paper Photo

Paper Cut Photo

Paper Cut Photo with Property

Paper Mask with Eye-Hole

Mobile Screen Attack

Monitor Screen Attack

Black & White

Selfie Score
The selfie score ranges from 0 to 1. A score of 0 means maximum liveness, and 1 means minimum liveness. Whether the check passes or fails depends on the liveness threshold score.
Video Liveness (Passive Liveness with Video Input)
Video Liveness is a capture mode for passive liveness. Instead of sending one selfie, the SDK records a short video, the backend picks the sharpest frame, and the normal liveness check runs on that frame.
The purpose is to reduce rejection of genuine users. With a single capture, the check runs on whatever image the user happened to take — if it is blurred, badly exposed, or taken mid-blink, a real user can be rejected. With video, the backend has several frames to choose from.
The liveness models, the attack types detected, and the threshold logic are the same as single image. Only the following differ:
SDK sends
One selfie image
A short video
Available on
Mobile SDK, Web SDK
Mobile SDK only (Android 1.9.7+, iOS 1.9.5+)
How to enable
Default
OSS configuration, no client code change
Review screen
Supported
Not supported
Extra response field
-
best_frame_for_prediction
Before you enable it
Video Liveness is available on the Mobile SDK only (Android 1.9.7+, iOS 1.9.5+). It is not available on the Web SDK.
The review screen is not supported for this capture mode — the verification flow completes without it.
How it works
Capture — the SDK records a short video, uploads it to storage, and sends the reference to the backend.
Frame selection — the backend selects the best frame. If selection fails, a frame is picked at random so the transaction can still be evaluated.
Evaluation — the selected frame is checked in parallel by three services: image quality, liveness, and image manipulation (deepfake) detection.
Response — the API returns the scores and the frame that was used.
Response
Video Liveness returns the same score fields as single-image passive liveness, plus the frame that was evaluated. All score values are returned as strings.
liveness_scores
Liveness score and the threshold applied
quality_scores
Image quality scores for the selected frame: blurriness, under exposure, over exposure, unnatural colour, eyes closed
image_manipulation_scores
Manipulation (deepfake) score and threshold. Returns 0 when manipulation detection is disabled for the client
best_frame_for_prediction
The frame used for the evaluation, returned as a base64 JPEG resized to 480p
code, message
Result code and message
A transaction is accepted when the liveness score, the manipulation score, and the quality score are all below their thresholds. The default threshold is 0.95 and is configurable per client.
To enable Video Liveness for a client, contact the VIDA support team.
Last updated
