# Personalización del certificado (V2) Fuente: /ine-validation/custom-branding/ Cada [Validación completa de INE (V2)](/ine-validation/complete-validation-v2/) genera un **Certificado de Verificación en PDF** con el resultado de la validación. Con el parámetro `custom_branding` puedes adaptarlo a la imagen de tu empresa: sus colores y tu logo en la portada. > **Nota** > > Es **opcional y no tiene costo adicional**. Si no mandas `custom_branding`, el certificado se genera > con el diseño estándar de Verificamex. > **Solo disponible en la V2** > > Solo aplica a `/v2/validations/basic`. La [V1](/ine-validation/complete-validation/) (y su > [versión asíncrona](/ine-validation/complete-validation-async/)) no la soporta. ## Qué puedes personalizar `custom_branding` es un objeto con tres campos. Todos son opcionales: manda solo los que quieras cambiar y el resto se queda con el diseño estándar. | Campo | Tipo | Qué cambia en el certificado | Formato | | - | - | - | - | | `primary_color` | `String` | Títulos, líneas divisorias y encabezados de sección. | Color hexadecimal de 3 o 6 dígitos: `#0A58CA` o `#FFF`. El `#` es opcional. | | `secondary_color` | `String` | Fondo de la cabecera de las tablas. | Igual que `primary_color`. | | logo | `String` | Logo en el encabezado de la primera página. | Una URL pública `https://` o una imagen en base64 (máximo **256 KB**). Ver abajo. | ### Formato del logo Puedes mandar el logo de dos formas: - **URL pública `https://`**, por ejemplo `https://cdn.mi-empresa.com/logo.png`. Tiene que ser `https`: las URLs `http://` se rechazan. Debe poder descargarse desde internet; no se aceptan URLs que apunten a redes internas o privadas. - **Imagen en base64**, como data URI (`data:image/png;base64,iVBORw0...`) o solo la cadena base64. El texto base64 completo no puede pasar de **256 KB**. > **Consejo** > > Si tu logo pesa más de 256 KB en base64, usa una URL `https` o reduce la imagen. Un PNG de unos > 400 px de ancho suele verse bien y pesa muy poco. ## Cómo usarlo Agrega `custom_branding` al cuerpo de la solicitud a la [V2](/ine-validation/complete-validation-v2/): **JSON** ```json { "ine_front": "data:image/png;base64,iVBORw0KGgoAAAANS....", "ine_back": "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" } } ``` **cURL** ```bash curl -X POST https://api.verificamex.com/identity/v2/validations/basic \ -H "Authorization: Bearer {TU_TOKEN}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "ine_front": "data:image/png;base64,...", "ine_back": "data:image/png;base64,...", "selfie": "data:image/png;base64,...", "custom_branding": { "primary_color": "#F54927", "secondary_color": "#8C2511", "logo": "https://cdn.mi-empresa.com/logo.png" } }' ``` **Solo colores** ```json { "ine_front": "data:image/png;base64,iVBORw0KGgoAAAANS....", "ine_back": "data:image/png;base64,iVBORw0KGgoAAAANS....", "custom_branding": { "primary_color": "0A58CA" } } ``` La personalización se aplica **a esa validación**. No se guarda como configuración de tu cuenta, así que si quieres que todos tus certificados salgan con tu marca, manda `custom_branding` en cada solicitud. > **No cambia la respuesta JSON** > > `custom_branding` solo cambia cómo se ve el certificado PDF. La respuesta del endpoint y el resultado > de la validación son exactamente los mismos, con o sin personalización. El certificado personalizado > lo descargas desde `data.reporte`, una URL firmada con 1 hora de vigencia (ver > [Certificado de Verificación](/ine-validation/complete-validation-v2/#certificado-de-verificación-reporte)). ## Errores de validación Si algún campo de `custom_branding` no cumple el formato, la solicitud se rechaza con `422` **antes de procesar las imágenes**, así que no se consumen tokens. El mensaje indica qué campo corregir. **Color inválido** ```json { "message": "The given data was invalid.", "errors": { "custom_branding.primary_color": [ "El color primario debe estar en formato hexadecimal (ej. #0A58CA o #FFF)." ] } } ``` **Logo inválido** ```json { "message": "The given data was invalid.", "errors": { "custom_branding.logo": [ "El logo debe ser una URL https válida o una imagen en Base64." ] } } ``` **Logo muy pesado** ```json { "message": "The given data was invalid.", "errors": { "custom_branding.logo": [ "El logo en Base64 excede el máximo de 256 KB. Usa una imagen más ligera o una URL https." ] } } ``` | Mensaje | Motivo | | - | - | | El color primario debe estar en formato hexadecimal (ej. #0A58CA o #FFF). | `primary_color` no es un color hexadecimal de 3 o 6 dígitos. | | El color secundario debe estar en formato hexadecimal (ej. #F5F5F5 o #FFF). | `secondary_color` no es un color hexadecimal de 3 o 6 dígitos. | | El logo debe ser una URL https válida o una imagen en Base64. | El logo es una URL `http://`, una URL mal formada o un base64 inválido. | | El logo en data URI debe ir en Base64 (ej. data:image/png;base64,...). | Mandaste un data URI que no está codificado en base64. | | El logo en Base64 excede el máximo de 256 KB. Usa una imagen más ligera o una URL https. | La imagen en base64 pasa del límite. | **Solo en la V2** `/v2/validations/basic`: no está disponible en la V1 (síncrona ni asíncrona). **Sin costo extra** Personalizar el certificado no consume tokens adicionales. **Por validación** Se aplica solo a la validación en la que lo mandas; no se guarda en tu cuenta. **Todo es opcional** Manda solo los campos que quieras cambiar; el resto queda con el diseño estándar.