---
title: Obtener Proceso
description: Recupera el estado y el resultado actuales de un proceso de verificación.
canonical: https://developer.unico.io/es/developers/api-reference/get-process
locale: es
generated_by: markdown-export
---

- [/es/](/es/)
- Referencia de API
- Obtener Proceso

**En esta páginaObtener ProcesoGETRecupera 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; usa este endpoint para reconsultas, auditoría y soporte.

advertenciaAntes de recuperar el proceso, revisa nuestra configuración de webhooks y las estrategias de fallback — [haz clic aquí](/es/developers/webhooks-and-events/setup).
### Endpoint​

EntornoURL**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​

Headers
HeaderValor`Authorization``Bearer <access_token>`
Parámetros de ruta
ParámetroTipoObligatorioDescripción`processId`string (UUID)síIdentificador del proceso devuelto por [Crear Proceso](/es/developers/api-reference/post-processes).
### Ejemplo​

cURLNode.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​

200 OK
```
{  "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  }}
```

Campos del proceso
CampoSignificado`id`UUID del proceso; la clave utilizada para consultar y rastrear el flow.`flow`Tipo de recorrido ejecutado (ej.: `id_r2`, `idlivetrust_r2`, `idtrust_r2`, ...).`callbackUri`URI de callback a la que se redirige la aplicación cliente al final del flow.`userRedirectUrl`URL completa de la página del CbU que el usuario abre para realizar el recorrido (contiene el `id` y flags de comportamiento).`state`Estado del ciclo de vida del proceso. Valores `PROCESS_STATE_*` (ej.: `CREATED`, `FAILED`, `FINISHED`, `AWAITING_FOR_DOCUMENT`, `UNSPECIFIED`).`result`Veredicto final de la evaluación. Valores `PROCESS_RESULT_*` (ej.: `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 verificada.`purpose`Propósito del proceso (ej.: `personAuthentication`, registro de persona).`services`Lista de servicios adicionales adjuntos al proceso; vacía cuando no hay ninguno.`authenticationInfo.​authenticationId`ID del evento de autenticación de identidad generado por el flow.`capacities`Capacidades/productos utilizados. Valores `PROCESS_CAPACITY_*` (ej.: `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 propietaria del proceso.`simulated`Booleano; indica si se trata de un proceso de simulación/sandbox (`true`) o uno real (`false`).
Campos de person
CampoSignificado`duiType`Tipo del documento único de identificación. Valores `DUI_TYPE_*` (ej.: `BR_CPF`).`duiValue`Valor del documento (ej.: 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 contiene `notificationChannel` con valores `NOTIFICATION_CHANNEL_*` (ej.: `WHATSAPP`, `SMS`, `EMAIL`).`phoneCountryCodeAlpha3`Código de país ISO alfa-3 del número de teléfono (ej.: `BRA`); puede estar vacío.
Campos de companyData
CampoSignificado`branchId`Identificador de la sucursal del tenant; vacío cuando no se segmenta por sucursal.`countryCode`País de la empresa en ISO alfa-3 (ej.: `BRA`).
Tipos de documento y campos de OCR
Los tipos de documento que usan el esquema unificado — `unified_schema` en la [referencia de campos](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) — se reportan como el identificador de tipo en mayúsculas detectado durante la captura: `IDCARD`, `DRIVERLICENSE`, `PASSPORT` o `VOTERID`.
Los pasaportes de EE. UU. mantienen su variante en lugar de colapsar a `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 reportan como `IDCARD` y `POLYCARBONATEPASSPORT`.
`process.services[].documents[].doc.code` reporta 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 contiene ni el país ni la versión del esquema; la versión se devuelve por separado en `doc.version`.
Esquemas específicos
Los tipos de documento que usan su propio esquema de campos — listados en `specific_document_schemas` en la [referencia de campos](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) — se muestran en la tabla siguiente. Usa el tipo de diccionario para buscar cada esquema en ese archivo.
País`doc.code`Tipo de diccionarioDocumentoBR`RG``unico.​moja.​dictionary.​br.​rg.​v2.​Rg`RGBR`CNH``unico.​moja.​dictionary.​br.​cnh.​v2.​Cnh`CNH (licencia de conducir)BR`CIN``unico.​moja.​dictionary.​br.​cin.​v1.​Cin`CINBR`PASSAPORTE``unico.​moja.​dictionary.​br.​passaporte.​v1.​Passaporte`PasaporteMX`INE``unico.​moja.​dictionary.​mx.​ine.​v1.​Ine`Credencial de elector INEMX`LPC``unico.​moja.​dictionary.​mx.​lpc.​v1.​Lpc`Licencia para conducirMX`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` (doble S) y el mexicano es `PASAPORTE` (una sola S), cada uno reflejando la ortografía de su propio diccionario. Esto no es un error de tipeo — no trates ambos valores como equivalentes.
No se realiza extracción por OCR ni se reporta 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.Las integraciones en Brasil pueden recibir el objeto de proceso completo a continuación, con resultados por capacidad en authenticationInfo.```
{  "process": {    "id": "53060f52-f146-4c12-a234-5bb5031f6f5b",    "flow": "iddocs_r2",    "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": "USE_CASE_LOGIN",    "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_UNSPECIFIED",      "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"              }            }          }        ]      }    ]  }}
```

Campos de nivel superiorCampoTipoDescripción`process.id`string (UUID)Identificador del proceso.`process.flow`stringIdentificador del flow enviado en la creación.`process.callbackUri`stringURL de callback configurada para los eventos del proceso.`process.​userRedirectUrl`stringURL para redirigir al usuario después de completar el recorrido.`process.state`enumEstado actual del proceso. Ver valores más abajo.`process.result`enumResultado de la verificación. Presente solo cuando `state = PROCESS_STATE_FINISHED`.`process.createdAt`string (datetime)Marca de tiempo ISO 8601 de creación del proceso.`process.finishedAt`string (datetime)Marca de tiempo ISO 8601 de finalización del proceso. Presente solo cuando `state = PROCESS_STATE_FINISHED`.`process.expiresAt`string (datetime)Marca de tiempo ISO 8601 de expiración del proceso.`process.purpose`stringPropósito del proceso según lo configurado en el flow.`process.​clientReference`stringReferencia opcional del lado del cliente para indexación en el portal.`process.useCase`stringIdentificador del escenario asociado al flow.`process.capacities`array of stringsLista de capacidades activadas en este proceso.`process.token`stringJWT firmado para la integración del SDK.`process.person`objectIdentificación proporcionada en la creación.`process.​person.​notifications`arrayCanales de notificación configurados para el recorrido (ej.: `email`).`process.​authenticationInfo`objectResultados por capacidad. Ver más abajo.`process.companyData`objectContexto de empresa y sucursal.`process.​companyData.​branchId`stringIdentificador de la sucursal.`process.​companyData.​countryCode`stringCódigo de país ISO 3166-1 alfa-2.`process.​bioTokenData`objectInformación del proceso de referencia — presente solo en flows de 1:1 Validation y Smart Revalidation.`process.services`arrayEnvelopes firmados, documentos capturados y otros resultados de servicio. Ver más abajo.Valores de process.stateValorSignificado`PROCESS_STATE_CREATED`Proceso creado; el usuario aún no completó el recorrido.`AWAITING_FOR_DOCUMENT`Proceso creado sin documento de identificación. Presente solo cuando el Custom Flow permite documento opcional. Envía el documento con [Definir Documento del Proceso](/es/developers/api-reference/set-process-document).`PROCESS_STATE_FINISHED`Recorrido completado. Verifica `result` y `authenticationInfo`.`PROCESS_STATE_FAILED`Error de procesamiento.Inconsistencia de nomenclatura del estado`AWAITING_FOR_DOCUMENT` no sigue la convención de prefijo `PROCESS_STATE_*` usada por los demás estados. Se trata de una inconsistencia de nomenclatura conocida en la API actual.Valores de process.resultValorSignificado`PROCESS_RESULT_OK`Todas las capacidades devolvieron resultados positivos.`PROCESS_RESULT_INVALID_IDENTITY`Al menos una capacidad devolvió un negativo definitivo (ej.: liveness 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`El proceso aún no ha finalizado.Resultados por capacidad en authenticationInfoTodos los campos se devuelven siempre, sin importar el flow. Los campos de capacidades no usadas en el flow devuelven `*_UNSPECIFIED`.Valores de enum abreviadosLos valores abreviados (ej.: `livenessResult = LIVE`, `authenticationResult = INCONCLUSIVE`) se corresponden directamente con los valores completos de enum documentados aquí (`LIVENESS_RESULT_LIVE`, `AUTHENTICATION_RESULT_INCONCLUSIVE`, etc.) — el prefijo se omite por brevedad.CampoCapacidadValores posibles`authenticationId`—Identificador único de este intento de autenticación.`livenessResult`[Liveness](/es/capabilities/liveness)`LIVENESS_RESULT_LIVE`, `LIVENESS_RESULT_NOT_LIVE`, `LIVENESS_RESULT_UNSPECIFIED``authenticationResult`[Identity Verification](/es/capabilities/identity-verification)`AUTHENTICATION_RESULT_POSITIVE`, `AUTHENTICATION_RESULT_NEGATIVE`, `AUTHENTICATION_RESULT_INCONCLUSIVE`, `AUTHENTICATION_RESULT_UNSPECIFIED``identityFraudstersResult`[Fraud Risk Classification](/es/capabilities/fraud-risk-classification)`TRUST_RESULT_YES`, `TRUST_RESULT_INCONCLUSIVE`, `TRUST_RESULT_UNSPECIFIED``bioTokenEngineResult`[1:1 Validation](/es/capabilities/1-1-validation)`BIO_TOKEN_ENGINE_RESULT_POSITIVE`, `BIO_TOKEN_ENGINE_RESULT_NEGATIVE`, `BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED``smartRevalidationResult`[Smart Revalidation](/es/capabilities/smart-revalidation)`SMART_REVALIDATION_RESULT_POSITIVE`, `SMART_REVALIDATION_RESULT_NEGATIVE`, `SMART_REVALIDATION_RESULT_UNSPECIFIED``idAgeResult`[Age Verification](/es/capabilities/age-verification)`ID_AGE_RESULT_POSITIVE`, `ID_AGE_RESULT_NEGATIVE`, `ID_AGE_RESULT_INCONCLUSIVE`, `ID_AGE_RESULT_UNSPECIFIED``scoreEngineResult.​scoreEnabled`[Risk Score](/es/capabilities/risk-score)`SCORE_ENABLED_TRUE`, `SCORE_ENABLED_FALSE`, `SCORE_ENABLED_UNSPECIFIED``scoreEngineResult.​score`[Risk Score](/es/capabilities/risk-score)Número de -100 a +100. Presente cuando `authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE` y Risk Score está habilitado.`serproResult.score`[Similitud Serpro](/es/capabilities/serpro-similarity-return)`0`–`100` (similitud); `-1` (no hay rostro registrado para este CPF); `-2` (error de integración).Campos de process.servicesConvenciones de nomenclatura mixtas en `services`El arreglo `services` usa camelCase para los campos a nivel de envelope (`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 un error de documentación.CampoTipoDescripción`envelopeId`string (UUID)Identificador del envelope firmado.`documentIds`array of stringsIDs de los documentos capturados en este servicio.`consent_granted`booleanIndica si el usuario otorgó el consentimiento de compartición de datos.`documents`arrayDocumentos capturados con datos de OCR y resultados de validación.`documents[].doc_id`stringIdentificador del documento.`documents[].​typified`booleanIndica si el tipo de documento se identificó correctamente.`documents[].​cpf_match`booleanIndica si el CPF del documento coincide con el CPF proporcionado (solo Brasil).`documents[].​face_match`booleanIndica si la selfie coincide con la foto del documento.`documents[].​validate_doc`booleanIndica si el documento superó la validación de autenticidad.`documents[].​reused_doc`booleanIndica si este documento se reutilizó de un proceso anterior.`documents[].​signed_url`stringURL pre-firmada para descargar el PDF del documento (válida durante 5 minutos — vuelve a solicitarla para renovarla).`documents[].​doc.​version`integerVersión del esquema de OCR.`documents[].​doc.​code`stringCódigo corto del tipo de documento (ej.: `CNH`). Ver [Tipos de documento y campos de OCR](#document-type-values) para todos los valores y cómo se deriva el código.`documents[].​doc.​data`objectCampos de OCR extraídos. El contenido varía según el tipo de documento — ver la [referencia de campos completa](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) para el catálogo completo. Los nombres de campo dentro de `doc.data` (ej.: `nomeCivil`, `dataNascimento`) se devuelven en portugués — son los valores reales producidos por el motor de OCR.
### Códigos de Error​

400 Bad Request401 Unauthorized404 Not Found429 Too Many Requests500 Internal Server ErrorCódigoMensajeDescripción`3`process id is invalidCuando el ID del proceso no es válido.CódigoMensajeDescripción—Jwt header is an invalid JSONCuando el access token utilizado contiene caracteres incorrectos.—Jwt is expiredCuando el access token utilizado ha expirado.CódigoMensajeDescripción`5`error getting process: rpc error: code = NotFound desc = process not foundCuando 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.

advertenciaEnviar 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](/es/developers/start/rate-limits).CódigoMensajeDescripción`99999`Internal failure! Try again laterCuando ocurre un error interno.
### Polling vs. webhook​

Puedes hacer polling de este endpoint para verificar el progreso, pero el patrón recomendado es **suscribirte a un webhook** y usar este endpoint solo como fallback. Ver [Webhooks and Events](/es/developers/webhooks-and-events).
### Qué sigue​

Para la selfie capturada, ver [Get Selfie](/es/developers/api-reference/get-selfie).
Para el paquete de evidencias de auditoría, ver [Get Evidence Set](/es/developers/api-reference/get-evidence-set).
Última actualización el 8 oct 2026**