Confirm a real, present human — not a photo, screen replay, or mask
Liveness
Liveness answers: is there a live human in front of the camera right now?
It defends against presentation attacks — the cheapest and most common fraud vector, because they need no AI at all: a printed photo, a phone screen held up to the camera, a paper cutout, a silicone mask.
Modes
| Mode | How it works | Best for |
|---|---|---|
| Passive | A single selfie frame is analysed for texture, depth, reflection, and moiré signals. No user action required. | High-volume onboarding where friction matters. |
| Active | The user follows a randomised challenge (turn, blink, move closer). Responses are checked for correct, timely, physically plausible motion. | Higher-assurance flows and step-up verification. |
| Session (temporal) | The entire video-KYC recording is sampled continuously. Liveness must hold for the whole session, not one lucky frame — a real face shown to the camera for two seconds and then swapped for a screen does not pass. | Video KYC and assisted verification calls. |
What it catches
- Print attacks — photos, cutouts, ID-card photos re-presented as selfies
- Screen replays — video or images played on another device
- Masks and 3D artefacts — silicone, latex, and paper-craft masks
- Absent subjects — sessions where no live face is present when it should be
Result shape
{
"check": "liveness",
"mode": "session",
"verdict": "pass",
"confidence": 0.97,
"coverage": { "sampled_seconds": 184, "live_seconds": 184 },
"markers": []
}
For session mode, coverage shows how much of the recording was live-verified, and markers timestamp any window where liveness dropped — reviewers can jump straight to it in the player.
Here is what a reviewer sees on a flagged video-KYC session — per-signal medians across sampled frames, with liveness, deepfake, and synthetic-face signals each scored separately and timeline flags for occlusion and multiple faces:
Liveness screening card from a real flagged session — 49 of 60 frames flagged; per-signal rows for mask, deepfake, liveness, and synthetic face with median and worst scores; timeline flags for face occluded and multiple faces
Gating with Goal Rules
{
"id": "liveness_required",
"severity": "require",
"check": "liveness_confidence_gte",
"params": {
"threshold": 0.9,
"on_fail_message": "We could not verify your selfie. Please retry in good lighting, facing the camera directly."
},
"on_deny": {
"message": "Liveness below threshold.",
"max_retries": 2,
"remediate_type": "selfie"
}
}
max_retries: 2 gives a genuine user another attempt (bad lighting is common); repeated failures deny the case per your policy.
Related checks
- Deepfake Detection — liveness confirms a human is present; deepfake detection confirms the footage of them is genuine.
- Face Match & Likeness — confirms the live person matches the claimed identity.