Saltar al contenido principal
El SDK de JavaScript de Didit te permite integrar la verificación en tu aplicación web mediante código, con control total sobre la experiencia del usuario.

Funciones

  • API sencilla: patrón singleton con métodos fáciles de usar
  • Integración flexible: usa directamente la URL de UniLink o crea sesiones desde el backend
  • Adaptable: funciona en navegadores de escritorio y móviles
  • Personalizable: opciones de configuración para el estilo y el comportamiento
  • Varios formatos: builds ESM, CommonJS y UMD
  • Compatibilidad con TypeScript: incluye definiciones de tipos completas
  • Modos modal e integrado: elige entre una superposición modal o la inserción integrada en la página
  • Callbacks de eventos: eventos en tiempo real sobre el progreso de la verificación (iniciada, paso completado, finalizada)
  • Gestión del estado: observa el estado del SDK para crear una interfaz personalizada

Instalación

NPM/Yarn

CDN (UMD)

La última versión publicada en npm es 0.5.1. 0.5.0 añadió DiditSdk.shared.submitEvent() (consulta Enviar eventos), y 0.5.1 permite que el flujo alojado solicite el ID del usuario a una wallet de identidad digital dentro del SDK y mantiene un lanzamiento fallido en el estado error con su errorMessage. 0.4.0 añadió las opciones de cámara que ya ofrecen los SDK nativos, incluida defaultLivenessCamera, que abre la captura facial con la cámara trasera (consulta Opciones de cámara).

Comprobar la versión instalada

Tu gestor de paquetes sigue siendo la fuente de referencia para la versión instalada:
También puedes consultar la exportación en tiempo de ejecución:
A partir de 0.3.1, esta exportación se genera a partir de la versión del paquete en todos los formatos de JavaScript (ESM, CommonJS, UMD, UMD minificado) y en la declaración de TypeScript, por lo que siempre coincide con la versión instalada. 0.3.0 y las versiones anteriores indican 0.2.1 en esta exportación, sea cual sea la versión instalada. En esas versiones, usa npm list o tu archivo de bloqueo (lockfile).

JavaScript puro

Módulos ES / TypeScript

Etiqueta de script (UMD)


Ejemplos por framework

Ejemplos del SDK web

React, Angular, Svelte, Next.js, Nuxt, Vue y más, con ejemplos y documentación para cada framework.

Métodos de integración

Hay dos formas de integrar el SDK: Usa directamente la URL de UniLink de tu flujo de verificación (workflow) desde Didit Console. No necesitas backend.
Obtén tu URL de UniLink en la Didit Console → tu flujo → Copy Link. El session_id generado se te enviará mediante un evento. Consulta aquí la referencia de eventos

Método 2: sesión desde el backend (recomendado para producción)

Tu backend crea una sesión mediante la API de Didit y devuelve la URL de la página de verificación alojada. Así controlas vendor_data, el callback por sesión y metadata, y puedes crear sesiones antes de que el usuario llegue al frontend. Más información en la referencia de la API Create Session. Backend (Node.js / Express)
Frontend
El campo de la respuesta de creación de sesión se llama url (consulta el esquema OpenAPI de Create Session). Pásalo directamente a startVerification({ url }).

Configuración

Consulta más abajo las definiciones de tipos de TypeScript para ver la interfaz DiditSdkConfiguration completa.

Opciones de cámara

Las opciones de cámara requieren @didit-protocol/sdk-web 0.4.0 o posterior.
El SDK web ofrece las mismas cuatro opciones de cámara que los SDK nativos. De forma predeterminada, la captura del documento abre la cámara trasera y la captura facial (prueba de vida) abre la cámara frontal (de selfie), y ambos pasos incluyen un selector de cámara dentro de la captura en los dispositivos con más de una cámara. Define defaultLivenessCamera: 'back' para abrir la captura facial con la cámara trasera, por ejemplo en un quiosco o cuando un operador sostiene el dispositivo y lo apunta hacia la persona que se está verificando.
  • Los valores de lente aceptados son 'front' y 'back'. Cualquier otro valor se ignora, al igual que un indicador del selector que no sea booleano.
  • Un dispositivo que no tiene la cámara solicitada mantiene la que tiene: un portátil al que se le pide 'back' sigue usando su webcam. El selector se oculta en los dispositivos con una sola cámara, independientemente de lo que indiquen los indicadores.
  • Las opciones de la prueba de vida se aplican a la comprobación de prueba de vida pasiva. La prueba de vida activa no se ve afectada.
  • El SDK reenvía las opciones a la página de verificación como parámetros de consulta de la URL de verificación: document_camera, liveness_camera, document_camera_switch y liveness_camera_switch. Si abres la URL de verificación directamente en lugar de hacerlo a través del SDK, defínelos tú mismo: añade ?liveness_camera=back a una URL sin cadena de consulta, &liveness_camera=back a una que ya tiene parámetros, o defínelos con la API URL para cubrir ambos casos:

Enviar eventos

DiditSdk.shared.submitEvent() pone en cola eventos del usuario final (registro, inicio de sesión, inicio de sesión fallido, cierre de sesión, restablecimiento de contraseña, MFA, cambio de dispositivo) para la monitorización de eventos de Didit. Tu backend genera un token de monitorización para la persona, y el SDK envía los eventos en lotes junto con la huella digital del dispositivo. Nunca envíes una clave de API al navegador.
Consulta Envío de eventos desde el SDK para conocer el token, los campos del evento y el comportamiento de entrega.

Tamaño y desplazamiento del modal

El comportamiento de tamaño que se describe a continuación requiere 0.3.1 o posterior. Las versiones 0.3.0 y anteriores pueden recortar el flujo de verificación en ventanas de escritorio de poca altura y en orientación horizontal.
El modo modal usa un ancho máximo de 500px y una altura máxima de 700px. En ventanas de escritorio de poca altura y en orientación horizontal, el iframe se ajusta al 90% del área visible de la ventana. El flujo de verificación se desplaza dentro del iframe, de modo que todos los pasos siguen siendo accesibles mientras la página detrás del modal permanece bloqueada. El SDK usa dvh en los navegadores que admiten unidades dinámicas de viewport y recurre a vh en navegadores compatibles más antiguos. Con anchos de 540px o menos, el modal ocupa toda el área visible de la ventana. El botón de cierre y la confirmación de salida permanecen dentro del modal.

Flujo de verificación rediseñado

Todo lo que se describe en esta sección se aplica a partir de la versión 0.5.0, que aún no se ha publicado. Hasta que actualices, el modal mantiene el tamaño descrito arriba.
A partir de la versión 0.5.0, el modal ajusta su tamaño al flujo de verificación rediseñado en cuanto la página informa de su diseño con un mensaje didit:layout:
  • Tamaño inicial, a partir de la versión 0.5.0: hasta que la página informa de su diseño, y en las páginas que nunca lo hacen, el modal mantiene el tamaño máximo actual de 500px por 700px. Sigue adaptándose a ventanas de poca altura y se muestra a pantalla completa con 540px o menos.
  • Botón de cierre, a partir de la versión 0.5.0: un círculo de 44px sobre la barra superior de la página. Sigue el tema claro u oscuro de la página y se desplaza a la izquierda en los idiomas de derecha a izquierda.
  • Modo incrustado, a partir de la versión 0.5.0: sigue ocupando su elemento contenedor, como antes (consulta Modo incrustado).
  • URL de verificación, a partir de la versión 0.5.0: el SDK añade sdk_presentation (modal o embedded) y, en un modal, sdk_close_button (true o false, según showCloseButton), para que la página sepa cómo se muestra.
  • Eventos, a partir de la versión 0.5.0: el SDK gestiona didit:layout por sí mismo y no lo pasa a onEvent.
No hay nada que configurar y todas las opciones existentes siguen funcionando.

Modo incrustado

El modo incrustado no usa el límite de 500px por 700px del modal. El SDK ocupa la caja de contenido del elemento contenedor, así que asigna a ese elemento una altura explícita o definida de otro modo:
Si el contenedor no tiene una altura definida, el iframe incrustado tampoco tiene una altura utilizable. Cambia el tamaño del contenedor cuando cambie tu diseño; el SDK sigue ocupándolo automáticamente.

Resultados de la verificación

El SDK devuelve tres tipos de resultados:

Completed

El flujo de verificación terminó (aprobado, pendiente o rechazado).
El tipo de TypeScript declara 'Approved' | 'Pending' | 'Declined', pero el valor se transmite tal cual desde el estado de la sesión del flujo alojado, así que también puedes recibir otros estados, como In Review. Pending es el valor por defecto del SDK cuando el flujo no informó ningún estado. Trata status como una indicación y usa el webhook como fuente de la decisión definitiva.

Cancelled

El usuario cerró el modal de verificación. session se incluye cuando ya se conocía un sessionId (puede ser undefined si el usuario canceló antes de que el iframe informara uno).

Failed

Se produjo un error durante la verificación.

Gestión del estado

Puedes observar el estado del SDK para crear una interfaz personalizada:

Referencia de la API

DiditSdk.shared

La instancia singleton del SDK.

Métodos

Propiedades

Callbacks


Eventos detallados

Sigue el progreso de la verificación con el callback onEvent:

Referencia de eventos

Pérdida de conexión

Si se cae la conexión del usuario, la página de verificación muestra una pantalla de “Sin conexión a internet” en lugar de que un paso quede cargando. Sigue comprobando la conexión en segundo plano y cierra la pantalla por sí sola en cuanto vuelve a poder conectarse con Didit, y el usuario continúa desde el paso en el que estaba. Dentro del modal del SDK o de un iframe, la pantalla también ofrece Salir de la verificación: la página envía entonces didit:error con error: "network_error", seguido de didit:cancelled, y el SDK cierra el modal y llama a onComplete con type: "cancelled". A partir de la versión 0.5.0, el mensaje didit:layout de la página ajusta el tamaño del modal y no llega a onEvent. Si en cambio incrustas la página con tu propio iframe, consulta Ajustar el tamaño del iframe a partir de didit:layout.

Valores de paso

El campo step puede tomar uno de estos valores:
  • document_selection - Selección del tipo de documento
  • document_front - Anverso del documento
  • document_back - Reverso del documento
  • face - Verificación facial o prueba de vida
  • email - Verificación de correo electrónico
  • phone - Verificación de teléfono
  • poa - Prueba de domicilio
  • questionnaire - Paso de cuestionario

Valores de canal

El campo channel de code_sent puede ser:
  • email - Código enviado por correo electrónico
  • sms - Código enviado por SMS
  • whatsapp - Código enviado por WhatsApp

Longitud del código

El campo codeSize de code_sent indica la longitud del código OTP (por ejemplo, 4 o 6 dígitos).

Tipos de TypeScript

Última modificación el 1 de noviembre de 2026