> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proofage.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Liveness and anti-spoofing

> Checks that a live person is in front of the camera, not a photo, a screen or a print.

Someone trying to pass as another person, or as older than they are, can hold a photo, a screen or a mask up to the camera. Liveness and anti-spoofing check that the selfie shows a real, present person.

## How it works

* **During capture**, the widget takes the selfie from the live camera only: there is no way to upload a file instead. The widget guides the person through the capture, including a short head movement, so it records a live face.
* **After submit**, the selfie is analysed for signs of a presentation attack: a face shown on a screen, printed on paper, or one that is not a real human face.
* On KYC and age verification by ID document, the **document images** are checked the same way, for a document photographed from a screen, printed, or shown as a photo of a photo.

## Where it runs

| Workspace type | Selfie | Document images |
| - | - | - |
| Identity (KYC) | Yes | Yes |
| Age verification by ID document | Yes | Yes |
| Facial age estimation | Yes | Yes, when it falls back to a document |

## In the API and the webhook

A presentation attack declines the verification; a selfie too poor to judge asks the person to retake it. Either way the verification's `reason` names it; there is no separate liveness object.

## Reasons

| Code | Outcome |
| - | - |
| `selfie.spoof.screen_suspected` | Declined |
| `selfie.spoof.print_suspected` | Declined |
| `selfie.spoof.non_human_suspected` | Declined |
| `document.front.spoof.screen_suspected`, `document.back.spoof.screen_suspected` | Declined |
| `document.front.spoof.print_suspected`, `document.back.spoof.print_suspected` | Declined |
| `document.front.spoof.photo_suspected`, `document.back.spoof.photo_suspected` | Declined |
| `selfie.quality.screen_attack_suspected`, `selfie.quality.spoof_suspected` | Resubmission requested |

All reasons are listed in [Decision reasons](/core-technology/decision-reasons).

## What the person is asked to do

On a resubmission the widget asks for a new selfie, taken live, in even light, with the face fully visible. A declined verification is final; if you decide to let the person try again, create a new verification.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.