Recupera un proceso de Human Token por su identificador — después de que el usuario regresa del Human Token Journey o para volver a consultar un resultado de API Only.
Endpoint
| Entorno | URL |
|---|---|
| Producción | GET https://humantoken.unico.app/client/v1/process/{processId} |
Solicitud
| Header | Valor |
|---|---|
x-unico-accesskey | <your_access_key> (ver Autenticación) |
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
processId | string (UUID) | sí | Identificador del proceso devuelto por Crear Proceso. |
Ejemplo
- cURL
- Node.js
curl -X GET https://humantoken.unico.app/client/v1/process/$PROCESS_ID \
-H "x-unico-accesskey: $UNICO_ACCESS_KEY"
import fetch from 'node-fetch';
const res = await fetch(
`https://humantoken.unico.app/client/v1/process/${processId}`,
{ headers: { 'x-unico-accesskey': process.env.UNICO_ACCESS_KEY } }
);
const result = await res.json();
// result.data.humanToken.value
Respuestas
La respuesta tiene el mismo formato que Crear Proceso. La forma de data depende del flujo utilizado cuando se creó el proceso.
Flujos estándar (api+humantoken, api+liveness+humantoken, humantoken):
{
"id": "6ed74799-4c2f-4023-b43f-a73cf7c847b2",
"state": "PROCESS_STATE_FINISHED",
"data": {
"humanToken": {
"value": "3f9a1c7e5b2d4086a1e3c5f7092b4d6e8a0c2e4f6183a5c7e9b1d3f5072a4c6e",
"status": "validated"
}
}
}
Flujos de revalidación (api+liveness+humantoken+revalidation, humantoken+revalidation):
{
"id": "cb0472c0-6dbc-46c6-b830-2be7edc35424",
"state": "PROCESS_STATE_FINISHED",
"data": {
"humanTokenMatch": "true"
}
}
| Campo | Tipo | Descripción |
|---|---|---|
id | string (UUID) | Identificador del proceso. |
state | string | Estado del proceso — ver valores de state. |
data.humanToken.value | string | Solo flujos estándar. Identificador estable y opaco del rostro (hasta 100 caracteres). La misma persona siempre resuelve al mismo valor. |
data.humanTokenMatch | string | Solo flujos de revalidación. "true" si el selfie coincide con el humanToken referenciado, "false" en caso contrario. |
| Valor | Significado |
|---|---|
PROCESS_STATE_UNSPECIFIED | Estado no definido. |
PROCESS_STATE_CREATED | El proceso fue creado y todavía acepta nuevas sesiones. data es {}. |
PROCESS_STATE_FINISHED | El proceso finalizó y ya no acepta nuevas sesiones. Para flujos estándar, data.humanToken está presente cuando se generó un Human Token; para flujos de revalidación, data.humanTokenMatch indica si el selfie coincidió con el token referenciado. De lo contrario, data es {}. |
PROCESS_STATE_FAILED | El proceso falló. data es {}. |
PROCESS_STATE_CANCELED | El proceso fue cancelado. data es {}. |
PROCESS_STATE_AWAITING_FOR_DOCUMENT | El proceso espera un documento de identificación. data es {}. |
Verifica siempre que data.humanToken.value no esté vacío antes de usarlo.
Códigos de Error
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Código | Mensaje | Descripción |
|---|---|---|
3 | process id is invalid | Cuando el ID del proceso es inválido. |
Clave de acceso ausente o inválida en el header x-unico-accesskey. Ver Autenticación.
| Código | Mensaje | Descripción |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | Cuando no se encontró el ID del proceso. |
Se alcanzó el límite de tasa. Cuando su sistema recibe un error HTTP 429, debe implementar mecanismos para prevenir fallos en cascada y evitar empeorar la restricción.
Mejores prácticas:
- Período de enfriamiento (backoff): Detenga o reduzca inmediatamente las solicitudes posteriores de su sistema. No reintente continuamente las solicitudes fallidas en un bucle cerrado.
- Cola y limitación (Queueing & throttling): Almacene en búfer o ponga en cola las solicitudes salientes de su lado para controlar el flujo de tráfico antes de reenviarlas.
- Backoff exponencial con jitter: Al reintentar, aumente el tiempo de espera exponencialmente entre intentos (por ejemplo, 1 s, 2 s, 4 s, 8 s) y agregue un pequeño retraso aleatorio ("jitter") para evitar un efecto de manada donde todas las solicitudes en cola reintentan en el mismo milisegundo exacto.
Enviar solicitudes continuamente a un endpoint con límite de tasa sin aplicar backoff puede prolongar el período de restricción e impactar gravemente el rendimiento operativo de su sistema. Limitar adecuadamente las solicitudes de su lado garantiza una integración más fluida y resiliente.
Para conocer los límites predeterminados, aumentar solicitudes y obtener detalles adicionales, consulte Límites de tasa.
| Código | Mensaje | Descripción |
|---|---|---|
99999 | Internal failure! Try again later | Cuando ocurre un error interno. |
Qué sigue
- Vuelve a Crear Proceso para enviar un nuevo selfie.
- Para entender qué representa el
humanTokeny cuándo no se genera, consulta la descripción general de Human Token.