API INE Frente y Reverso: Referencia Técnica de CIC, OCR y Número Vertical
Referencia técnica de la API para leer el frente y el reverso de la credencial INE/IFE en una sola petición: qué campos salen de cada lado, formatos de envío, JSON de respuesta, validaciones y errores.
Esta página es una referencia técnica, no un artículo introductorio: describe exactamente qué hace el endpoint /api/v1/extract de Extraer Datos de INE cuando recibe el frente y el reverso de una credencial para votar. Si buscas la documentación completa de la API (autenticación, SDKs, todos los lenguajes), está en /docs.
Resumen
| Concepto | Valor |
|---|---|
| Endpoint | POST https://extraerdatosdeine.com/api/v1/extract |
| Autenticación | Header X-API-Key (clave generada en el panel) |
| Imágenes | image_front (obligatoria) e image_back (opcional) |
| Métodos de envío | multipart/form-data, JSON con base64, URL remota, binario directo (solo frente) |
| Formatos | JPEG, PNG o WebP, máximo 10 MB por imagen |
| Credenciales | INE e IFE; misma forma de respuesta para todas las versiones |
| Salida | Un solo objeto JSON con los campos de ambos lados |
| Costo | 1 token por credencial, con o sin reverso (entre $0.60 y $0.99 MXN según el paquete) |
| Prueba | 20 extracciones gratis al crear la cuenta |
Qué aporta cada lado
Con solo el frente obtienes los datos del titular. Al agregar el reverso, la respuesta incluye además los identificadores del documento físico.
| Campo (JSON) | Qué es | Formato | Lado |
|---|---|---|---|
nombre, apellidoPaterno, apellidoMaterno | Nombre del titular | Texto | Frente |
curp | CURP | 18 caracteres: [A-Z]{4}\d{6}[HM][A-Z]{5}[A-Z0-9]\d | Frente |
claveElector | Clave de elector | 18 caracteres: [A-Z]{6}\d{8}[HM]\d{3} | Frente |
fechaNacimiento | Fecha de nacimiento | DD/MM/AAAA | Frente |
sexo | Sexo | H o M | Frente |
domicilio, calle, colonia, codigoPostal, municipio, estado | Domicilio completo y desglosado | Texto; código postal de 5 dígitos | Frente |
seccion | Sección electoral | 4 dígitos | Frente |
anioRegistro | Año de registro | 4 dígitos | Frente |
vigencia | Año de vigencia | 4 dígitos | Frente |
emision | Número de emisión | 2 dígitos | Según modelo |
cic | Código de Identificación de la Credencial | 9 dígitos | Reverso |
ocr | Código OCR | 13 caracteres | Reverso |
numeroVertical | Número vertical | Dígitos | Reverso |
Si la credencial no muestra un campo (por ejemplo, un modelo IFE antiguo sin CIC), ese campo no se inventa: queda vacío. La diferencia entre CIC, OCR y clave de elector está explicada en CIC, OCR y clave de elector, y qué trae cada versión de la credencial en versiones de la credencial INE/IFE.
Sobre la MRZ: la API no devuelve las líneas crudas de la zona de lectura mecánica del reverso. Devuelve, ya separados en campos propios, los identificadores que te interesan de ese lado:
cic,ocrynumeroVertical.
Petición
multipart/form-data
curl -X POST https://extraerdatosdeine.com/api/v1/extract \
-H "X-API-Key: ine_tu_api_key" \
-F "image_front=@./ine_frente.jpg" \
-F "image_back=@./ine_reverso.jpg"
JSON con base64
curl -X POST https://extraerdatosdeine.com/api/v1/extract \
-H "X-API-Key: ine_tu_api_key" \
-H "Content-Type: application/json" \
-d "{\"image_front\": \"$(base64 -i ine_frente.jpg)\", \"image_back\": \"$(base64 -i ine_reverso.jpg)\"}"
El prefijo data URL (data:image/jpeg;base64,) es opcional.
URL remota
{
"image_front_url": "https://storage.example.com/ine_frente.jpg",
"image_back_url": "https://storage.example.com/ine_reverso.jpg"
}
El envío como binario directo (Content-Type: image/jpeg con la imagen como cuerpo) acepta una sola imagen, así que no sirve para frente y reverso.
Respuesta
{
"success": true,
"extraction_id": "clx1234567890",
"data": {
"nombre": "JUAN",
"apellidoPaterno": "PEREZ",
"apellidoMaterno": "GARCIA",
"curp": "PEGJ850101HDFRRL09",
"claveElector": "PRGRJN85010109H100",
"fechaNacimiento": "01/01/1985",
"sexo": "H",
"domicilio": "CALLE EJEMPLO 123",
"colonia": "CENTRO",
"codigoPostal": "06000",
"municipio": "CUAUHTEMOC",
"estado": "CIUDAD DE MEXICO",
"seccion": "1234",
"vigencia": "2029",
"numeroVertical": "1234567890123",
"ocr": "1234567890123",
"cic": "123456789",
"emision": "01"
},
"tokens_remaining": 19,
"upload_method": "multipart"
}
Los nombres de campo son los mismos para una IFE que para la INE más reciente: tu código no necesita ramificar por modelo.
Cómo se protege la lectura del frente cuando envías el reverso
El reverso de la credencial tiene su propia zona de lectura mecánica, llena de letras y dígitos parecidos a los de la CURP y la clave de elector. Leer ambos lados juntos puede contaminar esos dos campos del frente. Por eso, cuando mandas el reverso, la API hace dos lecturas en paralelo: una de ambos lados (de la que salen los campos del reverso y el resto del frente) y otra solo del frente, que es la fuente preferida para la CURP y la clave de elector. Enviar el reverso te da más campos sin degradar los del frente.
Además, antes de responder:
- CURP y clave de elector se validan contra su formato fijo (las expresiones de la tabla de arriba). Confusiones típicas de OCR en posiciones que solo admiten letras o solo dígitos (
O↔0) se corrigen únicamente si el resultado cumple el formato. - Se cruzan campos entre sí. La fecha de nacimiento contenida en la clave de elector se contrasta con la de la CURP y con la fecha impresa, y las letras de la CURP que salen del nombre se contrastan con el nombre impreso.
- CURP y clave de elector son obligatorios. Si ninguno de los dos se puede leer, la API no te entrega un registro a medias: responde
422 LOW_IMAGE_QUALITYy el token se reembolsa.
Errores relevantes
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | MISSING_IMAGE | No se envió image_front |
| 400 | INVALID_IMAGE_FORMAT | La imagen no es JPEG, PNG ni WebP |
| 400 | IMAGE_TOO_LARGE | Una imagen supera los 10 MB |
| 401 | INVALID_API_KEY | API key ausente o inválida |
| 402 | INSUFFICIENT_TOKENS | No quedan tokens en la cuenta |
| 422 | LOW_IMAGE_QUALITY | No se pudo leer CURP o clave de elector; el token se reembolsa |
| 429 | RATE_LIMITED | Demasiadas peticiones seguidas |
La tabla completa de errores está en la documentación.
Costo
Frente y reverso son una sola extracción: se descuenta 1 token por credencial, no por imagen. Cada extracción cuesta entre $0.60 y $0.99 MXN según el paquete, sin suscripción, y los tokens no expiran. Los paquetes vigentes están en precios.
Probarlo
Crea una cuenta, genera tu API key en el panel y manda el frente y el reverso de una credencial con el curl de arriba. Las primeras 20 extracciones son gratis.
¿Necesitas extraer datos de INE automáticamente?
Prueba nuestra API con 20 extracciones gratis. Integración en minutos, resultados en segundos.
Comenzar gratis