Introducing VIDA Identity Stack: All of VIDA, in one place 🎉
For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Type of Attack Vector
Examples

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.

Liveness detection can be disabled if required. Please contact the VIDA support team, if it needs to be disabled.

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:

Single image (default)
Video input

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

Important Video Liveness and Color Flash cannot be enabled together. Both are configured through OSS and cannot be active at the same time for one client. If both are switched on, the SDK runs Color Flash, not Video Liveness.

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

  1. Capture — the SDK records a short video, uploads it to storage, and sends the reference to the backend.

  2. Frame selection — the backend selects the best frame. If selection fails, a frame is picked at random so the transaction can still be evaluated.

  3. Evaluation — the selected frame is checked in parallel by three services: image quality, liveness, and image manipulation (deepfake) detection.

  4. 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.

Field
Description

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.

The check runs on one frame. The video is only used to select the best frame — the liveness evaluation itself is still performed on a single image.

To enable Video Liveness for a client, contact the VIDA support team.

Last updated