Saltar al contenido principal

Crear Proceso

MarkdownChatGPTClaude

Este es el punto de entrada de toda integración con la Unico API. Tu backend la llama para crear un proceso; tu frontend usa los tokens devueltos para renderizar el iFrame, redirigir al usuario o inicializar un SDK nativo.

Para conocer el flujo completo de integración, ver Flujos.

Endpoint​

EntornoURL
ProducciónPOST https://api.idcloud.unico.app/client/v1/process
SandboxPOST https://api.idcloud.uat.unico.app/client/v1/process

Solicitud​

Headers
HeaderValor
AuthorizationBearer <access_token> (ver Autenticación)
Content-Typeapplication/json
Parámetros del cuerpo
Los requisitos de los campos dependen del flow

Que un campo sea obligatorio, opcional o no aplicable depende del flow que estés integrando — consulta Flujos para la receta específica que estás usando antes de asumir el requisito de un campo solo a partir de esta tabla.

CampoTipoDescripción
callbackUristringURL a la que se redirige al usuario después de finalizar el recorrido. Usa / para flows de SDK nativo donde el callback se maneja dentro de la app.
flowstringIdentificador del flow — determina qué capacidades se ejecutan. Ejemplos: idunicodocs, idunicosign, idchecktrust, idtoken, idsmart. Ver Flujos disponibles.
purposestringPropósito de negocio. Valores aceptados: creditprocess, biometryonboarding, carpurchase, ageverification.
person.duiTypeenumTipo de documento. Ver valores de duiType más abajo.
person.duiValuestringNúmero del documento, sin formato.
person.friendlyNamestringNombre visible del usuario mostrado en la UI del recorrido. Máximo 50 caracteres.
person.phonestringNúmero de teléfono en formato DDI + DDD + número, sin separadores. Obligatorio al enviar notificaciones por SMS o WhatsApp.
person.emailstringDirección de correo electrónico. Obligatorio para flows con Firma Electrónica.
person.​notificationsarrayCanales de notificación para enviar el enlace del recorrido. Cada elemento tiene notificationChannel: NOTIFICATION_CHANNEL_WHATSAPP, NOTIFICATION_CHANNEL_SMS o NOTIFICATION_CHANNEL_EMAIL.
referencesarrayEntradas de referencia para flows de Validación 1:1 y Revalidación Inteligente. Cada elemento contiene referenceType (REFERENCE_TYPE_IMAGE_BASE64 o REFERENCE_TYPE_PROCESS_ID) y referenceContent (imagen codificada en base64 o UUID del proceso). Envía como máximo un elemento — un arreglo más largo se rechaza con 400, y referenceContent no debe estar vacío.
useCasestringEscenario de Revalidación Inteligente. Obligatorio para 🇧🇷 idsmart, idsmart_r2, idsmart_tp1. Ejemplos: USE_CASE_LOGIN, USE_CASE_FIN_TRANSACTIONS.
clientReferencestringIdentificador único del usuario en tu sistema. Obligatorio para la capacidad Multi Cuentas. Único en tu base, máximo 256 caracteres, sin espacios.
companyBranchIdstring (UUID)ID de la sucursal. Obligatorio solo si la cuenta de servicio tiene más de una sucursal asociada.
expiresInstringVentana de validez del proceso desde su creación. Formato: "3600s". Por defecto, 7 días si se omite.
flowConfigobjectAnulaciones de configuración por flow.
flowConfig.​biometryCapture.​enabledBackCamerabooleanUsa la cámara trasera del dispositivo. No es compatible con flows de captura de documento o Firma Electrónica.
contextualizationobjectContexto de la transacción mostrado al usuario durante el recorrido para explicar la captura. Disponible para clientes de cualquier región — no está limitado a un país específico.
contextualization.​company_namestringNombre de la empresa mostrado durante el recorrido. Máximo 20 caracteres.
contextualization.​currencystringCódigo de moneda mostrado al usuario. Valores aceptados: BRL, MXN, USD.
contextualization.​pricenumberMonto de la transacción mostrado al usuario.
contextualization.​localeobjectTexto localizado mostrado durante el recorrido. Claves: ptBr, enUs, esMx — estos son los únicos idiomas admitidos para el texto, independientemente de la región del cliente.
contextualization.locale.{ptBr|enUs|esMx}.reasonstringMotivo breve de la captura, mostrado durante el recorrido. Máximo 50 caracteres.
contextualization.locale.{ptBr|enUs|esMx}.titlestringTítulo del aviso al cliente mostrado durante el recorrido. Máximo 100 caracteres. Debe proporcionarse junto con text. Las etiquetas HTML se eliminan.
contextualization.locale.{ptBr|enUs|esMx}.textstringCuerpo del aviso al cliente mostrado durante el recorrido. Máximo 210 caracteres. Debe proporcionarse junto con title. Las etiquetas HTML se eliminan.
imageBase64stringLa selfie, enviada directamente. Acepta el JWT de captura del SDK.
document.purposeenumPara qué se usa el documento. Vocabulario fijo: DOCUMENT_PURPOSE_ONBOARDING, DOCUMENT_PURPOSE_CREDIT_PROCESS, DOCUMENT_PURPOSE_CAR_PURCHASE, DOCUMENT_PURPOSE_PAY_BY_PAYCHECK, DOCUMENT_PURPOSE_FGTS. Solo se usa con flows de Face Document Match.
document.​files[].​databytesNueva captura de documento, codificada en base64. Disponible a nivel global, no limitado a Brasil. Mutuamente excluyente con document.documentId.
document.documentIdstring (UUID)Reutiliza un documento ya capturado por la misma persona, en lugar de una nueva captura. Mutuamente excluyente con document.files[].
expectedResultobjectSimula el resultado de una capacidad en entornos de prueba/sandbox y marca la respuesta con simulated: true. Ver Simulando resultados (Test Mock).
Valores de duiType
PaísValorDescripción
ARDUI_TYPE_AR_PASSPORTPasaporte argentino
ARDUI_TYPE_AR_DNIDNI argentino
ARDUI_TYPE_AR_LNCLicencia de conducir argentina (Licencia Nacional de Conducir)
ATDUI_TYPE_AT_STNRNúmero de impuesto austríaco (STNR)
BEDUI_TYPE_BE_NNNúmero Nacional belga (NN)
BRDUI_TYPE_BR_CPFCPF brasileño
BRDUI_TYPE_BR_PASSPORTPasaporte brasileño
BRDUI_TYPE_BR_CNPJCNPJ brasileño
CADUI_TYPE_CA_SINSIN canadiense
CHDUI_TYPE_CH_AHVNúmero AHV/AVS suizo
CLDUI_TYPE_CL_RUNRUN chileno
CLDUI_TYPE_CL_PASSPORTPasaporte chileno
CLDUI_TYPE_CL_LICENCIA_CONDUCIRLicencia de conducir chilena (Licencia de Conducir)
CODUI_TYPE_CO_NITNIT colombiano
CODUI_TYPE_CO_PASSPORTPasaporte colombiano
CODUI_TYPE_CO_LICENCIA_CONDUCCIONLicencia de conducir colombiana (Licencia de Conducción)
CODUI_TYPE_CO_CCCédula de Ciudadanía colombiana (Cédula de Ciudadanía)
DEDUI_TYPE_DE_IDNRNúmero de Identificación Fiscal alemán (IdNr)
DKDUI_TYPE_DK_CPRCPR danés
ECDUI_TYPE_EC_NINI ecuatoriano
ESDUI_TYPE_ES_NIENúmero de Identidad de Extranjero español (NIE)
ESDUI_TYPE_ES_DNIDocumento Nacional de Identidad español (DNI)
FIDUI_TYPE_FI_HETUCódigo de identidad personal finlandés (HETU)
FRDUI_TYPE_FR_SPINúmero de Referencia Fiscal francés (SPI)
GBDUI_TYPE_GB_NINONúmero de Seguro Nacional británico (NINO)
GTDUI_TYPE_GT_CUICUI guatemalteco
IDDUI_TYPE_ID_NIKNIK indonesio
IEDUI_TYPE_IE_PPSNNúmero de Seguro Social Personal irlandés (PPSN)
ITDUI_TYPE_IT_CFCódigo Fiscal italiano (CF)
LKDUI_TYPE_LK_NICNIC de Sri Lanka
LUDUI_TYPE_LU_MATRICULENúmero de Identificación Nacional de Luxemburgo (Matricule)
MXDUI_TYPE_MX_CURPCURP mexicano
MXDUI_TYPE_MX_RFC_PERSONA_FISICARFC mexicano (Persona Física)
MXDUI_TYPE_MX_LICENCIA_CONDUCIRLicencia de conducir mexicana (Licencia de Conducir)
NGDUI_TYPE_NG_NINNIN nigeriano
NGDUI_TYPE_NG_BVNNúmero de Verificación Bancaria nigeriano (BVN)
NGDUI_TYPE_NG_BVN_TOKENToken BVN nigeriano (hash)
NGDUI_TYPE_NG_NIN_TOKENToken NIN nigeriano (hash)
NLDUI_TYPE_NL_BSNNúmero de Servicio al Ciudadano holandés (BSN)
NODUI_TYPE_NO_FNRNúmero de Identidad Nacional noruego (Fødselsnummer)
PEDUI_TYPE_PE_RUCRUC peruano
PEDUI_TYPE_PE_DNIDNI peruano
PEDUI_TYPE_PE_PASSPORTPasaporte peruano
PLDUI_TYPE_PL_PESELPESEL polaco
PTDUI_TYPE_PT_NIFNúmero de Identificación Fiscal portugués (NIF)
SEDUI_TYPE_SE_PNRNúmero personal sueco (PNR)
SEDUI_TYPE_SE_SAMORDNINGSNUMMERNúmero de Coordinación sueco (Samordningsnummer)
TRDUI_TYPE_TR_TCKNNúmero de Identificación turco (TCKN)
USDUI_TYPE_US_SSNSSN de Estados Unidos
USDUI_TYPE_US_PASSPORTPasaporte de Estados Unidos
USDUI_TYPE_US_DRIVER_LICENSELicencia de conducir de Estados Unidos
USDUI_TYPE_US_PASSPORT_CARDTarjeta de pasaporte de Estados Unidos
USDUI_TYPE_US_POLYCARBONATE_PASSPORTPasaporte de policarbonato de Estados Unidos
USDUI_TYPE_US_ID_CARDTarjeta de identificación de Estados Unidos
UYDUI_TYPE_UY_CICI uruguayo
ZZDUI_TYPE_ZZ_EMAILDirección de correo electrónico
ZZDUI_TYPE_ZZ_PHONE_NUMBERNúmero de teléfono
Crear un proceso sin documento

Cuando el flow permite un documento opcional, puedes omitir person.duiType y person.duiValue. Después de la captura, el proceso espera en AWAITING_FOR_DOCUMENT hasta que tu back-end envíe el documento con Definir Documento del Proceso.

Ejemplo​

curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"flow": "idunicodocs_r2",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"callbackUri": "https://your-app.example.com/onboarding/callback",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
}
}'

Respuestas​

200 OK
{
"process": {
"id": "b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"flow": "idunicodocs_r2",
"state": "PROCESS_STATE_CREATED",
"result": "PROCESS_RESULT_UNSPECIFIED",
"purpose": "biometryonboarding",
"clientReference": "pedido-88216",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909"
},
"capacities": [
"PROCESS_CAPACITY_IDLIVE",
"PROCESS_CAPACITY_IDUNICO",
"PROCESS_CAPACITY_IDDOCS"
],
"authenticationInfo": {
"authenticationId": ""
},
"companyData": {
"branchId": "",
"countryCode": "BRA"
},
"callbackUri": "https://your-app.example.com/onboarding/callback",
"userRedirectUrl": "https://cadastro.unico.app/flow?id=b7c1f0a2-63d4-4f3e-9a17-2c8e5d41b0aa",
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…",
"webAppToken": "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0…",
"simulated": false
}
}
CampoTipoDescripción
process.idstring (UUID)Identificador del proceso. Úsalo para obtener el resultado mediante Obtener Proceso.
process.stateenumPROCESS_STATE_CREATED — proceso creado, recorrido aún no iniciado. PROCESS_STATE_FAILED — falló la creación del proceso.
process.resultenumResultado de la verificación. Presente solo cuando state = PROCESS_STATE_FINISHED — ver Flujos para los valores de resultado que puede devolver un flow determinado.
process.flowstringIdentificador del flow enviado en la creación.
process.purposestringPropósito de negocio enviado en la creación.
process.callbackUristringURI de callback enviada en la creación.
process.​clientReferencestringTu identificador interno enviado en la creación. Presente solo si se proporcionó en la solicitud.
process.​companyBranchIdstring (UUID)ID de la sucursal. Presente solo si se proporcionó en la solicitud.
process.​userRedirectUrlstringURL a la que redirigir al usuario (integraciones de Web Redirect e iFrame). No modifiques esta URL.
process.tokenstringJWT para inicializar el iFrame del Web SDK.
process.webAppTokenstringJWT para inicializar SDKs nativos (Android, iOS, Flutter).
process.createdAtstring (date-time)Marca de tiempo de creación del proceso.
process.expiresAtstring (date-time)Marca de tiempo a partir de la cual el proceso expira y ya no puede completarse.
process.capacitiesarrayCapacidades configuradas para este proceso.
process.​authenticationInfoobjectInformación de autenticación del proceso (vacía en el momento de la creación).
process.personobjectEco del objeto person enviado en la creación.
process.​companyData.​branchIdstring (UUID)ID de la sucursal asociada al proceso.
process.​companyData.​countryCodestringCódigo de país asociado a la sucursal (ej.: BR, MX).

Códigos de Error​

CódigoMensajeDescripción
3invalid flowCuando el flow especificado no existe.
3invalid person: friendly name exceeds 50 characters.Cuando el nombre visible excede los 50 caracteres.
3invalid purposeCuando el purpose proporcionado no es válido.
3invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url:Cuando el callbackUri proporcionado no es válido.
3invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAILCuando el correo proporcionado no es válido y la notificación por correo está configurada.
3invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPPCuando el número de teléfono proporcionado no es válido y la notificación por SMS o WhatsApp está configurada.
3idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui valueCuando el identificador proporcionado (duiValue) no es válido.
3invalid expiresIn argumentCuando el valor de expiresIn no es válido.
3invalid company_name argument in process contextualization, max length is 20Cuando contextualization.​company_name excede los 20 caracteres.
3title and text must be provided together in process contextsCuando solo se proporciona uno de title o text en un locale.
3invalid title argument in process contexts, max length is 100Cuando el title de un locale excede los 100 caracteres.
3invalid text argument in process contexts, max length is 210Cuando el text de un locale excede los 210 caracteres.
3invalid reason argument in process contexts, max length is 50Cuando el reason de un locale excede los 50 caracteres.
3The references array must contain at most one element.Cuando se envía más de un elemento en references.
3The references[].referenceContent field is missing.Cuando referenceContent está vacío.
3The references[].referenceType field must be IMAGE_BASE64 or PROCESS_ID.Cuando referenceType no es uno de los valores admitidos.
3A reference is required for this flow.Cuando el flow requiere una referencia y no se envió ninguna. Envía references[0] con referenceType PROCESS_ID o IMAGE_BASE64.
9The referenceProcessId field is invalid.Cuando el proceso de referencia no existe o no se puede reutilizar. Nombra el campo que enviaste — bioTokenId si enviaste ese.
3INVALID_IMAGECuando la imagen no es un base64 válido, o parece un intento de inyección.
3INVALID_DUICuando el número de documento no es estándar o no existe.
3IMAGE_TOO_LARGECuando la imagen excede el tamaño máximo de 800 KB.
3UNSUPPORTED_IMAGE_FORMATCuando el formato de la imagen no es PNG, JPEG o WebP.
3MISSING_IMAGECuando la imagen es obligatoria para este flow y no se envió.
3MISSING_NAMECuando el nombre es obligatorio para este flow y no se envió.
3MISSING_DUICuando el número de documento es obligatorio para este flow y no se envió.
3MISSING_PERSONCuando el objeto person es obligatorio para este flow y no se envió.
3INVALID_REQUESTCuando el cuerpo de la solicitud es nulo o no se puede interpretar.
3TOKEN_ALREADY_USEDCuando el token de captura ya fue utilizado. Es de un solo uso.
3TOKEN_EXPIREDCuando el token de captura ha expirado. Debe usarse dentro de los 10 minutos.
3INVALID_BUNDLECuando la solicitud no cumple con los requisitos de seguridad.
3INVALID_NAMECuando el nombre es más largo que el máximo permitido.
3INVALID_EMAILCuando la dirección de correo está malformada o es demasiado larga.
3INVALID_PHONECuando el número de teléfono es más largo de 20 caracteres.
3INVALID_DUI_TYPECuando el tipo de documento no es uno de los valores admitidos.
3INVALID_CLIENT_REFERENCECuando clientReference es demasiado largo, o contiene un espacio o #.
3INVALID_CONSENT_TYPECuando consentType no es NONE, DIRECT o INDIRECT.
3INVALID_USE_CASECuando useCase no se reconoce, o es demasiado largo.
3INVALID_DEVICE_TRUST_TOKENCuando el token de confianza del dispositivo no es válido o ya fue consumido.
3TOO_MANY_REFERENCESCuando se envía más de un elemento en references.
3INVALID_REFERENCE_TYPECuando referenceType no es IMAGE_BASE64 o PROCESS_ID.
3INVALID_REFERENCE_PROCESSCuando el ID del proceso de referencia no es un identificador válido.
3REFERENCE_PROCESS_NOT_FOUNDCuando el proceso referenciado no existe.
3REFERENCE_PROCESS_NOT_READYCuando el proceso referenciado no tiene un resultado reutilizable, o ya fue consumido.
3REFERENCE_SELFIE_NOT_FOUNDCuando el proceso referenciado no contiene ninguna selfie para reutilizar.
3INVALID_CAPTURE_TOKENCuando la imagen capturada no es un token válido producido por un SDK de captura.
3INVALID_CAPTURE_SIGNATURECuando la firma del token de captura no se valida.
3PRIOR_CAPTURE_NOT_FOUNDCuando no se pudo localizar la captura previa en la que se basa esta solicitud. Reinicia el proceso.
3PRIOR_CAPTURE_IN_PROGRESSCuando la captura previa aún no ha finalizado. Vuelve a intentarlo en breve.
3PRIOR_CAPTURE_FAILEDCuando la captura previa no se pudo completar. Reinicia el proceso.
3INVALID_DOCUMENTCuando un archivo de documento no se puede leer, está protegido con contraseña o tiene un formato no admitido.
3INVALID_AUTH_PROCESSCuando document.authProcessId no es válido, ha expirado o pertenece a otra persona.
3INVALID_DOCUMENT_PURPOSECuando document.purpose no es uno de los valores admitidos.
3PROCESS_REUSE_NOT_ENABLEDCuando el flow no permite reutilizar un proceso anterior sin una imagen. Envía una imagen en su lugar.
9PROCESS_FAILEDCuando el proceso alcanzó una falla terminal durante su creación.
9Tenant API key is not configuredCuando la API Key no está configurada correctamente.

Qué sigue​

  • Después de que el usuario finalice el recorrido, llama a Obtener Proceso para obtener el resultado, o espera el webhook.
  • Para ver todas las combinaciones de recetas y sus posibles valores de resultado, ver Flujos.
  • Para probar un resultado sin una captura biométrica real, ver Simulando resultados (Test Mock).