---
title: "Voter ID Verification API Reference"
description: "Validate EPIC (Voter ID) card details in real time against government records — returns name, age, address, constituency, and polling station information."
canonical: "https://eps.eko.in/docs/voter-id"
---


> **Canonical URL:** https://eps.eko.in/docs/voter-id
> This is a machine-readable Markdown version of the page for AI agents and LLMs. The primary (HTML) version lives at the canonical URL above.

# Voter ID Verification API Reference

`POST https://staging.eko.in/ekoapi/v3/tools/kyc/voter-id`

Validate EPIC (Voter ID) card details in real time against government records — returns name, age, address, constituency, and polling station information.

The Voter ID Verification API lets you verify an Electoral Photo Identity Card (EPIC) number against government electoral rolls. A single POST call returns the cardholder's full identity profile — name (English and regional language), date of birth, gender, guardian details, structured address, assembly and parliamentary constituency, and polling station — making it suitable for KYC, onboarding, and compliance workflows.

> View product & pricing details: [Voter ID Verification](https://eps.eko.in/products/voter-id-verification-api.md)

## Body parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| initiator_id | string | yes | Registered mobile number of the API user (see Platform Credentials). e.g. 9962981729 |
| user_code | string | yes | User code of the retailer/agent the service is run for. e.g. 20810200 |
| client_ref_id | string | no | Unique reference id per API call, generated by your system. e.g. REQ-20260101-001 |
| epic_number | string | yes | Unique Electoral Photo Identity Card (EPIC) number to verify. e.g. ABC1234567 |
| name | string | no | Name of the Voter ID cardholder. Optional; can be used for cross-verification against returned name. e.g. Rajesh Kumar |

## Headers

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| developer_key | string | yes | Static API key issued to your account after KYC. |
| secret-key | string | yes | Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key))). |
| secret-key-timestamp | string | yes | Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time. |
| content-type | string | yes | application/json e.g. application/json |

## Response

⭐ marks fields highlighted as verifiable.

| Field | Type | Description |
| --- | --- | --- |
| status | number | Primary success indicator (0 = success). |
| message | string | Human-readable response / error message. |
| response_status_id | number | Granular status id; see the shared error-codes table. |
| response_type_id | number | A unique id for every possible response shape (success or error) — useful for client logic branching and analytics. |
| data | object | API-specific response payload. |
| data.name ⭐ | string | Cardholder's full name as recorded on the voter ID. |
| data.name_in_regional_lang ⭐ | string | Cardholder's name in the regional/vernacular script. |
| data.age ⭐ | string | Age of the cardholder as per voter roll records. |
| data.dob ⭐ | string | Date of birth in YYYY-MM-DD format. |
| data.gender ⭐ | string | Gender of the cardholder. |
| data.father_name ⭐ | string | Father's name as on the voter record. |
| data.relation_type | string | Relationship type of the guardian (e.g., Father, Husband). |
| data.relation_name | string | Guardian's name corresponding to the relation_type. |
| data.relation_name_in_regional_lang | string | Guardian's name in the regional/vernacular script. |
| data.epic_number ⭐ | string | The EPIC number that was verified. |
| data.address ⭐ | string | Full address string as recorded in the electoral roll. |
| data.state ⭐ | string | State name corresponding to the voter's registered address. |
| data.split_address | object | Parsed address broken into individual components. |
| data.split_address.district | array | District(s) extracted from the address. |
| data.split_address.city | array | City/town(s) extracted from the address. |
| data.split_address.state | array | State(s) extracted from the address (may be nested arrays). |
| data.split_address.pincode | string | PIN code extracted from the address. |
| data.split_address.country | array | Country extracted from the address. |
| data.split_address.address_line | string | Full address reassembled as a single line. |
| data.assembly_constituency ⭐ | string | Name of the assembly constituency (Vidhan Sabha) for the voter. |
| data.assembly_constituency_number ⭐ | string | Numerical code of the assembly constituency. |
| data.parliamentary_constituency ⭐ | string | Name of the parliamentary constituency (Lok Sabha) for the voter. |
| data.parliamentary_constituency_number ⭐ | string | Numerical code of the parliamentary constituency. |
| data.part_number | string | Part/section number of the electoral roll in which the voter is listed. |
| data.part_name | string | Name of the electoral roll part/section. |
| data.serial_number | string | Serial number of the voter within the electoral roll part. |
| data.polling_station ⭐ | string | Name and/or location of the designated polling station. |

## Example request

```json
{
  "initiator_id": "9962981729",
  "user_code": "20810200",
  "client_ref_id": "REQ-20260101-001",
  "epic_number": "ABC1234567",
  "name": "Rajesh Kumar"
}
```

## Example response

```json
{
  "status": 0,
  "response_status_id": 0,
  "message": "Voter ID verification successful",
  "response_type_id": 1388,
  "data": {
    "name": "Rajesh Kumar",
    "name_in_regional_lang": "राजेश कुमार",
    "age": "34",
    "dob": "1994-08-29",
    "gender": "Male",
    "father_name": "Suresh Kumar",
    "relation_type": "Father",
    "relation_name": "Suresh Kumar",
    "relation_name_in_regional_lang": "सुरेश कुमार",
    "epic_number": "ABC1234567",
    "address": "Ward 12, Sector 5, Noida",
    "state": "Uttar Pradesh",
    "split_address": {
      "district": [
        "Gautam Buddha Nagar"
      ],
      "city": [
        "Noida"
      ],
      "state": [
        [
          "Uttar Pradesh"
        ]
      ],
      "pincode": "201301",
      "country": [
        "India"
      ],
      "address_line": "Ward 12, Sector 5, Noida, Gautam Buddha Nagar, Uttar Pradesh - 201301"
    },
    "assembly_constituency": "Noida (62)",
    "assembly_constituency_number": "62",
    "parliamentary_constituency": "Gautam Buddha Nagar",
    "parliamentary_constituency_number": "47",
    "part_number": "142",
    "part_name": "Sector 5 Ward",
    "serial_number": "312",
    "polling_station": "Govt. School Noida Sec 5"
  }
}
```

## Error scenarios

| Status | Scenario |
| --- | --- |
| 200 | Invalid or non-existent EPIC number |
| 200 | Missing required parameter (epic_number) |
| 403 | Authentication failure — wrong or expired secret-key |
