Crear sesión de verificación con pasaporte
El endpoint te permite crear una sesión de verificación de identidad que solo acepta pasaporte. Funciona igual que una sesión de verificación V2 de INE: recibes una URL a la que envías a tu usuario y, cuando termina, obtienes el resultado por webhook o consultando la sesión.
Descripción
Sección titulada «Descripción»El usuario captura la página de datos de su pasaporte, se toma una selfie y realiza una prueba de vida. Con eso se verifica:
- La autenticidad del documento: lectura de la MRZ (zona de lectura mecánica) y del texto visible (OCR), dígitos de control de la MRZ, vigencia y coincidencia entre los datos de la MRZ y los del OCR.
- La comparación facial entre la selfie y la fotografía impresa en el pasaporte.
- La prueba de vida, para asegurar que hay una persona real frente a la cámara.
Flujo de la sesión
Sección titulada «Flujo de la sesión»- Creas la sesión con este endpoint y recibes el campo
form_url. - Envías a tu usuario a
form_url(redirección, enlace o código QR). - El usuario captura su pasaporte, se toma la selfie y completa la prueba de vida.
- Al terminar, el usuario es enviado a tu
redirect_urly la sesión pasa aVERIFYINGmientras se analiza. - La sesión termina en
FINISHEDconresult100 si el pasaporte y la biometría se verificaron, o enFAILEDconresult0 y el motivo enerrors. Recibes el resultado en tuwebhooko lo consultas en Consultar resultado de una sesión de pasaporte.
Método: POST
Endpoint
Sección titulada «Endpoint»https://api.verificamex.com/identity/v2/identity/passport-sessionsEncabezados de la Solicitud
Sección titulada «Encabezados de la Solicitud»Para realizar la solicitud es necesario incluir los siguientes encabezados:
| Encabezado | Valor | Descripción |
|---|---|---|
| Accept | application/json | Tipo de contenido de la respuesta. |
| Content-Type | application/json | Tipo de contenido de la solicitud. |
| Authorization | Bearer {tu_token} | Token generado para autenticar al usuario. |
Cuerpo de la Solicitud
Sección titulada «Cuerpo de la Solicitud»El cuerpo de la solicitud debe contener los siguientes parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
| redirect_url | String | URL a la que se redirigirá el usuario una vez finalizada la verificación. |
| webhook | String Opcional | URL a la que se enviará una petición POST con el resultado de la validación. Ver Webhooks de sesiones de pasaporte. |
| document_number | String Opcional | Número de pasaporte que esperas que capture el usuario (máximo 20 caracteres). Se compara contra el número leído del documento. |
| only_mobile_devices | Boolean Opcional | Indica si la verificación solo se puede realizar en dispositivos móviles. Por defecto false. |
| with_webhook_binaries | Boolean Opcional | Indica si el webhook debe incluir los archivos de la verificación en Base64. Por defecto true. |
| optionals | Object Opcional | Objeto para guardar información relevante para ti que no es necesaria para la validación (por ejemplo, tu folio interno). Se te devuelve tal cual en la sesión y en el webhook. |
| logo | String Opcional | URL del logo que se mostrará en la pantalla de verificación. |
| customization | Object Opcional | Objeto para personalizar los colores de la interfaz. |
| customization.button_color | String Opcional | Color de los botones en formato hexadecimal. |
| customization.background_color | String Opcional | Color de fondo en formato hexadecimal. |
| customization.primary_color | String Opcional | Color primario en formato hexadecimal. |
| customization.secondary_color | String Opcional | Color secundario en formato hexadecimal. |
| customization.button_text_color | String Opcional | Color del texto de los botones en formato hexadecimal. |
Ejemplo de cuerpo de la solicitud
Sección titulada «Ejemplo de cuerpo de la solicitud»{ "redirect_url": "https://www.tusitio.com/gracias", "webhook": "https://www.tusitio.com/webhooks/verificamex", "document_number": "G00000001", "only_mobile_devices": false, "with_webhook_binaries": true, "optionals": { "folio": "CLI-1001" }, "logo": "https://www.tusitio.com/logo.png", "customization": { "button_color": "#F54927", "background_color": "#FFFFFF", "primary_color": "#27F55B", "secondary_color": "#82167E", "button_text_color": "#FFFFFF" }}curl -X POST https://api.verificamex.com/identity/v2/identity/passport-sessions \ -H "Authorization: Bearer {TU_TOKEN}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "redirect_url": "https://www.tusitio.com/gracias", "webhook": "https://www.tusitio.com/webhooks/verificamex", "document_number": "G00000001", "optionals": { "folio": "CLI-1001" } }'Respuesta del Endpoint
Sección titulada «Respuesta del Endpoint» { "data": { "object": "VerificationSession", "id": "9d805854-f8a1-4135-ad57-3629ca0fc679", "status": "OPEN", "result": null, "errors": null, "comments": null, "only_mobile_devices": false, "redirect_url": "https://www.tusitio.com/gracias", "webhook": "https://www.tusitio.com/webhooks/verificamex", "validations": [], "ine_reading": null, "optionals": { "folio": "CLI-1001" }, "form_url": "https://app.verificamex.com/verification/9d805854-f8a1-4135-ad57-3629ca0fc679", "created_at": "2026-10-03T08:27:13.000000Z", "updated_at": "2026-10-03T08:27:14.000000Z", "readable_created_at": "hace 5 segundos", "readable_updated_at": "hace 4 segundos" }, "meta": { "include": [ "ine", "renapo", "passport", "files" ], "custom": [] } } { "message": "The given data was invalid.", "errors": { "redirect_url": ["The redirect url field is required."] } } { "message": "Unauthorized" } { "message": "Las transacciones del usuario se han terminado" }El cuerpo de la respuesta contiene los siguientes parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
| data | Object | Objeto que contiene la información de la sesión de verificación. |
| data.object | String | Tipo de objeto, siempre "VerificationSession". |
| data.id | String | Identificador único de la sesión. Guárdalo para consultar el resultado. |
| data.status | String | Estado de la sesión. Al crearla siempre es "OPEN". |
| data.result | Integer | Resultado de la verificación: 100 aprobada, 0 rechazada, null mientras no termina. |
| data.errors | Array | Motivos de rechazo. null al crear la sesión. |
| data.comments | String | Comentarios internos del proceso. null al crear la sesión. |
| data.only_mobile_devices | Boolean | Indica si la sesión solo se puede realizar en dispositivos móviles. |
| data.redirect_url | String | URL a la que se redirigirá al usuario al terminar. |
| data.webhook | String | URL a la que se enviarán los cambios de estado de la sesión. |
| data.validations | Array | Siempre vacío en sesiones de pasaporte. |
| data.ine_reading | Object | Lectura completa del pasaporte. null hasta que se analiza el documento. |
| data.optionals | Object | Datos opcionales que enviaste al crear la sesión. |
| data.form_url | String | URL de la pantalla de verificación a la que debes enviar a tu usuario. |
| data.created_at | String | Fecha de creación en formato ISO-8601. |
| data.updated_at | String | Fecha de la última actualización en formato ISO-8601. |
| data.readable_created_at | String | Fecha de creación en formato legible. |
| data.readable_updated_at | String | Fecha de la última actualización en formato legible. |
| meta | Object | Información adicional de la respuesta. |
| meta.include | String[] | Relaciones que se pueden solicitar con el parámetro include. En sesiones de pasaporte la que te interesa es passport. |
| meta.custom | String[] | Relaciones extra solicitadas. |