# Validación completa de INE (V1) Fuente: /ine-validation/complete-validation/ El endpoint de validación completa de INE funciona **usando fotos de la parte frontal y trasera de una INE el sistema hace una lectura OCR de la información y considera multiples validaciones tanto locales como remotas en fuentes oficiales(Renapo y Lista nominal).** **Método:** POST #### **Endpoint** ``` https://api.verificamex.com/identity/v1/validations/basic ``` > **Existe una versión V2** > > La [Validación completa de INE (V2)](/ine-validation/complete-validation-v2/) hace exactamente lo mismo, pero > no te pide indicar el `model` (se detecta automáticamente) y soporta de forma nativa la > [validación de QR](/ine-validation/qr-validation/). Además, entrega el certificado (`reporte`) como URL > firmada en lugar de base64 y permite [personalizarlo](/ine-validation/custom-branding/). Úsala si estás > integrando desde cero. > **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. | | model | `String` | Modelo de la INE a validar (es posible dejarlo con valor `"D"` para que el sistema lo determine automáticamente). | #### **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....", "model": "D" } ``` ### 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. **status 200** ```json { "data": { "object": "ine_validations", "status": false, "message": "Mensaje de prueba dummy", "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": [ { "type": "Surname", "name": "Apellido/s", "value": "APELLIDOX APELLIDOY", "source": "MRZ" }, { "type": "Name", "name": "Nombre", "value": "NOMBREX", "source": "MRZ" }, { "type": "Sex", "name": "Sexo", "value": "X", "source": "MRZ" }, { "type": "Nationality", "name": "Nacionalidad", "value": "XXX", "source": "MRZ" }, { "type": "IssuingState", "name": "País de Emisión", "value": "XXX", "source": "MRZ" }, { "type": "DateOfExpiry", "name": "Fecha de Expiración", "value": "31/12/2099", "source": "MRZ" }, { "type": "DateOfBirth", "name": "Fecha de Nacimiento", "value": "01/01/1999", "source": "MRZ" }, { "type": "DocumentNumber", "name": "Número de Documento", "value": "999999999", "source": "MRZ" }, { "type": "PersonalNumber", "name": "Número Personal", "value": "0000000000000", "source": "MRZ" }, { "type": "Surname", "name": "Apellido/s", "value": "APELLIDOX APELLIDOY", "source": "OCR" }, { "type": "FatherSurname", "name": "Apellido Paterno", "value": "APELLIDOX", "source": "MRZ" }, { "type": "MotherSurname", "name": "Apellido Materno", "value": "APELLIDOY", "source": "MRZ" }, { "type": "Name", "name": "Nombre", "value": "NOMBREX", "source": "OCR" }, { "type": "FullName", "name": "Nombre Completo", "value": "APELLIDOX APELLIDOY NOMBREX", "source": "OCR" }, { "type": "DateOfExpiry", "name": "Fecha de Expiración", "value": "31/12/2099", "source": "OCR" }, { "type": "DateOfBirth", "name": "Fecha de Nacimiento", "value": "01/01/1999", "source": "OCR" }, { "type": "Sex", "name": "Sexo", "value": "X", "source": "OCR" }, { "type": "PersonalNumber", "name": "Número Personal", "value": "DUMMY000000X0000", "source": "OCR" }, { "type": "Section", "name": "Sección", "value": "9999", "source": "OCR" }, { "type": "PermanentAddress", "name": "Dirección", "value": "DIRECCION DUMMY", "source": "OCR" }, { "type": "Address_State", "name": "Provincia/Estado de Residencia", "value": "ESTADODUMMY", "source": "OCR" }, { "type": "NumberOfDuplicates", "name": "Número de duplicados", "value": "99", "source": "OCR" }, { "type": "AddressStreet", "name": "Calle de Residencia", "value": "CALLE DUMMY 999", "source": "OCR" }, { "type": "AddressCity", "name": "Ciudad de Residencia", "value": "CIUDADDUMMY", "source": "OCR" }, { "type": "AddressCity", "name": "Ciudad Dirección", "value": "CIUDADDUMMY", "source": "ExternalServices" }, { "type": "AddressCounty", "name": "Provincia Dirección", "value": "ESTADODUMMY", "source": "ExternalServices" }, { "type": "AddressCountry", "name": "País Dirección", "value": "Dummylandia", "source": "ExternalServices" }, { "type": "AddressCountryCode", "name": "Código País Dirección", "value": "DX", "source": "ExternalServices" } ], "documentVerifications": [ { "key": "TemplateSelected", "name": "Identificación del Documento", "category": "Identification", "categoryCode": 0, "result": "Ok", "resultCode": 0, "output": "100", "inputFields": [ { "name": "Template", "type": "Text", "typeCode": 0, "value": "Plantilla Dummy", "comments": null } ] }, { "key": "MrzHasInvalidCharacters", "name": "MRZ: Contiene caracteres inválidos", "category": "DataFormat", "categoryCode": 1, "result": "Ok", "resultCode": 0, "output": "", "inputFields": [ { "name": "0MrzLine0", "type": "Text", "typeCode": 0, "value": "IDXXX9999999999<<0000000000000", "comments": null }, { "name": "1MrzLine1", "type": "Text", "typeCode": 0, "value": "9901019X9912319XXX<00<<00000<9", "comments": null }, { "name": "2MrzLine2", "type": "Text", "typeCode": 0, "value": "APELLIDOX