Saltar al contenido principal
POST
cURL

Autorizaciones

x-api-key
string
header
requerido

La clave de API de tu aplicación, que encontrarás en Developers -> API keys en la Business Console. La clave principal tiene acceso completo. Una clave con nombre puede tener un alcance limitado: ninguno, lectura o escritura por recurso, limitada a algunos flujos o a sesiones aprobadas, a una lista de direcciones IP y a una fecha de caducidad. 401 significa que la clave es incorrecta, se revocó o expiró; 403 significa que no se envió ninguna clave, que la clave no tiene acceso a este recurso o acción, o que la solicitud provino de una dirección fuera de su lista de IP; 404 en una ruta de sesión significa que la sesión está fuera de los flujos o estados de la clave. Una clave sin acceso a contenido multimedia recibe las URL de imágenes, videos y PDF como null, y una clave sin permiso de escritura en sesiones recibe los enlaces y tokens de sesión como null. Consulta https://docs.didit.me/console/api-keys.

Cuerpo

multipart/form-data
front_image
file
requerido

Anverso del documento de identidad. Extensiones permitidas: tiff, jpg, jpeg, png, webp, pdf. Tamaño máximo de carga: 10 MB (los archivos más grandes se rechazan con 400). Los PDF se convierten en imagen antes del OCR; los PDF cifrados requieren front_image_password. Las imágenes se comprimen automáticamente a ~0.5 MB y se aplica la orientación EXIF. Sube la captura completa, sin recortar, con las cuatro esquinas del documento visibles.

front_image_password
string
write-only

Contraseña para descifrar front_image cuando es un PDF cifrado. Enviar un PDF cifrado sin contraseña (o con una incorrecta) devuelve 400.

back_image
file

Reverso del documento: envíalo siempre que el documento lo tenga (muchos documentos de identidad llevan la MRZ o un código de barras en el reverso; si lo omites, la MRZ y los campos del reverso simplemente quedan vacíos en la respuesta, y este endpoint no genera una advertencia por falta de MRZ). Mismo formato y límites de tamaño que front_image. Si se omite, back_image y los campos del reverso son null en la respuesta.

back_image_password
string
write-only

Contraseña para descifrar back_image cuando es un PDF cifrado.

perform_document_liveness
boolean
predeterminado:true

Analiza ambas imágenes en busca de fraude de presentación: reproducciones en pantalla (SCREEN_CAPTURE_DETECTED), copias impresas (PRINTED_COPY_DETECTED) y manipulación del retrato (PORTRAIT_MANIPULATION_DETECTED). Cualquiera de ellos provoca un rechazo automático. Está activado por defecto. Establécelo en false para omitir el análisis de fraude y reducir la latencia. Si está activado y el proveedor no devuelve una puntuación utilizable, la respuesta es In Review con una advertencia DOCUMENT_LIVENESS_NOT_COMPUTED en lugar de Approved.

Ejemplo:

true

minimum_age
integer | null

Se acepta y se valida (1–120), pero actualmente este endpoint no lo aplica: nunca genera una advertencia MINIMUM_AGE_NOT_MET a partir de este campo. Aplica las reglas de edad a partir de los valores date_of_birth/age devueltos, o usa un flujo de sesión de verificación con restricciones de edad.

Rango requerido: 1 <= x <= 120
expiration_date_not_detected_action
enum<string>
predeterminado:NO_ACTION

Qué hacer cuando no se puede leer ninguna fecha de caducidad (EXPIRATION_DATE_NOT_DETECTED). El valor predeterminado es NO_ACTION porque muchos documentos de identidad no llevan impresa la fecha de caducidad. Nota: una fecha de caducidad detectada y ya vencida siempre provoca el rechazo (DOCUMENT_EXPIRED), independientemente de esta opción.

Opciones disponibles:
NO_ACTION,
DECLINE
invalid_mrz_action
enum<string>
predeterminado:DECLINE

Qué hacer cuando la MRZ extraída no supera la validación de los dígitos de control (MRZ_VALIDATION_FAILED). Si falta la MRZ, este endpoint no genera ninguna advertencia. Solo aplica a documentos que incluyen MRZ. REVIEW no se admite en este endpoint y devuelve 400.

Opciones disponibles:
NO_ACTION,
DECLINE
inconsistent_data_action
enum<string>
predeterminado:DECLINE

Qué hacer cuando los datos extraídos son incoherentes entre sí: DATA_INCONSISTENT, MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME (la zona visual no coincide con la MRZ) o DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS.

Opciones disponibles:
NO_ACTION,
DECLINE
critical_field_occlusion_action
enum<string>
predeterminado:DECLINE

Qué hacer cuando un campo impreso crítico estaba tapado físicamente en la captura (CRITICAL_FIELD_OCCLUSION_DETECTED): un número de identidad, un nombre, la fecha de nacimiento o la fecha de caducidad. Rechaza por defecto, como los demás riesgos de integridad del documento de este endpoint: tapar los números con los que se concilia un informe es justo el aspecto de un documento censurado. En cualquier caso, el valor leído de un campo tapado se elimina de la extracción, por lo que suele ir acompañado de la advertencia *_NOT_DETECTED correspondiente. REVIEW no es compatible con este endpoint y devuelve 400.

Opciones disponibles:
NO_ACTION,
DECLINE
document_or_personal_number_format_mismatch_action
enum<string>
predeterminado:NO_ACTION

Qué hacer cuando un número no coincide con el formato que usa su autoridad emisora para ese tipo de documento (DOCUMENT_NUMBER_FORMAT_MISMATCH, PERSONAL_NUMBER_FORMAT_MISMATCH). El valor predeterminado es NO_ACTION, que informa de la advertencia sin cambiar el estado. REVIEW no es compatible con este endpoint y devuelve 400.

Opciones disponibles:
NO_ACTION,
DECLINE
preferred_characters
enum<string>
predeterminado:latin

Alfabeto preferido para los campos de nombre y dirección en documentos que imprimen texto tanto latino como no latino (árabe, cirílico, CJK, …). latin devuelve valores transliterados o latinos; non_latin da preferencia al alfabeto nativo.

Opciones disponibles:
latin,
non_latin
save_api_request
boolean
predeterminado:true

Cuando es true (valor predeterminado), guarda la llamada como una sesión de tipo API: visible en la Business Console, recuperable mediante GET /v3/session/{sessionId}/decision/ con el request_id devuelto, notificada mediante un webhook status.updated y con las imágenes del documento devueltas como URL de archivos multimedia. Cuando es false, no se almacena nada, request_id es un UUID temporal y las imágenes se devuelven en la propia respuesta como cadenas JPEG en base64.

Ejemplo:

true

vendor_data
string

Cadena opaca opcional (tu ID de usuario interno, correo electrónico, UUID…) que se guarda en la sesión persistida y se devuelve en la respuesta. Úsala para relacionar las llamadas a la API con tus propios registros y para filtrar sesiones más adelante.

Ejemplo:

"user-123"

metadata
object

Objeto JSON opcional que se almacena con la sesión (cuando save_api_request=true) y se devuelve en la respuesta. En solicitudes multipart, envíalo como un campo de cadena codificado en JSON (p. ej., metadata={"flow":"onboarding"}): se convierte en un objeto.

Ejemplo:

Respuesta

Documento procesado. id_verification.status es Approved, Declined o In Review; cada problema detectado se detalla en id_verification.warnings. Se devuelve In Review cuando una comprobación de prueba de vida del documento solicitada no produjo un resultado utilizable (DOCUMENT_LIVENESS_NOT_COMPUTED). Un documento con problemas también devuelve 200 con status: "Declined": revisa el cuerpo, no solo el código HTTP. Cuando save_api_request=true, request_id es el ID de la sesión guardada y los campos de imagen son URL de medios de corta duración; con save_api_request=false son cadenas JPEG en base64 incluidas en la respuesta.

request_id
string<uuid>

ID de la sesión guardada cuando save_api_request=true (se puede usar con GET /v3/session/{sessionId}/decision/); en caso contrario, un UUID de correlación temporal.

id_verification
object
vendor_data
string | null

Devuelve el vendor_data que enviaste, o null.

metadata
object | null

Devuelve el objeto metadata que enviaste, o null.

created_at
string<date-time>

Marca de tiempo ISO 8601 (UTC) del momento en que se generó la respuesta.

Última modificación el 1 de noviembre de 2026