Resultado de la validación de identidad
Cuando un firmante valida su identidad en el flujo guiado (firma con identidad o firma simple), puedes consultar el resultado en JSON para guardarlo o procesarlo en tu sistema. Es la misma información que el expediente en ZIP entrega en PDF e imágenes.
Método de validación (identity_providers) | Qué regresa |
|---|---|
VERIFICAMEX (firma con identidad) | Lista nominal del INE, CURP en RENAPO, coincidencia facial, prueba de vida y los datos leídos de la INE. |
LOCAL (firma simple) | Teléfono al que se envió el OTP, fecha en que se validó y geolocalización del firmante. |
Consulta Crear documento para ver cómo habilitar cada método.
Cómo obtener los IDs
Sección titulada «Cómo obtener los IDs»-
Obtén el
signatureIddel firmante. Consulta el documento conGET /v1/documents/{uuid}y toma eliddel firmante enrelationships.signatories.data[]. -
Obtén el
signatureFlowId. Consulta los flujos de firma de ese firmante:Ventana de terminal curl --location 'https://api.digitafirma.com/v1/signatures/{signatureId}/signature_flows'Toma el
iddedata[0]. Sidataviene vacío, el firmante todavía no inicia la validación de identidad. -
Consulta el resultado con el endpoint que se describe abajo.
Consultar el resultado
Sección titulada «Consultar el resultado»Método: GET https://api.digitafirma.com/v1/signatures/{signatureId}/signature_flows/{signatureFlowId}
Path Parameters
Sección titulada «Path Parameters»| Campo | Tipo | Descripción |
|---|---|---|
signatureId | string | ID del firmante. |
signatureFlowId | string | ID del flujo de firma de ese firmante. |
Este endpoint no recibe cuerpo (body).
Atributos de la respuesta
Sección titulada «Atributos de la respuesta»| Campo | Descripción |
|---|---|
status | Estado del flujo: ON_HOLD (el firmante aún no termina la validación), PROCESSING (el servicio está verificando su identidad), COMPLETED (identidad validada y certificado emitido) o ERROR (la validación falló). |
try | Número de intentos usados. El firmante tiene hasta 3. |
providerData.provider | Método de validación: VERIFICAMEX o LOCAL. |
providerData.verificationUrl | Enlace donde el firmante hace la validación. |
providerVerificationId | ID de la sesión de validación. |
errorMessage | Motivo del fallo. Tómalo en cuenta solo cuando status es ERROR. |
verificationDetails | Resultado de la validación. Ver Cómo leer el resultado. |
redirectUrl | URL de redirección del documento. Solo aparece si el documento tiene una. |
createdAt / updatedAt | Fecha de creación y de última actualización del flujo. |
Cómo leer el resultado
Sección titulada «Cómo leer el resultado»Firma con identidad (VERIFICAMEX)
Sección titulada «Firma con identidad (VERIFICAMEX)»| Validación | Dónde está | Cómo saber si pasó |
|---|---|---|
| Lista nominal del INE | verificationDetails.nominalList | status es true y message dice "La credencial es válida". En data vienen CIC, clave de elector, número OCR, año de emisión, etc. |
| CURP en RENAPO | verificationDetails.renapo | status es true. En registros[0] vienen la CURP, el nombre, la fecha de nacimiento, statusCurp y su descripción en statusCurpDesc. |
| Coincidencia facial | verificationDetails.ineReading.DocumentVerifications[] | El elemento con Category: "Biometrics" y Name: "Comprobación Facial". Result es "Ok" y Output trae el puntaje de 0 a 100. |
| Prueba de vida | verificationDetails.ineReading.DocumentVerifications[] | El elemento con Category: "Biometrics" y Name: "Verificación de Vida". Result es "Ok" e InputFields[0].Value describe la prueba que hizo el firmante. |
| Datos leídos de la INE | verificationDetails.ineReading.DocumentData[] | Cada dato trae Type (por ejemplo Name, DateOfBirth, Voter_Key), Value y Source (de qué parte de la credencial se leyó). |
En este método, phone, otpVerifyAt y geolocation vienen en null.
Firma simple (LOCAL)
Sección titulada «Firma simple (LOCAL)»| Campo | Descripción |
|---|---|
verificationDetails.phone | Teléfono al que se envió el código OTP. |
verificationDetails.otpVerifyAt | Fecha y hora en que el firmante validó el OTP. |
verificationDetails.geolocation | Ubicación del firmante al validar el OTP: latitude y longitude. |
En este método, ineReading, nominalList y renapo vienen en null.
Ejemplo de integración
Sección titulada «Ejemplo de integración»curl --location 'https://api.digitafirma.com/v1/signatures/{signatureId}/signature_flows/{signatureFlowId}' \--header 'X-Api-Key: {X-API-KEY}'Las listas DocumentData y DocumentVerifications traen más elementos de los que se muestran aquí.
{ "data": [ { "type": "signature_flow", "id": "ac110005-9df4-1d1b-819d-f60512ab0041", "links": { "self": "/signature_flows/ac110005-9df4-1d1b-819d-f60512ab0041" }, "attributes": { "providerData": { "provider": "VERIFICAMEX", "verificationUrl": "https://..." }, "providerVerificationId": "9c9fd65f-12eb-4f59-8ab8-330e9a2d60cd", "errorMessage": null, "status": "COMPLETED", "try": 1, "verificationDetails": { "ineReading": { "DocumentData": [ { "Name": "Nombre", "Type": "Name", "Value": "MARIA", "Source": "MRZ" }, { "Name": "Apellido/s", "Type": "Surname", "Value": "LOPEZ PEREZ", "Source": "MRZ" } ], "DocumentVerifications": [ { "Key": "TemplateSelected", "Name": "Identificación del Documento", "Category": "Identification", "Result": "Ok", "Output": "100" }, { "Key": null, "Name": "Comprobación Facial", "Category": "Biometrics", "Result": "Ok", "Output": "99.99" }, { "Key": null, "Name": "Verificación de Vida", "Category": "Biometrics", "Result": "Ok", "Output": "OK", "InputFields": [ { "Name": "Verificación de Vida", "Type": "Text", "Value": "Interacción activa - Giro de cabeza derecho" } ] } ] }, "nominalList": { "status": true, "message": "La credencial es válida", "maintenance": false, "data": { "CIC": "123456789", "Clave de elector": "LPPRMR90010109M100", "Número OCR": "0123456789012", "Año de emisión": "2019", "Año de registro": "2008", "Número de emisión": "1" } }, "renapo": { "codigo": 0, "status": true, "mensaje": "Búsqueda exitosa por curp", "registros": [ { "curp": "LOPM900101MDFPRR09", "nombres": "MARIA", "primerApellido": "LOPEZ", "segundoApellido": "PEREZ", "sexo": "Mujer", "fechaNacimiento": "1990-01-01", "nacionalidad": "MEX", "statusCurp": "RCN", "statusCurpDesc": "Registro de cambio no afectando a CURP", "docProbatorioDesc": "Acta de nacimiento" } ] }, "phone": null, "otpVerifyAt": null, "geolocation": null }, "createdAt": "2026-05-06T10:02:11.120394", "updatedAt": "2026-05-06T10:09:45.881203" } } ]}{ "data": [ { "type": "signature_flow", "id": "ac110005-9df4-1d1b-819d-f60512ab0042", "links": { "self": "/signature_flows/ac110005-9df4-1d1b-819d-f60512ab0042" }, "attributes": { "providerData": { "provider": "LOCAL", "verificationUrl": "https://..." }, "providerVerificationId": "ac110005-9df4-1d1b-819d-f60512c50043", "errorMessage": null, "status": "COMPLETED", "try": 1, "verificationDetails": { "ineReading": null, "nominalList": null, "renapo": null, "phone": "+525512345678", "otpVerifyAt": "2026-05-06T10:07:30.512077", "geolocation": { "latitude": "19.4326", "longitude": "-99.1332" } }, "createdAt": "2026-05-06T10:02:11.120394", "updatedAt": "2026-05-06T10:07:31.004118" } } ]}{ "errors": [ { "status": 400, "title": "Domain Error", "detail": "El documento no fue encontrado" } ]}Errores comunes
Sección titulada «Errores comunes»| Código | Mensaje | Causa |
|---|---|---|
| 400 | El documento no fue encontrado | La X-Api-Key es válida pero no es del usuario que creó el documento. |
| 400 | Error al conectar con Verificamex, respuesta: ... | No se pudo conectar con el servicio de validación de identidad. Reintenta más tarde. |
| 403 | El usuario no tiene los privilegios para usar esta característica | El plan de la cuenta que creó el documento no incluye el flujo guiado de firma. |
| 500 | No value present | El signatureId o el signatureFlowId no existen. |
| 500 | — | El servicio de validación de identidad no regresó el resultado completo. Reintenta más tarde. |