---
title: "Driving License Verification API Reference"
description: "Verify driving license details in real time — holder name, DOB, address, validity, COV/badge class, and status."
canonical: "https://eps.eko.in/docs/driving-license"
---


> **Canonical URL:** https://eps.eko.in/docs/driving-license
> 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.

# Driving License Verification API Reference

`POST https://staging.eko.in/ekoapi/v3/tools/kyc/driving-license`

Verify driving license details in real time — holder name, DOB, address, validity, COV/badge class, and status.

The Driving License Verification API validates a DL number against government records and returns structured identity and entitlement data including the holder's name, father/husband name, date of birth, address, license validity windows (transport and non-transport), class of vehicle (COV) details, and badge information. Ideal for KYC, driver onboarding, and compliance workflows.

> View product & pricing details: [Driving Licence Verification](https://eps.eko.in/products/dl-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 |
| dl_number | string | yes | Driving license number to verify (e.g. MH0220190001234). e.g. MH0220190001234 |
| dob | string | yes | Date of birth of the DL holder in YYYY-MM-DD format. Used to cross-validate the license. e.g. 1994-08-29 |

## 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.dl_number ⭐ | string | The driving license number that was verified. |
| data.dob ⭐ | string | Date of birth of the DL holder as returned by the authority. |
| data.status ⭐ | string | Overall status of the driving license (e.g. Active, Suspended, Expired). |
| data.details_of_driving_licence | object | Core identity and administrative details extracted from the DL record. |
| data.details_of_driving_licence.name ⭐ | string | Full name of the driving license holder. |
| data.details_of_driving_licence.father_or_husband_name ⭐ | string | Father's or husband's name as recorded on the DL. |
| data.details_of_driving_licence.date_of_issue ⭐ | string | Date the driving license was originally issued (YYYY-MM-DD). |
| data.details_of_driving_licence.date_of_last_transaction | string | Date of the most recent administrative transaction on the license. |
| data.details_of_driving_licence.last_transacted_at | string | RTO or office where the last transaction was processed. |
| data.details_of_driving_licence.status ⭐ | string | Status of the DL as returned in the detailed record (mirrors top-level status). |
| data.details_of_driving_licence.address_list ⭐ | array | List of addresses associated with the DL holder. |
| data.details_of_driving_licence.address_list.complete_address ⭐ | string | Full address string as recorded on the DL. |
| data.details_of_driving_licence.address_list.type | string | Address type, e.g. permanent or temporary. |
| data.details_of_driving_licence.address_list.split_address | object | Address broken into components (street, city, state, pincode) when available. |
| data.details_of_driving_licence.address | string | Single-string address fallback when address_list is unavailable. |
| data.details_of_driving_licence.photo | string | Base64-encoded photograph of the DL holder as stored in the authority's database. |
| data.details_of_driving_licence.cov_details ⭐ | array | Class of Vehicle (COV) entitlement records — each entry lists a vehicle class and associated validity. |
| data.details_of_driving_licence.cov_details.cov ⭐ | string | Vehicle class code, e.g. LMV, MCWG, TRANS. |
| data.details_of_driving_licence.cov_details.issue_date | string | Date the COV entitlement was granted. |
| data.dl_validity ⭐ | object | Validity windows for transport and non-transport license categories. |
| data.dl_validity.non_transport ⭐ | object | Validity period for non-transport (personal) vehicle authorisation. |
| data.dl_validity.non_transport.from ⭐ | string | Non-transport validity start date (YYYY-MM-DD). |
| data.dl_validity.non_transport.to ⭐ | string | Non-transport validity end date (YYYY-MM-DD). |
| data.dl_validity.transport ⭐ | object | Validity period for transport (commercial) vehicle authorisation. |
| data.dl_validity.transport.from ⭐ | string | Transport validity start date (YYYY-MM-DD). |
| data.dl_validity.transport.to ⭐ | string | Transport validity end date (YYYY-MM-DD). |
| data.dl_validity.hazardous_valid_till | string | Date until which the hazardous-goods endorsement is valid, if applicable. |
| data.dl_validity.hill_valid_till | string | Date until which the hill-driving endorsement is valid, if applicable. |
| data.badge_details ⭐ | array | Badge/transport endorsement records, each describing a permitted vehicle class group. |
| data.badge_details.badge_no ⭐ | string | Badge number assigned by the transport authority. |
| data.badge_details.badge_issue_date | string | Date the badge was issued. |
| data.badge_details.class_of_vehicle ⭐ | array | List of vehicle classes covered under this badge (e.g. LMV, MCWG, TRANS). |

## Example request

```json
{
  "initiator_id": "9962981729",
  "user_code": "20810200",
  "client_ref_id": "REQ-20260101-001",
  "dl_number": "MH0220190001234",
  "dob": "1994-08-29"
}
```

## Example response

```json
{
  "status": 0,
  "response_status_id": 0,
  "message": "DL verification successful",
  "response_type_id": 1388,
  "data": {
    "dl_number": "MH0220190001234",
    "dob": "1994-08-29",
    "status": "Active",
    "details_of_driving_licence": {
      "name": "Rajesh Kumar",
      "father_or_husband_name": "Suresh Kumar",
      "date_of_issue": "2019-03-15",
      "date_of_last_transaction": "2023-01-10",
      "last_transacted_at": "Mumbai RTO",
      "status": "Active",
      "address_list": [
        {
          "complete_address": "123, Andheri West, Mumbai, Maharashtra - 400053",
          "type": "permanent",
          "split_address": {}
        }
      ],
      "address": "123, Andheri West, Mumbai",
      "photo": "/9j/4AAQSkZJRgAB...",
      "cov_details": [
        {
          "cov": "LMV",
          "issue_date": "2019-03-15"
        },
        {
          "cov": "MCWG",
          "issue_date": "2019-03-15"
        }
      ]
    },
    "dl_validity": {
      "non_transport": {
        "from": "2019-03-15",
        "to": "2039-03-14"
      },
      "transport": {
        "from": "2019-03-15",
        "to": "2024-03-14"
      },
      "hazardous_valid_till": null,
      "hill_valid_till": null
    },
    "badge_details": [
      {
        "badge_no": "MH-BADGE-001",
        "badge_issue_date": "2019-03-15",
        "class_of_vehicle": [
          "LMV",
          "MCWG"
        ]
      }
    ]
  }
}
```

## Error scenarios

| Status | Scenario |
| --- | --- |
| 200 | DL number not found in government records |
| 200 | DOB mismatch — provided DOB does not match authority records |
| 200 | Invalid DL number format |
| 403 | Authentication failure — wrong secret-key or timestamp |
| 200 | Upstream authority service temporarily unavailable |
