Saltar al contenido principal

Descripción general

El informe de verificación de identidad recoge todo lo que Didit extrae y valida de un documento de identidad oficial: pasaportes, documentos de identidad, licencias de conducir y permisos de residencia. Agrupa los campos biográficos y del documento obtenidos por OCR, URL firmadas de los archivos capturados, los datos de la dirección analizados y geolocalizados, las puntuaciones de calidad de imagen de cada lado, el contenido de la MRZ, el desglose multiescritura (latino / no latino) y las coincidencias del documento entre sesiones. El informe se genera cuando el usuario completa el paso de captura del documento en un flujo de verificación (workflow) (o cuando se llama al endpoint de OCR independiente). Didit identifica el tipo de documento, ejecuta el OCR, valida la MRZ, el código de barras o el código QR, analiza la dirección, detecta manipulaciones (captura de pantalla, copia impresa, manipulación del retrato) y compara el documento con todos los demás documentos capturados en tu aplicación. Cada informe tiene su propio status, independiente del estado general de la sesión, que refleja cómo se resolvió únicamente el paso de identidad:
  • Aprobado: documento reconocido, todos los campos obligatorios extraídos y ninguna advertencia configurada para rechazar se ha activado.
  • En revisión: se activaron una o más advertencias y tu flujo las envía a revisión.
  • Rechazado: se activó una condición de rechazo automático (documento no admitido, documento expirado, falta el retrato, coincidencia en la lista de bloqueo, fallo en la comprobación de edad adaptativa) o una advertencia cuya acción configurada es Rechazar (la edad mínima y la máxima tienen Rechazar como valor predeterminado).
  • Expirado: la expiration_date del documento venció después de la verificación. La monitorización continua de caducidad de Didit cambia el informe de Approved a Expired, añade una advertencia DOCUMENT_EXPIRED y pasa una sesión aprobada al estado de sesión Kyc Expired.
  • No finalizado: el usuario nunca completó el paso de captura.

Dónde aparece en las respuestas de la API

El informe de identidad se incluye dentro del array id_verifications[]: siempre es un array JSON, nunca un objeto singular id_verification. Aparecen varias entradas cuando un flujo ejecuta más de un paso de documento (por ejemplo, un documento de identidad principal y una verificación adicional).
  • API de decisión de sesión: GET /v3/session/{sessionId}/decision/ devuelve id_verifications[] en el nivel superior. Consulta Obtener la decisión de la sesión.
  • Webhooks: los payloads de session.status.updated incluyen el mismo array id_verifications[] en cuanto el paso ha generado datos. Consulta Webhooks.
  • API de OCR independiente: el envío directo de documentos devuelve un objeto singular id_verification con los mismos campos. Consulta API de OCR independiente.
Lee response.id_verifications[0] y recorre el array. La estructura singular id_verification solo existe en la API de OCR independiente; no existe en el endpoint de decisión v3.

Esquema

El esquema canónico, campo por campo, está en la página de referencia Modelos de datos. Los campos siguientes provienen directamente de IDVerificationV3Serializer, que extiende IDVerificationV2Serializer y añade node_id, el array de coincidencias entre sesiones matches[] y el array de Silent Capture document_selfie_face_matches[].

Campos de nivel superior

issuing_state siempre corresponde al país, nunca a una división subnacional. Para todos los tipos de documento, incluidas las licencias de conducir emitidas por un estado o provincia (Australia, Estados Unidos, Canadá), issuing_state e issuing_state_name indican el país (por ejemplo AUS / Australia), no el estado. El valor subnacional, cuando el documento lo incluye, está disponible por separado en parsed_address.region (con extra_fields.state como alternativa en algunos tipos de documento). La vista general de la sesión en el Business Console lo muestra como una fila Region debajo de Issuing state cuando existe.
Licencias de conducir con dos números (Australia). Las licencias australianas imprimen tanto un número de licencia, que identifica el permiso de conducción del titular y no cambia cuando se reemplaza la tarjeta, como un número de tarjeta, que identifica la tarjeta física y cambia con cada reemisión. Para estas licencias, Didit siempre asigna los números de la misma manera:
  • personal_number: el número de licencia
  • document_number: el número de tarjeta
Esto se aplica a todos los estados y territorios australianos (NSW, VIC, QLD, WA, SA, TAS, ACT, NT). En algunas variantes, el número de tarjeta solo está impreso en el reverso, por lo que solo se lee cuando se captura el reverso de la licencia. Cuando no se puede leer ningún número de tarjeta, el número de licencia se informa tanto en document_number como en personal_number, de modo que document_number siempre contiene un identificador una vez finalizada la verificación. personal_number es el número de licencia en ambos casos. En otros tipos de documento, document_number sigue siendo el número principal extraído por OCR y puede ser en sí mismo un identificador del titular.
El CUIL argentino está en extra_fields.tax_number, nunca en personal_number. Los documentos argentinos imprimen el CUIL (el identificador de 11 dígitos sobre el que trabajan AFIP, ANSES y los burós de crédito) en un lugar distinto en cada documento, y el DNI imprime además un segundo número de 11 dígitos junto a él:
  • en la licencia de conducir, el CUIL es lo que contiene personal_number;
  • en el DNI, personal_number contiene el número de trámite, que identifica la solicitud de la tarjeta y no es un identificador del titular. El CUIL del DNI se lee de su propio campo impreso.
Por tanto, personal_number no es un CUIL fiable para Argentina: en un DNI es un número de 11 dígitos que no devolverá ningún resultado en ningún registro, sin avisar de ello. Lee extra_fields.tax_number en su lugar. Didit lo informa solo cuando el valor se valida como un CUIL real (prefijo de persona más el dígito verificador módulo 11), en dígitos canónicos sin separadores (27111111117), sea cual sea el documento argentino que haya presentado el titular. Cuando no se pudo leer el CUIL de la tarjeta, la clave no aparece, en lugar de rellenarse con un número que no es un CUIL. Para cubrir a esos usuarios, captura la licencia de conducir como segundo documento, o recoge el CUIL mediante una respuesta de un cuestionario o los metadata de la sesión.

Puntuaciones de calidad de imagen

front_image_quality_score y back_image_quality_score devuelven cada uno:
Usa overall_score como comprobación rápida de idoneidad: las puntuaciones superiores a 70 suelen indicar una captura lo bastante buena para una verificación fiable.

Puntuaciones de prueba de vida del documento

document_liveness informa de lo que midió la comprobación de prueba de vida del documento, haya generado o no una advertencia. Una advertencia solo existe cuando una puntuación quedó por debajo de uno de los umbrales del flujo, así que antes de este campo un documento aprobado no aportaba ninguna evidencia de prueba de vida: este campo es la forma de auditar una sesión aprobada. Es null cuando la comprobación no se ejecutó (por ejemplo, con un método que no es de documento, o ante una caída del modelo registrada en los logs de la sesión). Contiene un objeto por tipo de fraude (portrait_replace, printed_copy y screen_replay), cada uno con:
En los documentos más antiguos sin evidencia de evaluación guardada, las puntuaciones almacenadas siguen siendo visibles, pero ambos umbrales y bucket son null. La configuración actual del flujo nunca se usa para reconstruir un resultado histórico. Lo mismo se aplica a una captura cuya evaluación del documento aún no ha finalizado. La Business Console muestra las mismas tres filas en el bloque Document liveness de la sección Verificación de identidad de la sesión.

Coincidencias entre sesiones

matches[] enumera hasta 5 documentos de tu aplicación que coinciden con este: misma fecha de nacimiento, mismo país emisor y un nombre completo muy similar. Los documentos de la lista de bloqueo requieren además una coincidencia exacta del número de documento. Se excluyen las sesiones que pertenecen al mismo usuario (mismo vendor_data). Cada entrada incluye session_id, session_number, vendor_data, verification_date, user_details (name, document_type, document_number), status, is_blocklisted (true cuando el documento se añadió a tu lista de bloqueo), api_service y una front_image_url firmada.

Valores de estado

Documentos con varias escrituras (latina / no latina)

Algunos documentos (kirguises, kazajos, rusos, japoneses, coreanos, chinos, árabes, tailandeses, entre otros) imprimen el nombre, la dirección o el lugar de nacimiento del titular tanto en una transliteración latina como en la escritura local. Puedes elegir qué escritura determina la respuesta de nivel superior con el ajuste preferred_characters del flujo (o de la API independiente): Los valores en la escritura alternativa se encuentran dentro de extra_fields, en claves con sufijo: first_name_non_latin, last_name_non_latin, middle_name_non_latin, full_name_non_latin, address_non_latin, place_of_birth_non_latin (o las variantes _latin correspondientes).

Cuándo aparecen los campos de escritura alternativa

  • Solo cuando ambas escrituras están realmente presentes en el documento. Si un campo de OCR etiquetado nominalmente como “Surname-Kyrgyz (Cyrillic)” se extrae como texto en escritura latina (homoglifos o una transliteración latina), no se considera una alternativa no latina y esa clave se omite.
  • full_name_non_latin (y full_name_latin) siempre se reconstruyen a partir de los componentes individuales de nombre, segundo nombre y apellido cuando ambos están disponibles; el campo “Full Name” sin procesar del OCR se ignora por coherencia.
  • Cuando preferred_characters=latin pero el documento contiene solo texto no latino (de modo que los campos de nivel superior quedan en escritura no latina), Didit ejecuta una transliteración y expone first_name_latin, last_name_latin, middle_name_latin, full_name_latin, place_of_birth_latin y address_latin como alternativa en escritura latina.
last_name_non_latin no aparece porque, en esta muestra, el campo “Surname (Cyrillic)” del documento se extrajo como caracteres latinos: no había ningún apellido no latino real que extraer.

Ejemplos

Aprobado: documento de identidad español sin incidencias (todos los campos)

En revisión: no se detectó el QR en un documento que debería tenerlo

Abreviado: una respuesta real siempre incluye el conjunto completo de campos mostrado arriba.

Nota de seguridad

Las URL firmadas que se devuelven para las imágenes y los videos de los documentos son temporales: caducan tras un periodo de validez limitado. Trátalas como enlaces de corta duración: descarga lo que necesites cuanto antes y no las almacenes en caché ni las expongas públicamente. Normalmente, tu aplicación solo necesita status, unos pocos campos biográficos y las advertencias; almacena lo mínimo posible para reducir la exposición ante cualquier brecha futura.

Relacionado

Última modificación el 1 de noviembre de 2026