API Reference

Verify a voter ID with INE

Return whether INE reports a voter ID as current, with the elector key, districts, and validity date on record.

POST /v1/ine/verify

Check a voter ID (credencial para votar) with INE's Lista Nominal service and get back whether it is current, with the record INE has for it. Takes 15 to 40 seconds and costs 10 credits.

Use it to confirm that a credential someone shows you was issued by INE and is still valid as identification. The answer covers the credential, not the person: compare the elector key and the photo on the card with the person in front of you.

Request body

Field Type Required Description
cic string Yes The credential identification code (CIC), up to 9 digits. On the back of the card, it is the nine digits after IDMEX on the first line.
id_ciudadano string One of the two The citizen identifier, up to 9 digits, for models E to J: the last nine digits of the first line on the back.
ocr string One of the two The 13-digit OCR, for model D credentials. Send it instead of id_ciudadano.

Where to find the identifiers

Both identifiers are on the first line of the machine-readable zone on the back of the credential. INE's own diagrams:

Back of INE credentials models E to J: the CIC and the citizen identifier marked on the first line.
Models E to J: 1. the CIC is the nine digits after IDMEX; 2. the citizen identifier (id_ciudadano) is the last nine digits of the line.
Back of an INE credential model D: the CIC and the OCR marked on the first line.
Model D: 1. the CIC is the nine digits after IDMEX; 2. the OCR is the 13 digits after <<.

Try it

POST /v1/ine/verify
Try it

Sign in to send a real request from this page.

New accounts get a $5 USD signup credit, no card required.

Example request

curl bash
curl -X POST https://inecheck.com/v1/ine/verify \
  -H "x-api-key: rfc_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"cic": "123456789", "id_ciudadano": "987654321"}'

Response (200)

200 OK json
{
  "cic": "123456789",
  "found": true,
  "status": "vigente",
  "message": "INE reports this credential is current.",
  "credential": {
    "modelo": "e",
    "status": "vigente",
    "found": true,
    "vigente": true,
    "puede_votar": true,
    "en_padron_electoral": true,
    "en_lista_nominal": true,
    "cic": "123456789",
    "clave_elector": "PRMRJN80010109H400",
    "numero_emision": "2",
    "distrito_federal": "1",
    "distrito_local": "19",
    "ocr": "1234567890123",
    "anio_registro": "2011",
    "anio_emision": "2022",
    "fecha_actualizacion": "2026-11-04T04:29:00",
    "fecha_consulta": "2026-11-04",
    "vigencia": "2032-12-31",
    "mensaje": "Esta vigente como medio de identificación."
  }
}

found is true (INE returned the record in credential), false (INE answered without a record: status says whether the identifiers matched nothing or the credential is no longer valid, and message carries INE's own sentence), or null (INE could not be reached, retry later). A false answer costs 10 credits. A null answer is not charged.

INE answers no_encontrada both for mistyped identifiers and for a credential that was replaced by a newer one (a later trámite), so an old card the person still carries comes back as not found. Ask for the most recent credential.

Reading the credential

  • vigente: INE reports the credential as valid identification. vigencia is the date it expires.
  • en_padron_electoral, en_lista_nominal: whether INE places the holder in the electoral register and in the list of voters.
  • puede_votar: true only when INE also places the holder in the Lista Nominal. A credential can be current as identification while its holder is not on the list, so check vigente for identity flows.
  • fecha_actualizacion, fecha_consulta: when INE last updated the record and the day the lookup ran, as INE prints them.

Errors

  • 422 invalid_fields: fields lists what to fix: a missing or non-numeric cic, or not exactly one of id_ciudadano and ocr. Not charged.