Recupere un proceso existente por su identificador. Según el contrato de la API, el resultado ya se devuelve de forma sincrónica al crear el proceso — utilice este endpoint para reconsultas, auditoría y soporte.
Antes de recuperar el proceso, revise la configuración de nuestro webhook y las estrategias de fallback — haga clic aquí.
Endpoint
| Entorno | URL |
|---|---|
| Producción | GET https://api.idcloud.unico.app/client/v1/process/{processId} |
| Sandbox | GET https://api.idcloud.uat.unico.app/client/v1/process/{processId} |
Solicitud
| Encabezado | Valor |
|---|---|
Authorization | Bearer <access_token> |
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
processId | string (UUID) | sí | Identificador del proceso devuelto por Crear proceso. |
Ejemplo
- cURL
- Node.js
curl -X GET https://api.idcloud.unico.app/client/v1/process/$PROCESS_ID \
-H "Authorization: Bearer $TOKEN"
import fetch from 'node-fetch';
const res = await fetch(
`https://api.idcloud.unico.app/client/v1/process/${processId}`,
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
const { process: proc } = await res.json();
Respuestas
{
"process": {
"id": "226fd950-4b80-4da6-a476-ba9d397ddc91",
"flow": "id_r2",
"callbackUri": "/",
"userRedirectUrl": "https://cadastro.uat.unico.app/flow?collect-data=true&dynamic-wrapper=true&id=226fd950-4b80-4da6-a476-ba9d397ddc91",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_APPROVED",
"createdAt": "2026-08-06T01:42:21.693615Z",
"finishedAt": "2026-08-06T01:43:03.080508Z",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "40*******50",
"friendlyName": "teste",
"email": "",
"phone": "5511999999999",
"notifications": [
{ "notificationChannel": "NOTIFICATION_CHANNEL_WHATSAPP" }
],
"phoneCountryCodeAlpha3": ""
},
"purpose": "personAuthentication",
"services": [],
"authenticationInfo": { "authenticationId": "55cba227-9828-49df-a16f-bcdaa7bdaa4d" },
"capacities": ["PROCESS_CAPACITY_IDCLOUDONE"],
"expiresAt": "2026-08-13T01:42:21.536500Z",
"token": "",
"companyData": { "branchId": "", "countryCode": "BRA" },
"simulated": false
}
}
| Campo | Significado |
|---|---|
id | UUID del proceso; la clave utilizada para consultar y rastrear el flujo. |
flow | Tipo de recorrido ejecutado (por ejemplo, id_r2, idlivetrust_r2, idtrust_r2, ...). |
callbackUri | URI de callback a la que se redirige la aplicación cliente al finalizar el flujo. |
userRedirectUrl | URL completa de la página CbU que el usuario abre para realizar el recorrido (incluye el id y los indicadores de comportamiento). |
state | Estado del ciclo de vida del proceso. Valores PROCESS_STATE_* (por ejemplo, CREATED, FAILED, FINISHED, AWAITING_FOR_DOCUMENT, UNSPECIFIED). |
result | Veredicto final de la evaluación. Valores PROCESS_RESULT_* (por ejemplo, APPROVED, AUTHENTICATED, NOT_APPROVED, ...). Solo es concluyente cuando state = PROCESS_STATE_FINISHED. |
createdAt | Marca de tiempo de creación del proceso (UTC). |
finishedAt | Marca de tiempo de finalización del proceso (UTC). |
person | Subobjeto con los datos de la persona que se está verificando. |
purpose | Propósito del proceso (por ejemplo, personAuthentication, registro de persona). |
services | Lista de servicios adicionales asociados al proceso; vacía cuando no hay ninguno. |
authenticationInfo.authenticationId | ID del evento de autenticación de identidad generado por el flujo. |
capacities | Capacidades/productos utilizados. Valores PROCESS_CAPACITY_* (por ejemplo, IDCLOUDONE). |
expiresAt | Marca de tiempo de expiración del proceso/enlace (UTC). |
token | Token de sesión/acceso asociado al proceso (puede estar vacío). |
companyData | Subobjeto con los datos de la empresa/tenant propietario del proceso. |
simulated | Booleano; indica si se trata de un proceso de simulación/sandbox (true) o real (false). |
| Campo | Significado |
|---|---|
duiType | Tipo de documento único de identificación. Valores DUI_TYPE_* (por ejemplo, BR_CPF). |
duiValue | Valor del documento (por ejemplo, el número de CPF). |
friendlyName | Nombre amigable/apodo de la persona (texto libre, no validado). |
email | Correo electrónico de la persona; puede estar vacío. |
phone | Número de teléfono en formato E.164 (código de país + código de área + número). |
notifications | Lista de canales de notificación. Cada elemento incluye notificationChannel con valores NOTIFICATION_CHANNEL_* (por ejemplo, WHATSAPP, SMS, EMAIL). |
phoneCountryCodeAlpha3 | Código de país ISO alfa-3 del número de teléfono (por ejemplo, BRA); puede estar vacío. |
| Campo | Significado |
|---|---|
branchId | Identificador de la sucursal del tenant; vacío cuando no hay segmentación por sucursal. |
countryCode | País de la empresa en ISO alfa-3 (por ejemplo, BRA). |
process.services[].documents[].doc.code informa el tipo de documento como un código corto en mayúsculas. unico.moja.dictionary.br.cnh.v2.Cnh se convierte en CNH.
El código no incluye ni el país ni la versión del esquema; la versión se devuelve por separado en doc.version.
Los tipos de documento que utilizan el esquema unificado — unified_schema en la referencia de campos — se informan como el tipo identificado durante la captura, en mayúsculas: IDCARD, DRIVERLICENSE, PASSPORT o VOTERID.
Los pasaportes de EE. UU. conservan su variante en lugar de agruparse en PASSPORT, por lo que también se devuelven valores como POLYCARBONATEPASSPORT, PASSPORTCARD y PAPERPASSPORT.
Por ejemplo, unico.moja.dictionary.ar.generic.v1.IdCard y unico.moja.dictionary.us.generic.v1.PolycarbonatePassport se informan como IDCARD y POLYCARBONATEPASSPORT.
Los tipos de documento que utilizan su propio esquema de campos — listados bajo specific_document_schemas en la referencia de campos — se muestran en la tabla siguiente. Use el tipo del diccionario para buscar cada esquema en ese archivo.
| País | doc.code | Tipo del diccionario | Documento |
|---|---|---|---|
| BR | RG | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | CNH | unico.moja.dictionary.br.cnh.v2.Cnh | CNH (licencia de conducir) |
| BR | CIN | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | PASSAPORTE | unico.moja.dictionary.br.passaporte.v1.Passaporte | Pasaporte |
| MX | INE | unico.moja.dictionary.mx.ine.v1.Ine | Credencial para votar INE |
| MX | LPC | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir |
| MX | PASAPORTE | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | Pasaporte |
| — | UNKNOWN | unico.moja.dictionary.other.unknown.v1.Unknown | No se pudo identificar el tipo — doc.data está vacío |
PASSAPORTE y PASAPORTE son documentos diferentesEl pasaporte brasileño es PASSAPORTE (con doble S) y el mexicano es PASAPORTE (con una sola S), cada uno reflejando la grafía de su propio diccionario. No es una errata — no trate ambos valores como equivalentes.
No se realiza extracción de OCR ni se informa ningún campo en doc.data cuando doc.code es UNKNOWN.
Los clientes en Brasil pueden recibir el payload completo del procesoLa estructura general de la respuesta se mantiene igual — el resultado único es el valor predeterminado.

La estructura general de la respuesta se mantiene igual — el resultado único es el valor predeterminado.
Las integraciones en Brasil pueden recibir el objeto de proceso completo que se muestra a continuación, con resultados por capacidad en authenticationInfo.
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"flow": "idchecktrust",
"callbackUri": "https://example.com/callback",
"userRedirectUrl": "https://example.com/redirect",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"createdAt": "2024-01-01T10:00:00Z",
"finishedAt": "2024-01-01T10:15:00Z",
"expiresAt": "2024-01-08T10:00:00Z",
"purpose": "VERIFICATION",
"clientReference": "client-ref-abc",
"useCase": "smart_revalidation",
"capacities": ["liveness", "face_match"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"notifications": [
{
"notificationChannel": "email"
}
]
},
"authenticationInfo": {
"authenticationId": "auth-123",
"livenessResult": "LIVENESS_RESULT_LIVE",
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
"identityFraudstersResult": "TRUST_RESULT_INCONCLUSIVE",
"bioTokenEngineResult": "BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED",
"smartRevalidationResult": "SMART_REVALIDATION_RESULT_UNSPECIFIED",
"idAgeResult": "ID_AGE_RESULT_UNSPECIFIED",
"scoreEngineResult": {
"scoreEnabled": "SCORE_ENABLED_TRUE",
"score": 85.5
}
},
"companyData": {
"branchId": "branch-123",
"countryCode": "BR"
},
"bioTokenData": {
"referenceProcessId": "ref-proc-123",
"authenticationId": "auth-ref-123"
},
"services": [
{
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
"documentIds": ["doc-abc-123"],
"consent_granted": true,
"documents": [
{
"doc_id": "doc-abc-123",
"typified": true,
"cpf_match": true,
"face_match": true,
"validate_doc": true,
"reused_doc": false,
"signed_url": "https://example.com/doc?token=xyz",
"doc": {
"version": 1,
"code": "CNH",
"data": {
"numero": "044589731564",
"cpfNumero": "12345678909",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "1990-05-12T00:00:00Z",
"dataExpiracao": "2027-12-07T00:00:00Z",
"categoria": "B"
}
}
}
]
}
]
}
}
| Campo | Tipo | Descripción |
|---|---|---|
process.id | string (UUID) | Identificador del proceso. |
process.flow | string | Identificador del flujo enviado en la creación. |
process.callbackUri | string | URL de callback configurada para eventos del proceso. |
process.userRedirectUrl | string | URL para redirigir al usuario después de completar el recorrido. |
process.state | enum | Estado actual del proceso. Consulte los valores a continuación. |
process.result | enum | Resultado de la verificación. Presente solo cuando state = PROCESS_STATE_FINISHED. |
process.createdAt | string (datetime) | Marca de tiempo ISO 8601 de cuando se creó el proceso. |
process.finishedAt | string (datetime) | Marca de tiempo ISO 8601 de cuando finalizó el proceso. Presente solo cuando state = PROCESS_STATE_FINISHED. |
process.expiresAt | string (datetime) | Marca de tiempo ISO 8601 de cuando expira el proceso. |
process.purpose | string | Propósito del proceso según lo configurado en el flujo. |
process.clientReference | string | Referencia opcional del lado del cliente para indexación en el portal. |
process.useCase | string | Identificador del escenario asociado al flujo. |
process.capacities | array of strings | Lista de capacidades activadas en este proceso. |
process.token | string | JWT firmado para integración con el SDK. |
process.person | object | Identificación proporcionada en la creación. |
process.person.notifications | array | Canales de notificación configurados para el recorrido (por ejemplo, email). |
process.authenticationInfo | object | Resultados por capacidad. Consulte a continuación. |
process.companyData | object | Contexto de empresa y sucursal. |
process.companyData.branchId | string | Identificador de sucursal. |
process.companyData.countryCode | string | Código de país ISO 3166-1 alfa-2. |
process.bioTokenData | object | Información del proceso de referencia — presente solo en flujos de Validación 1:1 y Revalidación Inteligente. |
process.services | array | Sobres firmados, documentos capturados y otras salidas de servicio. Consulte a continuación. |
| Valor | Significado |
|---|---|
PROCESS_STATE_CREATED | Proceso creado; el usuario aún no ha completado el recorrido. |
AWAITING_FOR_DOCUMENT | Proceso creado sin documento de identificación; a la espera de que se establezca mediante Establecer documento del proceso. Presente solo cuando el flujo personalizado permite documento opcional. |
PROCESS_STATE_FINISHED | Recorrido completado. Verifique result y authenticationInfo. |
PROCESS_STATE_FAILED | Error de procesamiento. |
AWAITING_FOR_DOCUMENT no sigue la convención de prefijo PROCESS_STATE_* utilizada por los demás estados. Esta es una inconsistencia de nomenclatura conocida en la API actual.
| Valor | Significado |
|---|---|
PROCESS_RESULT_OK | Todas las capacidades devolvieron resultados positivos. |
PROCESS_RESULT_INVALID_IDENTITY | Al menos una capacidad devolvió un negativo definitivo (por ejemplo, detección de vida fallida, identidad no coincidente). |
PROCESS_RESULT_ERROR | Error durante el procesamiento del resultado. |
PROCESS_RESULT_EXPIRED | El proceso expiró antes de completar el recorrido. |
PROCESS_RESULT_UNSPECIFIED | Proceso aún no finalizado. |
Todos los campos se devuelven siempre, independientemente del flujo. Los campos de las capacidades no utilizadas en el flujo devuelven *_UNSPECIFIED.
Los valores abreviados (por ejemplo, livenessResult = LIVE, authenticationResult = INCONCLUSIVE) se corresponden directamente con los valores de enum completos documentados aquí (LIVENESS_RESULT_LIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, etc.) — el prefijo se omite por brevedad.
| Campo | Capacidad | Valores posibles |
|---|---|---|
authenticationId | — | Identificador único para este intento de autenticación. |
livenessResult | Detección de Vida | LIVENESS_RESULT_LIVE, LIVENESS_RESULT_NOT_LIVE, LIVENESS_RESULT_UNSPECIFIED |
authenticationResult | Verificación de Identidad | AUTHENTICATION_RESULT_POSITIVE, AUTHENTICATION_RESULT_NEGATIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, AUTHENTICATION_RESULT_UNSPECIFIED |
identityFraudstersResult | Clasificación de Riesgo de Fraude | TRUST_RESULT_YES, TRUST_RESULT_INCONCLUSIVE, TRUST_RESULT_UNSPECIFIED |
bioTokenEngineResult | Validación 1:1 | BIO_TOKEN_ENGINE_RESULT_POSITIVE, BIO_TOKEN_ENGINE_RESULT_NEGATIVE, BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED |
smartRevalidationResult | Revalidación Inteligente | SMART_REVALIDATION_RESULT_POSITIVE, SMART_REVALIDATION_RESULT_NEGATIVE, SMART_REVALIDATION_RESULT_UNSPECIFIED |
idAgeResult | Verificación de Edad | ID_AGE_RESULT_POSITIVE, ID_AGE_RESULT_NEGATIVE, ID_AGE_RESULT_INCONCLUSIVE, ID_AGE_RESULT_UNSPECIFIED |
scoreEngineResult.scoreEnabled | Score de Riesgo | SCORE_ENABLED_TRUE, SCORE_ENABLED_FALSE, SCORE_ENABLED_UNSPECIFIED |
scoreEngineResult.score | Score de Riesgo | Número de -100 a +100. Presente cuando authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE y Score de Riesgo está habilitado. |
serproResult.score | Retorno de Similitud Serpro | 0–100 (similitud); -1 (sin rostro en archivo para este CPF); -2 (error de integración). |
servicesEl array services utiliza camelCase para los campos a nivel de sobre (envelopeId, documentIds) y snake_case para los campos a nivel de documento (doc_id, consent_granted, face_match, etc.). Esto refleja la respuesta real de la API — ambas convenciones son intencionales y no constituyen un error de documentación.
| Campo | Tipo | Descripción |
|---|---|---|
envelopeId | string (UUID) | Identificador del sobre firmado. |
documentIds | array of strings | IDs de documentos capturados en este servicio. |
consent_granted | boolean | Si el usuario otorgó consentimiento para compartir datos. |
documents | array | Documentos capturados con datos OCR y resultados de validación. |
documents[].doc_id | string | Identificador del documento. |
documents[].typified | boolean | Si el tipo de documento fue identificado exitosamente. |
documents[].cpf_match | boolean | Si el CPF del documento coincide con el CPF proporcionado (solo Brasil). |
documents[].face_match | boolean | Si el selfie coincide con la foto del documento. |
documents[].validate_doc | boolean | Si el documento pasó la validación de autenticidad. |
documents[].reused_doc | boolean | Si este documento fue reutilizado de un proceso anterior. |
documents[].signed_url | string | URL prefirmada para descargar el PDF del documento (válida por 5 minutos — vuelva a consultarla para renovarla). |
documents[].doc.version | integer | Versión del esquema OCR. |
documents[].doc.code | string | Código corto del tipo de documento (por ejemplo, CNH). Consulte Tipos de documento y campos de OCR para conocer todos los valores y cómo se deriva el código. |
documents[].doc.data | object | Campos OCR extraídos. El contenido varía según el tipo de documento — consulte la referencia completa de campos para el catálogo completo. Los nombres de campo dentro de doc.data (por ejemplo, nomeCivil, dataNascimento) se devuelven en portugués — estos son los valores reales producidos por el motor OCR. |
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. |
| Código | Mensaje | Descripción |
|---|---|---|
| — | Jwt header is an invalid JSON | Cuando el token de acceso utilizado contiene caracteres incorrectos. |
| — | Jwt is expired | Cuando el token de acceso utilizado ha expirado. |
| 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. |
Rate limit reached. When your system receives an HTTP 429 error, you must implement mechanisms to prevent cascading failures and avoid worsening the restriction.
Best practices:
- Cool-down period (backoff): Immediately halt or throttle subsequent requests from your system. Do not continuously retry failed requests in a tight loop.
- Queueing & throttling: Buffer or queue outgoing requests on your end to control the traffic flow before re-sending them.
- Exponential backoff with jitter: When retrying, increase the waiting time exponentially between attempts (e.g., 1 s, 2 s, 4 s, 8 s) and add a small random delay ("jitter") to prevent a herd effect where all queued requests retry at the exact same millisecond.
Continuously hitting a rate-limited endpoint without backing off can prolong the restriction period and severely impact your system's operational throughput. Properly throttling requests on your side ensures a smoother, more resilient integration.
For default limits, increase requests and additional details, see Rate Limits.
| Código | Mensaje | Descripción |
|---|---|---|
99999 | Internal failure! Try again later | Cuando hay un error interno. |
Polling vs webhook
Puede hacer polling a este endpoint para verificar el progreso, pero el patrón recomendado es suscribirse a un webhook y solo llamar a este endpoint como respaldo. Consulte Webhooks y Eventos.
Qué sigue
- Para el selfie capturado, consulte Obtener Selfie.
- Para el paquete de evidencias de auditoría, consulte Obtener conjunto de evidencias.