Skip to main content
Active Liveness adds interactive challenges during the selfie step — requiring the user to turn their head, smile, and blink — to provide stronger anti-spoofing protection than passive liveness alone.

Passive vs Active Liveness

FeaturePassive LivenessActive Liveness
User actionNone (single photo)Head turns, smile, blink
Frames analyzed18 — 12
Spoof resistanceStandardHigh
Detects printed photosYesYes
Detects screen replayLimitedYes
Detects 3D masksLimitedYes
User frictionVery lowLow — moderate
Best forLow-risk onboardingRegulated industries, high-value accounts

How It Works

1

Challenge prompt

The user is shown a series of on-screen prompts: turn head left, turn head right, smile, and blink. The order is randomized per session.
2

Multi-frame capture

The SDK captures 8-12 frames during the challenge sequence, analyzing pose variation and expression changes.
3

Scoring

Each frame is evaluated for pose angle, expression detection, and texture analysis. The scores are aggregated into a final liveness result.
4

Result

The session receives a liveness score (0-100) and a pass/fail determination based on the configured threshold.

Configuration

Enable active liveness in the Dashboard > Workflows > Liveness Settings, or set it per session via the API:
{
  "profile": {
    "steps": ["document", "selfie"],
    "liveness_mode": "active"
  }
}
FieldTypeDefaultDescription
liveness_modestringpassivepassive or active
liveness_thresholdinteger75Minimum score to pass (0-100)
liveness_challengesarrayallSubset of challenges: head_left, head_right, smile, blink

Example: Custom Challenges

{
  "profile": {
    "steps": ["document", "selfie"],
    "liveness_mode": "active",
    "liveness_threshold": 80,
    "liveness_challenges": ["head_left", "head_right", "blink"]
  }
}

Scoring Breakdown

The active liveness score is composed of two primary factors:
FactorWeightDescription
Pose variation50%Measures actual head movement across frames. Higher variation indicates genuine motion.
Expression variation50%Detects expression changes (smile, blink). Ensures the user is responding to prompts.

Score Thresholds

ScoreInterpretation
90 — 100Very high confidence of a live person
75 — 89High confidence — default pass threshold
50 — 74Moderate confidence — may warrant manual review
0 — 49Low confidence — likely spoofed

API Response

The session detail response includes the liveness_mode field and active liveness data:
{
  "id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "approved",
  "selfie": {
    "liveness_mode": "active",
    "liveness_score": 92.5,
    "liveness_passed": true,
    "liveness_threshold": 75,
    "challenges_completed": ["head_left", "head_right", "smile", "blink"],
    "frames_captured": 10,
    "pose_variation_score": 94.0,
    "expression_variation_score": 91.0
  }
}
FieldTypeDescription
liveness_modestringpassive or active
liveness_scorenumberAggregated liveness score (0-100)
liveness_passedbooleanWhether the score met the threshold
liveness_thresholdintegerThreshold used for pass/fail
challenges_completedarrayChallenges the user completed
frames_capturedintegerNumber of frames analyzed
pose_variation_scorenumberHead movement score (0-100)
expression_variation_scorenumberExpression change score (0-100)
Active liveness requires the Verilock Web SDK or mobile SDKs. It is not available for API-only document upload flows.
Start with passive liveness for low-risk use cases and upgrade to active liveness for higher-risk scenarios. You can use different liveness modes across different verification workflows.