# Validación completa de INE (V2) Fuente: /ine-validation/complete-validation-v2/ Hace las mismas validaciones que la [Validación completa de INE (V1)](/ine-validation/complete-validation/) —OCR de frente y reverso, comparación facial, Lista Nominal y RENAPO— pero corre sobre un proveedor de validación más reciente. A diferencia de la V1, **no necesitas indicar el modelo de la credencial**: se detecta automáticamente. **Método:** POST #### **Endpoint** ``` https://api.verificamex.com/identity/v2/validations/basic ``` **Sin parámetro \`model\`** El modelo de la credencial (D, E, C) se detecta automáticamente — no lo declares en el cuerpo de la solicitud. **Validación de QR nativa** A diferencia de la V1, `qr_validation` siempre tiene efecto aquí. Ver [Validación de QR](/ine-validation/qr-validation/). **Certificado con tu marca** Con `custom_branding` el certificado PDF sale con tus colores y tu logo. Ver [Personalización del certificado](/ine-validation/custom-branding/). > **Nota** > > Recuerda que debes tener un token válido para realizar la solicitud. > Puedes obtener un token siguiendo los pasos descritos en la sección [Generar tokens](/authentication/generate-tokens/). ### **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 solicitud. | | Authorization | `Bearer {tu_token}` | Token generado para autenticar al usuario. | > **Consejo** > > Las imágenes deben ser codificadas en **formato base64** para poder ser enviadas en el cuerpo de la solicitud. ### **Cuerpo de la Solicitud** El cuerpo de la solicitud debe contener los siguientes parámetros: | Parámetro | Tipo | Descripción | | - | - | - | | `ine_back` | `String` | Imágen de la parte reversa del INE codificada en base64. | | `ine_front` | `String` | Imágen de la parte frontal del INE codificada en base64. | | selfie | `String` | Imágen de la selfie del usuario codificada en base64. | | `qr_validation` | `Boolean` | Opcional, por defecto `false`. Si es `true`, se leen y califican los códigos QR del reverso — tiene un costo adicional de 10 tokens. Ver [Validación de QR](/ine-validation/qr-validation/). | | `validacion_qr` | `Boolean` | Alias retrocompatible de `qr_validation`. Si mandas los dos, gana `qr_validation`. | | `custom_branding` | `Object` | Opcional. Personaliza el certificado PDF de la validación con tus colores (`primary_color`, `secondary_color`) y tu logo (`logo`). No tiene costo adicional. Ver [Personalización del certificado](/ine-validation/custom-branding/). | > **No envíes \`model\`** > > Este endpoint no lo pide y lo ignora si lo mandas de todos modos — el proveedor determina el modelo de > la credencial por sí solo. #### **Ejemplo de cuerpo de la solicitud** ```json { "ine_back": "data:image/png;base64,iVBORw0KGgoAAAANS....", "ine_front": "data:image/png;base64,iVBORw0KGgoAAAANS....", "selfie": "data:image/png;base64,iVBORw0KGgoAAAANS....", "qr_validation": false } ``` #### **Ejemplo con certificado personalizado** ```json { "ine_back": "data:image/png;base64,iVBORw0KGgoAAAANS....", "ine_front": "data:image/png;base64,iVBORw0KGgoAAAANS....", "selfie": "data:image/png;base64,iVBORw0KGgoAAAANS....", "custom_branding": { "primary_color": "#F54927", "secondary_color": "#8C2511", "logo": "https://cdn.mi-empresa.com/logo.png" } } ``` ### Respuesta del Endpoint > **Precaución** > > La lectura OCR depende de la **calidad de la imagen**, por lo que es recomendable que la imagen sea de buena calidad para obtener mejores resultados. > **Casi el mismo formato de respuesta que la V1** > > La respuesta tiene la misma forma que la de [Validación completa de INE (V1)](/ine-validation/complete-validation/) > — mismos campos en `dataOcr` y `documentInformation` — con **una diferencia: `reporte`** (ver abajo). > Consulta la página de la V1 para ver el ejemplo completo campo por campo. #### **Certificado de Verificación (`reporte`)** En la V2, `data.reporte` es una **URL firmada** para descargar el Certificado de Verificación en PDF, no el PDF en base64 como en la V1. Así la respuesta pesa mucho menos. | Campo | Tipo | Descripción | | - | - | - | | reporte | `String` | URL firmada del certificado en PDF, con **1 hora de vigencia**. Cadena vacía (`""`) si el certificado no se pudo obtener. | > **La URL caduca en 1 hora** > > Descarga el PDF en cuanto recibas la respuesta y guárdalo de tu lado. Pasada la hora, el enlace deja de > funcionar, y [Mostrar](/ine-validation/show-complete-validation/) y > [Listar](/ine-validation/complete-validation-list/) no incluyen `reporte`, así que no puedes volver a > obtenerlo por la API. Si vienes de la V1 y decodificabas `reporte` como base64, ahora debes descargarlo > con un `GET` a la URL. **status 200** ```json { "data": { "object": "ine_validations", "status": true, "message": null, "dataOcr": { "type": "X", "subtype": "X", "issue_country": "XXX", "doc_number": "999999999", "check_sum": "9", "first_optional": "0000000000000", "date_birth": "990101", "birth_check": "9", "sex": "X", "expiration_date": "991231", "nacionality": "XXX", "second_optional": "<00<<00000<", "check_digit": "9", "last_name": "APELLIDOX", "last_name2": "APELLIDOY", "spacing": "", "first_name": "NOMBREX", "first_name2": "" }, "documentInformation": { "documentData": [ ], "documentVerifications": [ ] }, "reporte": "https://storage.googleapis.com/...report.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Expires=3600&..." }, "meta": { "include": [], "custom": [] } } ``` **status 422** Este error ocurre si falta algún parámetro o si el parámetro no es una cadena de caracteres. ```json ``` ### **Diferencias con la V1** | | V1 (`/v1/validations/basic`) | V2 (`/v2/validations/basic`) | | - | - | - | | Parámetro `model` | Requerido | No existe — se detecta automáticamente | | Validación de QR (`qr_validation`) | Aceptado, pero sin efecto garantizado | Siempre tiene efecto | | Certificado en la respuesta (`reporte`) | PDF en base64 | URL firmada con 1 hora de vigencia | | Certificado personalizado (`custom_branding`) | No disponible | [Disponible](/ine-validation/custom-branding/) | | Costo en tokens | Igual (16 sin selfie / 20 con selfie, +10 si pides QR) | Igual (16 sin selfie / 20 con selfie, +10 si pides QR) | | Listar / consultar detalle | [Mismos endpoints](/ine-validation/complete-validation-list/) para ambas versiones | [Mismos endpoints](/ine-validation/complete-validation-list/) para ambas versiones | | Versión asíncrona | [Disponible](/ine-validation/complete-validation-async/) | No disponible todavía | > **Cómo saber con cuál versión se creó una validación** > > Hoy la respuesta de [Listar](/ine-validation/complete-validation-list/) y > [Mostrar](/ine-validation/show-complete-validation/) no incluye un campo que distinga V1 de V2 — ambas > comparten el mismo registro. Si tu integración necesita diferenciarlas después de crearlas, coméntanoslo.