Human Token is designed for scenarios where there is no government-issued document relationship — situations where customers want to avoid sharing document numbers for privacy reasons. Its core function is to create a unique identity for each face from a single selfie submission.
This allows you to:
- Detect recurring users and prevent duplicate accounts — recognize whether the same person is returning or attempting to create multiple accounts, ensuring consistent identity recognition without official documents.
- Integrate via Web, Native, or API — using only the selfie image as input, with no additional document data required.
- Combine with other signals — add Human Token alongside other capabilities as needed.
What it does
From the captured selfie, Human Token generates a stable, opaque biometric identifier (personId) that uniquely represents that face. The user does not declare any identifier — identity is the output of the call, not the input. On every successful match, the response returns the same personId, allowing the same user to be recognized in future processes.
Inputs
The selfie is captured by the SDK or the Web Journey. For headless API integration, the image is sent as imagebase64 in the body of POST /processes/v1. Do not include subject.code — Human Token returns the personId in the response.
To ensure the image sent via API meets biometric requirements, use the Unico SDK for your platform or follow the Capture Standard. Human Token does not accept arbitrary images without capture quality control.
Possible responses
idFace.result | Meaning |
|---|---|
FOUND | Identity resolved. personId is returned and populated. |
personId can be generatedThere is a single scenario where Human Token does not produce a personId: the face cannot be identified in the submitted image — no face is detected, the image quality is too low, or the face is outside the capture standard (tilted, turned to the side). This is not a result value: the request fails with 20532 — No face detected in image. Following the Capture Standard is what prevents it.
Response example
{
"id": "1c1fc38b-7e98-4f9a-a04d-7a4a8b29d2c1",
"status": 3,
"idFace": {
"personId": "a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890",
"result": "FOUND"
}
}
personId is a stable, opaque identifier — the same user will always resolve to the same value. Store it alongside your user record to recognize the same person on subsequent Human Token calls.
Availability
| Surface | Supported |
|---|---|
| SDK (Android, iOS, Flutter) | ✅ |
| Web (iFrame, Redirect) | ✅ |
| API (headless, no SDK) | ✅ |