Liveness
Liveness tells a real person in front of the camera from a photo, a screen, a mask or a bad capture. It works on a single image: nothing to install on the person's device.
Check one image#
liveness.check answers live, and a reason code that says why when it isn't.
curl -X POST https://verisec.dev/v1/liveness \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
}'{
"ok": true,
"request_id": "req_de9a0ff4be064b4a940c",
"latency_ms": 2323,
"data": {
"code": 244,
"status": 1,
"live": false,
"tag": "bc6fd861-ce62-4a1b-bc27-d7830fca6438",
"sessionId": "bc6fd861-ce62-4a1b-bc27-d7830fca6438",
"transactionId": "9e00947e-b2aa-49d2-879d-16e476f8efc7",
"metadata": {
"elapsedTime": 2.224224916,
"serverTime": "2026-10-05T05:35:41.299Z",
"ctx": {
"userIp": "203.0.113.7"
}
},
"age": [
{
"pred": 30
}
]
},
"warnings": [],
"error": null
}Three ways to ask#
liveness.check- Live or not, with the reason as a code. The everyday call.
liveness.antispoof- The same check with the reason spelled out by name (for example
ART_MASK) and its category: an attack, or a problem with the capture. liveness.gate- One
passfor a pipeline. In strict mode it also requires a clean reason code, not only a live verdict.
Every liveness endpoint#
| Endpoint | What it does |
|---|---|
POST/v1/age/verify-live | Age Check + Liveness |
POST/v1/liveness | Liveness |
POST/v1/liveness/antispoof | Anti-spoof Reason |
POST/v1/liveness/gate | Liveness Gate |