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

- [/es/](/es/)
- [Referencia de API](/es/dual-api/developers/api-reference/)
- [Web y Nativo](/es/dual-api/developers/api-reference/web-sdk/)
- Obtener proceso

**En esta páginaObtener procesoGETRecupere 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.

advertenciaAntes de recuperar el proceso, revise la configuración de nuestro webhook y las estrategias de fallback — [haga 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​

Encabezados
EncabezadoValor`Authorization``Bearer <access_token>`
Parámetros de ruta
ParámetroTipoRequeridoDescripción`processId`string (UUID)síIdentificador del proceso devuelto por [Crear proceso](/es/dual-api/developers/api-reference/web-sdk/post-process).
### 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 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`).
Campos de la persona
CampoSignificado`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.
Campos de datos de la empresa
CampoSignificado`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`).
Tipos de documento y campos de OCR
`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](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) — 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`.
Esquemas específicos
Los tipos de documento que utilizan su propio esquema de campos — listados bajo `specific_document_schemas` en la [referencia de campos](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) — se muestran en la tabla siguiente. Use el tipo del diccionario para buscar cada esquema en ese archivo.
País`doc.code`Tipo del 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 para votar 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` (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.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"              }            }          }        ]      }    ]  }}
```

Campos de nivel superiorCampoTipoDescripción`process.id`string (UUID)Identificador del proceso.`process.flow`stringIdentificador del flujo enviado en la creación.`process.callbackUri`stringURL de callback configurada para eventos del proceso.`process.userRedirectUrl`stringURL para redirigir al usuario después de completar el recorrido.`process.state`enumEstado actual del proceso. Consulte los valores a continuación.`process.result`enumResultado 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`stringPropósito del proceso según lo configurado en el flujo.`process.clientReference`stringReferencia opcional del lado del cliente para indexación en el portal.`process.useCase`stringIdentificador del escenario asociado al flujo.`process.capacities`array of stringsLista de capacidades activadas en este proceso.`process.token`stringJWT firmado para integración con el SDK.`process.person`objectIdentificación proporcionada en la creación.`process.person.notifications`arrayCanales de notificación configurados para el recorrido (por ejemplo, `email`).`process.authenticationInfo`objectResultados por capacidad. Consulte a continuación.`process.companyData`objectContexto de empresa y sucursal.`process.companyData.branchId`stringIdentificador de 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 flujos de Validación 1:1 y Revalidación Inteligente.`process.services`arraySobres firmados, documentos capturados y otras salidas de servicio. Consulte a continuación.Valores de process.stateValorSignificado`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](/es/dual-api/developers/api-reference/web-sdk/post-process-document). Presente solo cuando el flujo personalizado permite documento opcional.`PROCESS_STATE_FINISHED`Recorrido completado. Verifique `result` y `authenticationInfo`.`PROCESS_STATE_FAILED`Error de procesamiento.Inconsistencia en el nombre del estado`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.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 (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.Resultados de capacidades en authenticationInfoTodos los campos se devuelven siempre, independientemente del flujo. Los campos de las capacidades no utilizadas en el flujo devuelven `*_UNSPECIFIED`.Valores de enum abreviadosLos 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.CampoCapacidadValores posibles`authenticationId`—Identificador único para este intento de autenticación.`livenessResult`[Detección de Vida](/es/capabilities/liveness)`LIVENESS_RESULT_LIVE`, `LIVENESS_RESULT_NOT_LIVE`, `LIVENESS_RESULT_UNSPECIFIED``authenticationResult`[Verificación de Identidad](/es/capabilities/identity-verification)`AUTHENTICATION_RESULT_POSITIVE`, `AUTHENTICATION_RESULT_NEGATIVE`, `AUTHENTICATION_RESULT_INCONCLUSIVE`, `AUTHENTICATION_RESULT_UNSPECIFIED``identityFraudstersResult`[Clasificación de Riesgo de Fraude](/es/capabilities/fraud-risk-classification)`TRUST_RESULT_YES`, `TRUST_RESULT_INCONCLUSIVE`, `TRUST_RESULT_UNSPECIFIED``bioTokenEngineResult`[Validación 1:1](/es/capabilities/1-1-validation)`BIO_TOKEN_ENGINE_RESULT_POSITIVE`, `BIO_TOKEN_ENGINE_RESULT_NEGATIVE`, `BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED``smartRevalidationResult`[Revalidación Inteligente](/es/capabilities/smart-revalidation)`SMART_REVALIDATION_RESULT_POSITIVE`, `SMART_REVALIDATION_RESULT_NEGATIVE`, `SMART_REVALIDATION_RESULT_UNSPECIFIED``idAgeResult`[Verificación de Edad](/es/capabilities/age-verification)`ID_AGE_RESULT_POSITIVE`, `ID_AGE_RESULT_NEGATIVE`, `ID_AGE_RESULT_INCONCLUSIVE`, `ID_AGE_RESULT_UNSPECIFIED``scoreEngineResult.scoreEnabled`[Score de Riesgo](/es/capabilities/risk-score)`SCORE_ENABLED_TRUE`, `SCORE_ENABLED_FALSE`, `SCORE_ENABLED_UNSPECIFIED``scoreEngineResult.score`[Score de Riesgo](/es/capabilities/risk-score)Número de -100 a +100. Presente cuando `authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE` y Score de Riesgo está habilitado.`serproResult.score`[Retorno de Similitud Serpro](/es/capabilities/serpro-similarity-return)`0`–`100` (similitud); `-1` (sin rostro en archivo para este CPF); `-2` (error de integración).Campos de process.servicesConvenciones de nomenclatura mixtas en `services`El 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.CampoTipoDescripción`envelopeId`string (UUID)Identificador del sobre firmado.`documentIds`array of stringsIDs de documentos capturados en este servicio.`consent_granted`booleanSi el usuario otorgó consentimiento para compartir datos.`documents`arrayDocumentos capturados con datos OCR y resultados de validación.`documents[].doc_id`stringIdentificador del documento.`documents[].typified`booleanSi el tipo de documento fue identificado exitosamente.`documents[].cpf_match`booleanSi el CPF del documento coincide con el CPF proporcionado (solo Brasil).`documents[].face_match`booleanSi el selfie coincide con la foto del documento.`documents[].validate_doc`booleanSi el documento pasó la validación de autenticidad.`documents[].reused_doc`booleanSi este documento fue reutilizado de un proceso anterior.`documents[].signed_url`stringURL prefirmada para descargar el PDF del documento (válida por 5 minutos — vuelva a consultarla para renovarla).`documents[].doc.version`integerVersión del esquema OCR.`documents[].doc.code`stringCódigo corto del tipo de documento (por ejemplo, `CNH`). Consulte [Tipos de documento y campos de OCR](#document-type-values) para conocer todos los valores y cómo se deriva el código.`documents[].doc.data`objectCampos OCR extraídos. El contenido varía según el tipo de documento — consulte la [referencia completa de campos](/es/assets/files/document-content-fields-0e4663f2ade946e901bbc7523c21f032.json) 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.
Los clientes en México pueden recibir el bloque de Verificación RENAPOLa respuesta mantiene la misma estructura y agrega el bloque idGov.Las integraciones en México con Verificación RENAPO habilitada reciben un bloque adicional idGov bajo authenticationInfo, con el registro que RENAPO tiene para la CURP del usuario. Es una respuesta independiente del resultado de identidad.```
{  "process": {    "id": "11111111-2222-3333-4444-555555555555",    "state": "PROCESS_STATE_FINISHED",    "result": "PROCESS_RESULT_APPROVED",    "person": {      "duiType": "DUI_TYPE_MX_CURP",      "duiValue": "PUEA880304MDFRJN04"    },    "authenticationInfo": {      "authenticationId": "22222222-3333-4444-5555-666666666666",      "idGov": {        "government_valid": true,        "curp": "PUEA880304MDFRJN04",        "government_name": "ANA PRUEBA EJEMPLO"      }    },    "companyData": { "countryCode": "MEX" }  }}
```

Se omiten otros campos y las claves restantes de `idGov` por brevedad. Para ver la tabla completa de campos de `idGov`, consulte [Verificación RENAPO](/es/capabilities/renapo-verification#possible-responses).CampoTipoDescripción`authenticationInfo.idGov`objectRegistro de RENAPO para la CURP. Ausente cuando la capacidad no está habilitada. `{}` cuando RENAPO no respondió. Solo México. Consulte [Verificación RENAPO](/es/capabilities/renapo-verification).
### 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 es inválido.CódigoMensajeDescripción—Jwt header is an invalid JSONCuando el token de acceso utilizado contiene caracteres incorrectos.—Jwt is expiredCuando el token de acceso 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/dual-api/developers/api-reference/rate-limits).CódigoMensajeDescripción`99999`Internal failure! Try again laterCuando 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](/es/developers/webhooks-and-events).
### Qué sigue​

Para el selfie capturado, consulte [Obtener Selfie](/es/dual-api/developers/api-reference/web-sdk/get-selfie).
Para el paquete de evidencias de auditoría, consulte [Obtener conjunto de evidencias](/es/dual-api/developers/api-reference/web-sdk/get-evidence-set).
Última actualización el 8 oct 2026**