Escanea tu documento una vez. Comparte solo:

O lo que sea relevante, pero no todo tu documento de identidad.

Qué puedes esperar

Una solicitud clara. Una comprobación guiada. Tu aprobación.

Claro

Comprueba quién solicita información y qué necesita exactamente.

Directo

La verificación se ejecuta directamente en tu dispositivo, sin una cola habitual de revisión manual.

Reutilizable

Guarda una verificación completada en tu dispositivo y reutilízala cuando siga siendo válida y sea aceptada.

Privado

Aprueba solo la información solicitada.

Teléfono sobre un pasaporte para la verificación de identidad por NFC

Cómo funciona

Empieza desde un enlace de Verihop o código QR. Verás quién solicita datos y cuáles necesita antes de compartir nada.

1

Abre la solicitud

Verihop muestra el servicio solicitante y los datos exactos que necesita.

2

Verifícate en el teléfono

Sigue las comprobaciones guiadas de documento de identidad y titular en vivo disponibles para la solicitud.

3

Aprueba y continúa

Aprueba los datos solicitados y continúa donde lo dejaste.

PROBAR DEMO Mira una verificación de edad de principio a fin. Completa el flujo en tu teléfono y mira exactamente qué recibe la demo.

Una mejor entrega

Verificación de identidad sin compartir de más.

Comparte el resultado aprobado sin convertir otra subida del documento completo en la opción predeterminada.

Flujo típico de subida Con Verihop
Sube un documentoEl servicio puede pedir una imagen completa del documento. Comparte los datos solicitadosEl servicio recibe los datos verificados que apruebas.
Repite la verificaciónOtro servicio puede exigir otra comprobación del documento y del titular. Reutiliza cuando se acepteAprueba una verificación guardada cuando siga siendo válida y el servicio la acepte.
Otra copia que protegerLos documentos de identidad subidos crean otro archivo sensible que proteger. Conserva contigo la verificación reutilizableVerihop no crea una biblioteca central de archivos de pasaporte o selfies.

¿Quieres más información sobre cómo se trata la información de identidad? Lee el aviso de privacidad.

Creado para la vida real

Demuestra lo necesario. Sigue con lo que estabas haciendo.

Edad

Demuestra que tienes la edad necesaria.

Confirma tu edad sin compartir una copia completa del pasaporte.

Alquileres y servicios

Verifica quién eres.

Comparte los datos verificados solicitados sin volver a escribir o subirlo todo.

Account onboarding

Verifica y continúa.

Completa la comprobación y vuelve directamente al servicio.

Acceso a la cuenta

Demuestra que realmente eres tú.

Verifícate para acciones sensibles, asistencia o recuperación de cuenta.

¿Estás creando una de estas experiencias? Descubre cómo funciona Verihop para empresas, integraciones y recorridos de cliente. Ver PARA EMPRESAS →

Persona con un teléfono durante una comprobación guiada de selfie

Cuando quieras

Descubre cómo funciona una solicitud de Verihop.

Prueba la demo de control de edad, revisa los datos exactos solicitados y completa el flujo en el teléfono.

API de identidad personal

Una Sessions API. Todas las rutas de dispositivo resueltas.

Create a verification session from your backend, send the returned launch URL, and securely fetch the user-approved result. Verihop se encarga de the verification, consent, and device routing.

¿Buscas la visión de producto y negocio? Ver PARA EMPRESAS →

PASOS DE INTEGRACIÓN

Cuatro pasos desde la solicitud hasta el resultado verificado.

Ver pasos de integración

1. Crea la sesión

POST /v1/sessions

2. Envía la URL devuelta

Usa la launch_url o qr_url devuelta.

3. Recibe el callback

Captura session_id, result_token y los datos firmados opcionales del callback cuando corresponda.

4. Obtén el resultado

GET /v1/sessions/{id}/result

Las claves API permanecen en tu backend. Los datos personales verificados no se incluyen en las URL de callback.

Flujos y soporte

Una sesión controlada por tu backend inicia el flujo; la información de identidad aprobada se obtiene de servidor a servidor.

Ver flujo de integración
Ver flujo de usuario

Prueba en el Customer Portal

Ejecuta un Session Ejemplo antes de desarrollar la integración de producción.

Usa una cuenta de prueba para elegir los campos solicitados, configurar un callback, ejecutar el Session Ejemplo e inspeccionar la solicitud, respuesta, estado de sesión y resultado estructurado reales.

Abrir área de Developers

Skill de integración para agentes

Dale a tu agente de programación la guía de Verihop.

Una fuente segura para la configuración de pruebas, sesiones del servidor, callbacks, resultados, comportamiento de apertura y patrones concisos para Node, Python, Swift, Kotlin, Java, Go, PHP, Ruby y cURL.

Descargar SKILL.md

Colección de Postman

Importa la colección API de Verihop.

Configura tu API key y callback URL, crea una sesión y pega el result token del callback para obtener el resultado verificado.

Descargar colección de Postman

Bases

Path: https://api.verihop.com

Autentica las requests de partner solo desde tu backend:

Authorization: Bearer <api_key>

Crea primero una cuenta de prueba para obtener una API key. Las respuestas de prueba están redactadas por diseño y la misma cuenta puede activarse después para producción.

Crear cuenta de prueba

POST /v1/sessions

Crea una sesión de verificación y recibe una launch URL más un token de sesión firmado.

Duración y caducidad de la sesión
  • Una sesión es válida durante 15 minutos desde su creación. Es una única ventana total para abrir el enlace, revisar el documento, revisar y aprobar; no se reinicia después de MRZ, NFC o selfie.
  • Cuando la verificación móvil necesita un desafío de seguridad, es válido durante un máximo de 10 minutos, pero nunca más allá de la caducidad de la sesión. iOS y Android usan la misma caducidad emitida por el backend y un margen de seguridad de 15 segundos.
  • Cuando pase expires_at, crea una sesión nueva. No reutilices una URL de lanzamiento, código QR ni token de callback caducados.

Cabeceras

Authorization: Bearer <api_key>
Content-Type: application/json
Idempotency-Key: <uuid>  // recommended

Cuerpo

{
  "app": "RideNow",
  "header": "Age check",
  "fields": ["legalName", "over18", "documentNumber"],
  "callback": "ridenow://verified"
}
Guía de elementos del body
  • app: nombre visible de la app partner dentro de Verihop (máx. 80 caracteres).
  • header: título corto de verificación mostrado al usuario (máx. 120 caracteres).
  • fields: tokens de campos solicitados; si falta o está vacío, Verihop usa legalName y over18.
  • callback: URL base de retorno enviada en POST /v1/sessions. Verihop la abre al terminar y añade session_id, result_token (success path) y opcionalmente callback_jwt; requerida y validada contra tu allowlist de producción.
Guía de headers
  • Authorization: API key partner en formato bearer.
  • Content-Type: usa application/json para parsear el request body.
  • Idempotency-Key: clave de retry para dedupe al crear sesiones; envía UUID v4/v7 y reutilízala solo para retries de la misma payload.
Respuesta 201 correcta
{
  "session_id": "sess_123",
  "expires_at": 1730000000,
  "launch_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "app_clip_url": "https://appclip.apple.com/id?p=KycBox.VerifyBox.Clip&session_id=sess_123&token=h_abc123",
  "qr_url": "https://www.verihop.com/verify.html?session_id=sess_123&token=h_abc123",
  "status_url": "https://api.verihop.com/v1/sessions/sess_123"
}
Guía de elementos de respuesta
  • session_id: identificador único para tracking y obtención del resultado.
  • expires_at: expiración de sesión (Unix epoch seconds).
  • launch_url: URL principal para web, Android, QR, emails, SMS y handoff general.
  • app_clip_url: URL nativa directa del App Clip para apps partner de iOS. Ábrela exactamente como se devuelve; no la reconstruyas.
  • qr_url: URL segura para QR; actualmente equivalente a launch_url.
  • status_url: endpoint de estado de sesión para polling server-side.
Errores comunes
  • 401 missing_bearer_token, 401 invalid_api_key
  • 403 customer_inactive
  • 400 missing_callback_url, invalid_callback_url, callback_host_not_allowed
  • 400 field_not_allowed, invalid_field_token, request_too_large
  • 409 idempotency_key_conflict, idempotency_key_in_progress
  • 429 rate_limit_exceeded, daily_quota_exceeded

GET /v1/sessions/{id}

Endpoint de estado sin PII para orquestación desktop y monitorización.

Authorization: Bearer <api_key>
Respuesta 200 correcta
{
  "session_id": "sess_123",
  "status": "issued",
  "issued_at": 1730000000,
  "expires_at": 1730000300,
  "last_status": null,
  "last_status_at": null,
  "opened_at": null,
  "result_available": false,
  "result_token_expires_at": null
}

Polling is read-only and never marks a session as opened. A completed test-key session also returns a short-lived result_token for the synthetic Postman flow. Live result tokens remain callback-only.

GET /.well-known/jwks.json

Endpoint público de signing keys para verificar callback_jwt en backends partner.

Respuesta 200 correcta
{
  "keys": [
    {
      "kty": "RSA",
      "kid": "kid_2025_01",
      "alg": "RS256",
      "use": "sig",
      "n": "...",
      "e": "AQAB"
    }
  ]
}

GET /v1/sessions/{id}/result

Obtén la result payload verificada server-to-server usando un result token de un solo uso.

A launch token starts with h_ and cannot be used here. X-Result-Token requires the short-lived res_ token from a live callback or completed test-key status response.

Authorization: Bearer <api_key>
X-Result-Token: <result_token>
Respuesta 200 correcta
{
  "session_id": "sess_123",
  "status": "success",
  "result": {
    "legalName": "Jane Doe",
    "over18": "yes"
  }
}
Errores comunes
  • 401 missing_bearer_token, invalid_api_key, missing_result_token
  • 403 customer_mismatch, invalid_result_token
  • 410 result_token_expired
  • 409 result_token_used
  • 404 result_not_available, session_not_found

Catálogo de campos

Request field tokens (fields)

legalName, dateOfBirth, over18, over21, passport, idCard, documentNumber, documentExpiry, documentCountry, documentNationality

Campos de resultado de la respuesta

El resultado contiene únicamente los campos compatibles solicitados y aprobados por el usuario. Los requisitos de tipo de documento como passport e idCard no incluyen automáticamente todos los atributos del documento.

Preguntas frecuentes

¿Puede el flujo empezar desde una web desktop con un QR?

Sí. Tu backend crea una sesión mediante POST /v1/sessions y muestra la qr_url devuelta dentro de un QR en la página de escritorio. El usuario escanea ese QR con el teléfono y Verihop abre la mejor experiencia disponible.

¿El QR debe abrir primero una web o Verihop directamente?

La mejor experiencia es el inicio directo: codifica la qr_url devuelta. Es el mismo traspaso HTTPS universal que launch_url y admite rutas de app, experiencia ligera y fallback web.

¿El deep link es igual para iOS y Android?

Usa launch_url en Android y para el handoff web general. Una app partner de iOS que quiera mostrar la tarjeta nativa del App Clip debe abrir la app_clip_url devuelta. La forma del callback no cambia: Verihop añade session_id, en caso de éxito result_token y opcionalmente callback_jwt.

¿Cómo inicio el App Clip de Verihop directamente desde mi app iOS?

Crea la sesión en tu backend y envía la app_clip_url devuelta a tu app iOS. Abre esa URL con SwiftUI Link o UIApplication.open en iOS 17 o posterior. No analices launch_url, no copies su token ni fijes en código el bundle ID del App Clip de Verihop. Si la app completa de Verihop está instalada, iOS la abre conservando la misma sesión.

¿Qué deben registrar las apps Android partner para callbacks?

Si usas un callback personalizado como ridenow://verified, la app Android partner debe declarar un intent filter para ese scheme y host. Si usas un callback https:// para flujos iniciados desde desktop o web, trátalo como un endpoint de backend salvo que tu app Android sea dueña de ese dominio con App Links verificados.

¿Qué callback debo usar para flujos iniciados desde desktop o web?

Usa un endpoint de callback https:// en tu backend. Cuando Verihop termina, tu servidor recibe session_id y result_token, y después obtiene GET /v1/sessions/{id}/result server-to-server.

¿Los clients partner deben verificar el jwt de POST /v1/sessions?

No. Ese token es para Verihop. Los partners deben tratarlo como transporte opaco y usar launch_url para iniciar Verihop.

¿Por qué el callback solo incluye session_id y result_token?

Los parámetros del callback son solo metadata de transporte. Los datos personales verificados no se envían intencionalmente en callback URLs. Tu backend debe intercambiar el result_token de un solo uso para obtener la payload result de forma segura. Si está habilitado, callback_jwt puede verificarse vía JWKS para autenticar el callback.

¿Los partners deben verificar callback_jwt, y dónde?

Sí, en el backend del partner cuando esté presente. Verifica firma y claims con Verihop JWKS en GET /.well-known/jwks.json. Valida issuer, audience y expiry, y asegúrate de que los claims JWT coincidan con los valores del callback.

¿Mi frontend puede llamar directamente a GET /v1/sessions/{id}/result?

No. Mantén las API keys en servidor y obtén resultados solo desde tu backend. El frontend/web client solo debe manejar UI y pasar estado a la sesión de backend.

¿Cómo gestionamos expiración y retries?

Crea una nueva sesión cuando una sesión expire o el usuario abandone el flujo. result_token dura poco y es de un solo uso; si se consume o expira, reinicia con un nuevo POST /v1/sessions.

¿Qué pasa si Verihop no está instalado en el teléfono?

Ofrece una página fallback detrás de tu flujo QR que explique cómo instalar o abrir Verihop y continuar. Después de instalar, crea una nueva sesión y muestra un QR nuevo; no reutilices sesiones caducadas.

¿Cómo funciona idempotency y cómo se limita el abuso?

POST /v1/sessions soporta Idempotency-Key para llamadas create-session seguras ante retries: la misma key con la misma payload reproduce la respuesta original, mientras que la misma key con una payload distinta devuelve 409 idempotency_key_conflict. El abuso se mitiga además con autenticación por API key, política de callback allowlist, validación de campos permitidos, rate limits/cuota por cliente, TTL corto de sesión y result_token de un solo uso.

Ejemplo

Abrir demo de verificación de edad

Empieza en modo de prueba

Crea una sesión y revisa el traspaso completo.

Use a redacted cuenta de prueba, keep credentials on your backend, and move to production only after callback and field controls are approved.

Verificación de identidad personal

Verifica a la persona correcta. Recopila solo lo que necesitas.

Añade comprobaciones fiables de identidad y elegibilidad a los recorridos de cliente y limita los datos sensibles que debe tratar tu empresa.

Los clientes se verifican en su teléfono y aprueban solo la información necesaria para tu decisión.

  • Campos estructurados verificados
  • Recorrido móvil guiado
  • Sin imágenes del documento en el resultado
  • Entrega segura del resultado
Verihop flow overview on device Verihop flow step for document and profile checks

Por qué importa

Las comprobaciones de identidad no deberían crear más fricción ni datos de los necesarios para la decisión.

Los clientes abandonan el alta cuando la verificación tarda demasiado o pide demasiado. Las empresas siguen siendo responsables de la información sensible que recopilan y protegen.

>50%

de las personas encuestadas en los Países Bajos dijo que nunca compartiría online una copia de su pasaporte, documento de identidad o permiso de conducir.

CBS, 2025

Verificar no tiene por qué significar otra copia del documento de identidad.

Verihop permite a tu producto solicitar la información aprobada y verificada necesaria para una decisión sin convertir otro archivo de pasaporte o selfie en el resultado.

Datos de un documento de identidad que fluyen a través de un teléfono hacia campos aprobados

Un mejor flujo de verificación

Comprobaciones de identidad sólidas sin la fricción ni la huella de datos habituales.

Verifica a la persona, recibe solo lo que necesita tu decisión y evita convertir las copias de documentos y la revisión manual en la opción predeterminada.

Flujo típico de subida Con Verihop
Verifica desde una imagenEl cliente envía fotos de un documento de identidad para su verificación. Verifica el chip + titularMRZ + NFC + biometría combinan datos del documento, verificación criptográfica del chip y una comprobación en vivo del titular.
Espera el resultadoLas comprobaciones automatizadas pueden requerir controles adicionales o revisión manual antes de que haya una decisión. Obtén un resultado al instanteUna verificación correcta produce el resultado de inmediato, sin una cola habitual de revisión manual.
Recopila el documentoLos archivos de pasaporte, documento de identidad o selfie pueden convertirse en datos sensibles que tu empresa debe recibir, almacenar y proteger. Recibe solo lo que necesitasTu sistema recibe la información verificada aprobada, no la imagen del pasaporte ni el selfie del cliente.
Vuelve a verificarLos clientes que regresan pueden tener que repetir la comprobación del documento y del titular para otra solicitud. Reutiliza cuando se acepteLos clientes pueden aprobar una verificación guardada en el dispositivo cuando siga siendo válida y tu política la acepte.
3 capasMRZ + NFC + biometría
< 60 secVerificación compatible típica*
Al instanteSin revisión manual habitual
0 archivos de ID sin procesarPasaporte/selfie excluidos del resultado
ReutilizableCuando sea válida y aceptada

*Flujo de verificación compatible típico. El tiempo puede variar según el dispositivo, el documento y la conexión.

Dónde encaja Verihop

Empieza por lo que realmente necesitas saber.

A veces necesitas la identidad de alguien. Otras veces solo necesitas una respuesta fiable.

Edad y elegibilidad

¿Esta persona es mayor de 18 años?

Solicita un resultado de edad verificado sin recibir una copia completa del pasaporte.

Alta de cuentas y servicios

¿Quién se está registrando?

Solicita los datos de identidad verificados necesarios para tu decisión de alta.

Alquileres y acceso de confianza

¿Es la persona correcta?

Verifica la identidad antes de ofrecer un vehículo, inmueble, equipo o servicio controlado.

Recuperación de cuenta y soporte

¿Estoy hablando con el titular de la cuenta?

Solicita una nueva verificación para acciones sensibles de soporte o recuperación.

Verihop verifica la información. Tu empresa decide qué significa para el recorrido del cliente.

Cómo funciona

Solicita. Verifica. Continúa.

1

Solicita lo que necesitas

Tu producto inicia una verificación de Verihop para la información de identidad aprobada que necesita.

2

Envía el enlace de Verihop

El cliente abre el enlace o código QR y completa la verificación en su teléfono.

3

Recibe el resultado aprobado

Cuando el cliente lo aprueba, la información verificada se devuelve de forma segura a tu sistema.

Verihop gestiona la verificación. Tu empresa conserva la decisión.

Verihop gestiona la lectura de documentos compatibles, las comprobaciones del titular, el consentimiento, el enrutamiento entre dispositivos y la entrega segura de resultados. Tu producto aplica después la regla de negocio.

¿Estás desarrollando la integración? Ver PARA DEVS →

Customer Portal

Prueba, pasa a producción y opera desde un único Portal.

Empieza en modo de prueba, pasa por la aprobación de producción y gestiona el servicio en vivo desde el mismo espacio empresarial.

Prueba

Ejecuta sesiones redactadas e inspecciona la entrega completa antes de producción.

Pasa a producción

Envía tu configuración de producción y los campos aprobados para revisión.

Opera

Supervisa el uso, la facturación, los callbacks y la actividad de las sesiones.

Controla

Gestiona el acceso del equipo, MFA, dispositivos de confianza y evidencias de auditoría.

Los developers pueden probar solicitudes, callbacks y resultados desde el área de Developers. Ver PARA DEVS →

Bóveda segura que representa la privacidad por diseño

Empieza con un caso de uso

¿Qué necesita saber realmente tu producto?

Trae el recorrido del cliente, la decisión que necesitas tomar y la información que recopilas ahora. Definiremos la solicitud de verificación mínima útil y una ruta clara para probarla.