Liveness Detection
Documents & BiometricsProve the selfie is a live person, not a photo, screen or mask.
Detect presentation attacks in a single selfie or short capture. Liveness Detection returns a live or spoof decision with a confidence score, protecting Face Match and remote KYC from printed photos, replayed videos and masks.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
selfie_image_or_short_capture
required
|
string | Selfie image or short capture |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/liveness-detection \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"selfie_image_or_short_capture": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/liveness-detection",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"selfie_image_or_short_capture": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/liveness-detection", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"selfie_image_or_short_capture": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/liveness-detection', {
"selfie_image_or_short_capture": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"liveness_decision": STRING,
"confidence_score": STRING,
"capture_quality_feedback": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"liveness_decision": "string",
"confidence_score": "string",
"capture_quality_feedback": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
Remote onboarding is only as strong as its weakest capture. Liveness Detection analyses the selfie for signs of a real, present person, without asking them to perform awkward gestures, and returns a decision your flow can act on before running Face Match.
It works passively on a single frame or actively with a short guided capture when your risk policy calls for it.
Typical uses
- Video and selfie KYC. Ensure the capture is live before the identity decision.
- App login step-up. Liveness plus Face Match for sensitive actions.
- Field partner check-ins. Confirm the assigned person is the one on shift.
- Remote proctoring. Keep the verified candidate in front of the camera.
Questions
- Does it require a video?
- No. Passive liveness works on a single selfie. Active mode uses a short capture for higher assurance.
- Is it a substitute for Face Match?
- No. Liveness proves a live person is present; Face Match proves it is the right person. Use both.