Saltar al contenido principal
POST
curl

Servicios basados en dirección

Para los servicios que validan una dirección residencial o de servicios públicos, puedes enviar un único campo address y Didit lo dividirá antes de procesar la comprobación. Para obtener la mejor tasa de coincidencia, envía directamente los campos de dirección estructurados de Didit: Los campos estructurados tienen prioridad sobre el valor único de address. Se acepta postal_code como alias de address_element_5.

Consentimiento

Algunos servicios de bases de datos requieren el consentimiento explícito del usuario final antes de que se pueda consultar al proveedor. El catálogo de servicios marca estas filas con requires_consent=true. Envía consent=true cuando el usuario haya dado su consentimiento para los servicios seleccionados. Si un servicio seleccionado requiere consentimiento y no lo envías, Didit rechaza la solicitud antes de cualquier consulta al proveedor o evento de facturación.

Carga de archivos

La validación de base de datos usa multipart/form-data. Los servicios biométricos que requieren selfie lo exponen como un campo de carga de archivos en el playground de la API, de modo que puedes seleccionar una imagen directamente en lugar de pegar una ruta o una cadena en base64. En el código, sube el archivo con la sintaxis multipart habitual:

Errores de validación

Didit valida los campos obligatorios, la estructura de la dirección y los formatos específicos de cada servicio antes de llamar al proveedor. Por ejemplo, los servicios de registros de China, como chn_national_id y chn_passport_verification, esperan full_name en el sistema de escritura chino original, y chn_national_id además requiere un número de identificación nacional chino válido de 15 o 18 caracteres con un dígito de control correcto. Si una solicitud no se puede ejecutar, la API devuelve errores explícitos por campo y no se factura ningún uso. Si un proveedor falla después de la verificación previa, la respuesta incluye validation_errors, y las solicitudes de API guardadas almacenan esos errores en el resultado de validación de la base de datos.

Entrada rechazada y resultados no disponibles

Cuando ningún servicio devuelve un resultado utilizable, revisa cada entrada de validation_errors antes de decidir si reintentar. El código de estado HTTP por sí solo no determina si conviene reintentar. Una respuesta 400 con code: "provider_rejected_input" y retryable: false significa que todos los intentos sin respuesta rechazaron explícitamente la entrada. Corrige los datos proporcionados antes de volver a intentarlo. Estos intentos no se facturan. Una respuesta 502 con code: "empty_provider_response" y retryable: true significa que el servicio no pudo producir un resultado utilizable por otro motivo. Esto incluye una entrada rechazada seguida de un servicio de respaldo no disponible o de un servicio de respaldo que no ofrece ninguna explicación. Vuelve a intentarlo más tarde; la respuesta no establece que la entrada sea incorrecta. Si una base de datos sigue fallando, Didit envía un correo electrónico a las organizaciones que la han usado recientemente una vez que la interrupción se prolonga, y de nuevo cuando comprobaciones reales confirman que vuelve a responder. Consulta Notificaciones de disponibilidad. Cuando solo fallan algunos de los servicios seleccionados, la solicitud se completa correctamente: la respuesta es 200 y los servicios fallidos se enumeran en database_validation.errors[], cada uno con los mismos campos code y retryable. En ese caso, database_validation.status refleja los servicios que sí respondieron y puede ser Approved, así que revisa errors[] en cada respuesta y no solo en las 4xx o 5xx. Un servicio que aparece ahí no figura en validations ni en services_used, y no se factura; reintenta ese servicio por separado. Otros errores 502 pueden requerir que corrijas la entrada. Por ejemplo, provider_invalid_input y provider_validation_error describen una entrada que la fuente rechazó y no deben reintentarse sin cambios, aunque la respuesta de versiones anteriores omita retryable. Las indicaciones de reintento de empty_provider_response no se aplican a estos códigos. Un resultado concluyente sin coincidencia es una comprobación completada, no un fallo de disponibilidad.

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

issuing_state
string
requerido

Código de país ISO 3166-1 alfa-3 del registro contra el que se valida (p. ej. BRA, ESP, COL). Determina qué servicios están disponibles. Los códigos no admitidos devuelven 400 con la lista completa de opciones válidas.

Ejemplo:

"BRA"

services
string[]

service_id del catálogo que se ejecutarán para este país (p. ej., ["bra_cpf"]). También acepta una sola cadena o una cadena separada por comas o codificada en JSON. Si se omite o está vacío, se ejecuta exactamente un servicio predeterminado: el servicio activo más consolidado del país; los servicios más recientes, biométricos y de pago por uso deben indicarse explícitamente. Enviar services cambia la respuesta al formato extendido (añade services_used y match_score). Cada id debe existir y estar activo para el issuing_state; los servicios que requieren onboarding devuelven 400 hasta que se activen para tu organización. Consulta los servicios disponibles por país mediante GET /v1/organization/database-validation-countries/ (un endpoint de catálogo no documentado en esta especificación) o el editor de flujos de la Business Console.

Ejemplo:
validation_type
string
obsoleto

OBSOLETO. Se acepta por compatibilidad con versiones anteriores, pero se ignora: el validation_type de la respuesta ahora se deriva de cuántos servicios obtuvieron una coincidencia total. Usa services para fijar servicios concretos.

Establécelo en true cuando el usuario final haya dado su consentimiento explícito para los servicios de validación seleccionados. Obligatorio para los servicios marcados con requires_consent=true en el catálogo: sin él, esos servicios devuelven 400 con services_requiring_consent.

identification_number
string

Número de identificación universal: se asigna automáticamente al campo específico del país correcto, por lo que puedes usarlo en lugar de personal_number/tax_number/document_number: ARG→document_number (DNI), BOL→document_number (CI), BRA→tax_number (CPF, 11 dígitos), CHL→personal_number (RUT), COL→personal_number (Cédula), CRI→personal_number (Cédula), DOM→personal_number (Cédula, 11 dígitos), ECU→personal_number (Cédula, 10 dígitos), ESP→personal_number (DNI/NIE), GTM→document_number (DPI), HND→document_number (DNI), MEX→personal_number (CURP, 18 caracteres), PAN→personal_number (Cédula), PER→personal_number (DNI, 8 dígitos), PRY→document_number (CI), SLV→document_number (DUI), URY→personal_number (CI), VEN→document_number (Cédula). Nunca sobrescribe un campo específico del país proporcionado explícitamente.

first_name
string

El nombre de pila de la persona. Obligatorio en algunos servicios o países.

Ejemplo:

"John"

last_name
string

El apellido de la persona. Obligatorio en algunos servicios o países.

Ejemplo:

"Doe"

middle_name
string

Segundo nombre, utilizado por algunos servicios nacionales (AUS, NZL, …).

full_name
string

Nombre completo: algunos servicios lo aceptan en lugar del nombre y el apellido (p. ej., los servicios de CHN, que comparan el nombre en escritura nativa).

date_of_birth
string<date>

Fecha de nacimiento, YYYY-MM-DD. Muchos servicios la exigen.

Ejemplo:

"1980-01-01"

personal_number
string

Identificador personal único emitido por el gobierno. Lo usan: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY. Considera usar identification_number en su lugar.

tax_number
string

Número de identificación fiscal. Lo usa: BRA (CPF, 11 dígitos). Considera usar identification_number en su lugar.

document_number
string

Número de documento. Lo usan: ARG (DNI), BOL (CI), GTM (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula). Considera usar identification_number en su lugar.

document_type
enum<string>

Tipo de documento que se valida: P pasaporte, DL licencia de conducir, ID documento nacional de identidad, RP permiso de residencia (además de SSC, HIC, WP, TC, VISA, PSC, BC, OTHER). Lo exigen algunos servicios (p. ej., ESP).

Opciones disponibles:
P,
DL,
ID,
RP,
SSC,
HIC,
WP,
TC,
VISA,
PSC,
BC,
OTHER
expiration_date
string<date>

Fecha de caducidad del documento, YYYY-MM-DD. Obligatoria para la validación de ESP (España).

Ejemplo:

"2030-01-15"

date_of_issue
string<date>

Fecha de expedición del documento, YYYY-MM-DD (fecha de expedición). Obligatoria para la validación de la cédula de COL (Colombia).

Ejemplo:

"2015-06-20"

nationality
string

Nacionalidad en formato ISO 3166-1 alfa-3. Algunos servicios la exigen.

gender
enum<string>

Género: M, F o X (otro/desconocido). Obligatorio para la validación RENAPER de Argentina (arg_renaper).

Opciones disponibles:
M,
F,
X
address

Dirección de residencia. Es preferible el objeto estructurado {"street_1":"123 Main St","street_2":"Apt 4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}; se sigue aceptando una cadena completa en una sola línea. Obligatoria para los servicios de verificación de dirección; cuando un servicio define requisitos de dirección, las partes que falten devuelven 400 con address_fields_required_by.

address_element_1
string

Dirección de la calle, incluidos el número y el tipo de vía. Si se omite, se deriva de address.

address_element_2
string

Apartamento, unidad, edificio, planta o línea adicional de la dirección. Envíalo solo cuando lo tengas de forma explícita.

address_element_3
string

Ciudad, barrio, distrito, localidad o vecindario. Si se omite, se obtiene de address.

address_element_4
string

Estado, provincia, región o localidad. Si se omite, se deriva de address.

address_element_5
string

Código postal. Se acepta postal_code como alias.

postal_code
string

Código postal para servicios basados en la dirección (alias de address_element_5).

driver_license_number
string

Número de licencia de conducir para los servicios gubernamentales de verificación de documentos (AUS, NZL, IND).

driver_license_card_number
string

Número de la tarjeta física de la licencia de conducir, cuando se exige por separado del número de licencia (AUS).

driver_license_state
string

Estado o territorio de expedición de la licencia de conducir (AUS).

driver_license_version
string

Código de versión de la licencia de conducir (NZL).

passport_number
string

Número de pasaporte para los servicios gubernamentales de verificación de pasaportes (AUS, NZL, IND, CHN).

passport_expiration_date
string<date>

Fecha de caducidad del pasaporte, YYYY-MM-DD, para los servicios de verificación de pasaportes.

passport_file_number
string

Número de expediente del pasaporte (IND).

passport_issue_country
string

País emisor del pasaporte (ISO 3166-1 alpha-3) para los servicios de verificación de pasaportes.

medicare_card_number
string

Número de tarjeta Medicare (AUS).

immi_card_number
string

Número de la ImmiCard australiana.

immi_card_expiry_date
string<date>

Fecha de caducidad de la ImmiCard australiana.

citizenship_certificate_number
string

Número del certificado de ciudadanía (AUS).

birth_registration_number
string

Número de registro del certificado de nacimiento (AUS).

birth_registration_date
string<date>

Fecha de registro del certificado de nacimiento (AUS).

birth_registration_state
string

Estado de registro del certificado de nacimiento (AUS).

marriage_certificate_number
string

Número del certificado de matrimonio (AUS).

change_of_name_certificate_number
string

Número de certificado de cambio de nombre (AUS).

first_partner_name
string

Nombre de la pareja en un certificado de matrimonio (AUS).

last_partner_name
string

Apellido de la pareja en un certificado de matrimonio (AUS).

voter_id
string

Número de registro electoral (IND EPIC, IRL).

epic_card
string

Número de la tarjeta electoral EPIC de India.

pan
string

PAN (Permanent Account Number) de India.

national_id
string

Número de documento nacional de identidad (CHN, MYS, KEN, KHM, NGA, ZAF, …).

cic
string

Código de Identificación de Credencial (CIC) del INE/IFE de México, de 9 dígitos. Lo utiliza el servicio de vigencia de la credencial del INE de México (mex_ine_vigencia).

identificador_ciudadano
string

Identificador del Ciudadano del INE de México (9 dígitos). Se usa con cic para los modelos modernos del INE (E/F/G/H) en mex_ine_vigencia.

ocr
string

Número OCR del INE de México (13 dígitos, en el reverso de la credencial). Se usa con cic para el Modelo D en mex_ine_vigencia.

voter_number
string

Clave de Elector del INE de México (18 caracteres). Se usa con emission_number para los modelos antiguos del IFE (A/B/C) en mex_ine_vigencia.

emission_number
string

Número de Emisión del INE de México. Se usa con voter_number para los modelos antiguos del IFE (A/B/C) en mex_ine_vigencia.

bvn
string

Número de Verificación Bancaria (BVN) de Nigeria.

bank_card_number
string

Número de tarjeta bancaria (verificación de tarjeta bancaria de CHN).

company_registration_number
string

Número de registro de la empresa tal como lo emite el registro mercantil: el CNPJ en Brasil (p. ej., 11222333000181) y el número de registro en Sudáfrica (p. ej., 1936/007721/06). Lo requieren los servicios de registro de empresas y de directores de empresas (bra_company_registry, bra_company_directors, zaf_company_registry, zaf_company_directors).

company_name
string

Razón social registrada, cotejada con la inscripción en el registro. Opcional para zaf_company_registry.

initials
string

Las iniciales de la persona tal como aparecen impresas en el documento. Obligatorio para zaf_drivers_license; se acepta para zaf_bank_account_holder.

licence_number
string

Número de licencia de conducir tal como figura impreso en la tarjeta, para zaf_drivers_license. Si se omite, se usa document_number.

refugee_file_number
string

Número de expediente de refugiado emitido por el Department of Home Affairs de Sudáfrica. Obligatorio para zaf_refugee.

bank_name
string

Nombre del banco donde está la cuenta. Obligatorio para zaf_bank_account_holder.

bank_account_number
string

Número de cuenta bancaria. Obligatorio para zaf_bank_account_holder; aceptado por zaf_fraud_prevention.

account_type
string

Tipo de cuenta bancaria para zaf_bank_account_holder: current, savings, transmission, subscriptionShare o notKnown, sin distinguir entre mayúsculas y minúsculas. Cualquier otro valor devuelve 400. Omítelo cuando no conozcas el tipo: en ese caso, la comprobación cruzada del tipo de cuenta se indica como no confirmada.

phone_number
string

Número de móvil de contacto, para los servicios que verifican la posibilidad de contacto (zaf_bank_account_holder, zaf_fraud_prevention, zaf_refugee).

right_thumb
string

Huella dactilar del pulgar derecho codificada en base64 para zaf_dha_fingerprint_match, junto con left_thumb o por sí sola.

left_thumb
string

Huella dactilar del pulgar izquierdo codificada en base64 para zaf_dha_fingerprint_match, junto con right_thumb o por sí sola.

score_level
integer

Nivel mínimo de puntuación biométrica para zaf_criminal_face_screening. El valor predeterminado es 3.

max_matches
integer

Número máximo de coincidencias candidatas que devuelve zaf_criminal_face_screening. El valor predeterminado es 1.

vehicle_register_number
string

Número de registro del vehículo. Obligatorio, junto con vehicle_licence_plate y vin, para zaf_vehicle_ownership.

vehicle_licence_plate
string

Número de matrícula (placa) del vehículo. Obligatorio, junto con vehicle_register_number y vin, para zaf_vehicle_ownership.

vin
string

Número de identificación del vehículo (VIN o número de chasis). Obligatorio, junto con vehicle_register_number y vehicle_licence_plate, para zaf_vehicle_ownership.

ssn
string

Número de la Seguridad Social (EE. UU.).

phone
string

Número de teléfono para los servicios de verificación de teléfono.

landline
string

Número de teléfono fijo para los servicios de verificación de teléfono.

email
string<email>

Dirección de correo electrónico para los servicios de verificación de identidad.

country_of_residence
string

País de residencia en formato ISO 3166-1 alfa-2. Lo usan los servicios globales de enriquecimiento de identidad (p. ej. glb_identity_enrichment) para acotar la consulta.

Ejemplo:

"US"

partial_match_action
enum<string>
predeterminado:NO_ACTION

Qué efecto tiene un partial_match en database_validation.status. Por defecto, NO_ACTION (el estado sigue siendo Approved, con una advertencia).

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

Qué efecto tiene un no_match en database_validation.status. Por defecto, DECLINE.

Opciones disponibles:
DECLINE,
NO_ACTION
save_api_request
boolean
predeterminado:true

Guarda la validación como una sesión (visible en la consola, en el endpoint de decisión y en el webhook status.updated). También cambia la forma de validations en la respuesta: objetos por servicio cuando es true (valor predeterminado) y un mapa de campos combinado cuando es false.

vendor_data
string

Tu identificador del usuario validado; se devuelve en la respuesta y se almacena con la sesión.

metadata
object | null

JSON libre que se guarda con la solicitud y se devuelve en la respuesta.

Respuesta

Validación completada: al menos uno de los servicios seleccionados devolvió un resultado utilizable. Consulta database_validation.match_type para ver el resultado agregado, validations para ver las comparaciones de campos por servicio y los outcome_code, y errors (cuando está presente) para ver los servicios que fallaron.

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.

database_validation
object
vendor_data
string | null

Devuelve el vendor_data que enviaste.

metadata
object | null

Devuelve el metadata que enviaste.

created_at
string<date-time>
Última modificación el 1 de noviembre de 2026