---
title: "Vehicle & RC Verification API Reference"
description: "Verify a vehicle's registration certificate (RC) in real time — owner details, chassis/engine numbers, insurance validity, blacklist status, permits, fitness, and financier info via the VAHAN national database."
canonical: "https://eps.eko.in/docs/vehicle-rc"
---


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

# Vehicle & RC Verification API Reference

`POST https://staging.eko.in/ekoapi/v3/tools/kyc/vehicle-rc`

Verify a vehicle's registration certificate (RC) in real time — owner details, chassis/engine numbers, insurance validity, blacklist status, permits, fitness, and financier info via the VAHAN national database.

Send a vehicle registration number and receive a comprehensive RC dataset in a single API call. The response covers ownership (name, father's name, address), registration details (authority, dates, expiry), insurance (company, policy number, validity), compliance (blacklist, challan, PUCC, emission norms), commercial-vehicle specifics (permit type/validity, fitness certificate, national permit, tax status), and financier information. Pan-India coverage via the VAHAN database makes it suitable for driver onboarding, fleet monitoring, motor insurance underwriting, vehicle finance, and used-car platforms.

> View product & pricing details: [Vehicle & RC Verification](https://eps.eko.in/products/vehicle-rc-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 |
| vehicle_number | string | yes | Vehicle registration number to verify (e.g. HR26DA8398). e.g. HR26DA8398 |

## 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.reference_id | string | Unique reference ID for this verification request returned by Eko. |
| data.status ⭐ | string | Verification status string (e.g. 'Active', 'Inactive'). |
| data.reg_no ⭐ | string | Vehicle registration number as recorded in the VAHAN database. |
| data.rc_status ⭐ | string | Current RC status — 'Active', 'Inactive', 'Suspended', etc. |
| data.status_as_on | string | Date on which the RC status was last updated. |
| data.owner ⭐ | string | Full name of the registered owner of the vehicle. |
| data.owner_father_name ⭐ | string | Father's name of the registered owner. |
| data.owner_count | number | Number of previous owners, including the current one. |
| data.mobile_number | string | Mobile number of the owner as registered with the RTO, if available. |
| data.present_address ⭐ | string | Present address of the owner as a single string. |
| data.split_present_address ⭐ | object | Present address broken into structured components. |
| data.split_present_address.house_flat_number | string | House/flat number. |
| data.split_present_address.street | string | Street or locality. |
| data.split_present_address.city | string | City name. |
| data.split_present_address.state | string | State name. |
| data.split_present_address.pincode | string | PIN code. |
| data.permanent_address ⭐ | string | Permanent address of the owner as a single string. |
| data.split_permanent_address ⭐ | object | Permanent address broken into structured components. |
| data.split_permanent_address.house_flat_number | string | House/flat number. |
| data.split_permanent_address.street | string | Street or locality. |
| data.split_permanent_address.city | string | City name. |
| data.split_permanent_address.state | string | State name. |
| data.split_permanent_address.pincode | string | PIN code. |
| data.reg_authority ⭐ | string | Regional Transport Office (RTO) that issued the RC. |
| data.reg_date ⭐ | string | Date of first registration of the vehicle (YYYY-MM-DD). |
| data.rc_expiry_date ⭐ | string | RC validity expiry date (YYYY-MM-DD). Private vehicles are typically 15 years from registration. |
| data.class ⭐ | string | Vehicle class as registered with the RTO (e.g. 'Motor Car', 'LMV', 'HTV'). |
| data.vehicle_category | string | High-level vehicle category (e.g. 'LMV', 'HMV', 'M-Cycle'). |
| data.type ⭐ | string | Ownership type — 'Private' or 'Commercial'. |
| data.is_commercial ⭐ | boolean | True if the vehicle is registered for commercial use. |
| data.vehicle_manufacturer_name ⭐ | string | Manufacturer / make of the vehicle. |
| data.model ⭐ | string | Vehicle model name. |
| data.body_type | string | Body type of the vehicle (e.g. 'Hard Top', 'Open Body', 'Tipper'). |
| data.vehicle_color | string | Color of the vehicle as registered. |
| data.fuel_type ⭐ | string | Fuel type — 'Petrol', 'Diesel', 'CNG', 'Electric', etc. |
| data.norms_type ⭐ | string | Emission standard the vehicle complies with (e.g. 'Bharat Stage VI'). |
| data.emission_norms | string | Human-readable emission norms label returned in some responses. |
| data.chassis ⭐ | string | Chassis number of the vehicle as per RC. |
| data.engine ⭐ | string | Engine number of the vehicle as per RC. |
| data.vehicle_manufacturing_month_year | string | Month and year of vehicle manufacture. |
| data.vehicle_cubic_capacity | string | Engine cubic capacity in cc. |
| data.vehicle_cylinders_no | string | Number of cylinders in the engine. |
| data.vehicle_seat_capacity | string | Seating capacity of the vehicle. |
| data.vehicle_sleeper_capacity | string | Sleeper capacity (relevant for transport/bus vehicles). |
| data.vehicle_standing_capacity | string | Standing capacity (relevant for buses). |
| data.gross_vehicle_weight | string | Gross vehicle weight in kg. |
| data.unladen_weight | string | Unladen (kerb) weight of the vehicle in kg. |
| data.wheelbase | string | Wheelbase of the vehicle in mm. |
| data.vehicle_insurance_company_name ⭐ | string | Name of the insurance company that issued the current motor policy. |
| data.vehicle_insurance_policy_number ⭐ | string | Insurance policy number. |
| data.vehicle_insurance_upto ⭐ | string | Insurance validity date (YYYY-MM-DD). Check against today to flag lapsed policies. |
| data.rc_financer ⭐ | string | Name of the financier / lending institution if the vehicle is under a loan. |
| data.vehicle_tax_upto | string | Road tax validity date. |
| data.pucc_number | string | Pollution Under Control Certificate (PUCC) number. |
| data.pucc_upto | string | PUCC validity date. |
| data.blacklist_status ⭐ | string | Whether the vehicle appears on a blacklist — 'Not Blacklisted' or 'Blacklisted'. |
| data.blacklist_details | object | Detailed blacklist information; populated only if the vehicle is blacklisted. |
| data.blacklist_details.reason ⭐ | string | Reason for blacklisting. |
| data.blacklist_details.authority | string | Authority that issued the blacklist order. |
| data.challan_details | object | Pending traffic challan information, if any. |
| data.challan_details.challan_no | string | Challan number. |
| data.challan_details.amount | string | Challan amount in INR. |
| data.challan_details.status | string | Challan payment status. |
| data.noc_details | string | No Objection Certificate details, if applicable. |
| data.non_use_status | string | Indicates if the vehicle has been declared 'non-use'. |
| data.non_use_from | string | Start date of the non-use period, if applicable. |
| data.non_use_to | string | End date of the non-use period, if applicable. |
| data.permit_number | string | State permit number (commercial vehicles only). |
| data.permit_type ⭐ | string | Type of permit — e.g. 'Tourist', 'Contract Carriage', 'Goods'. |
| data.permit_issue_date | string | Date on which the permit was issued. |
| data.permit_valid_from | string | Permit validity start date. |
| data.permit_valid_upto ⭐ | string | Permit validity end date. |
| data.national_permit_number | string | National permit number for goods/transport vehicles operating across states. |
| data.national_permit_upto ⭐ | string | National permit validity date. |
| data.national_permit_issued_by | string | State authority that issued the national permit. |

## Example request

```json
{
  "initiator_id": "9962981729",
  "user_code": "20810200",
  "client_ref_id": "REQ-20260101-001",
  "vehicle_number": "HR26DA8398"
}
```

## Example response

```json
{
  "status": 0,
  "response_status_id": 0,
  "message": "Vehicle RC verification successful",
  "response_type_id": 1388,
  "data": {
    "reference_id": "EKO-RC-9876543210-001",
    "status": "Active",
    "reg_no": "HR26DA8398",
    "rc_status": "Active",
    "status_as_on": "2024-01-01",
    "owner": "Arya Sharma",
    "owner_father_name": "Rajesh Sharma",
    "owner_count": 1,
    "mobile_number": "98XXXXXXXX",
    "present_address": "123, Sector 45, Gurgaon, Haryana 122003",
    "split_present_address": {
      "house_flat_number": "123",
      "street": "Sector 45",
      "city": "Gurgaon",
      "state": "Haryana",
      "pincode": "122003"
    },
    "permanent_address": "456, MG Road, Gurgaon, Haryana 122001",
    "split_permanent_address": {
      "house_flat_number": "456",
      "street": "MG Road",
      "city": "Gurgaon",
      "state": "Haryana",
      "pincode": "122001"
    },
    "reg_authority": "HR-26 Gurgaon",
    "reg_date": "2020-06-15",
    "rc_expiry_date": "2039-06-14",
    "class": "Motor Car",
    "vehicle_category": "LMV",
    "type": "Private",
    "is_commercial": false,
    "vehicle_manufacturer_name": "Mahindra & Mahindra",
    "model": "XUV300",
    "body_type": "Hard Top",
    "vehicle_color": "Dark Grey",
    "fuel_type": "Petrol",
    "norms_type": "Bharat Stage VI",
    "emission_norms": "Bharat Stage VI",
    "chassis": "MA1TE2ELXLM123456",
    "engine": "N10A1234567",
    "vehicle_manufacturing_month_year": "May 2020",
    "vehicle_cubic_capacity": "1497",
    "vehicle_cylinders_no": "4",
    "vehicle_seat_capacity": "5",
    "vehicle_sleeper_capacity": "0",
    "vehicle_standing_capacity": "0",
    "gross_vehicle_weight": "1680",
    "unladen_weight": "1230",
    "wheelbase": "2600",
    "vehicle_insurance_company_name": "Tata AIG General Insurance",
    "vehicle_insurance_policy_number": "0165274682",
    "vehicle_insurance_upto": "2025-06-14",
    "rc_financer": "HDFC Bank Ltd",
    "vehicle_tax_upto": "2024-06-14",
    "pucc_number": "DL-EW-123456",
    "pucc_upto": "2024-12-31",
    "blacklist_status": "Not Blacklisted",
    "blacklist_details": {},
    "challan_details": {},
    "noc_details": null,
    "non_use_status": null,
    "non_use_from": null,
    "non_use_to": null,
    "permit_number": null,
    "permit_type": null,
    "permit_issue_date": null,
    "permit_valid_from": null,
    "permit_valid_upto": null,
    "national_permit_number": null,
    "national_permit_upto": null,
    "national_permit_issued_by": null
  }
}
```

## Error scenarios

| Status | Scenario |
| --- | --- |
| 200 | Invalid or unrecognised vehicle number |
| 200 | Missing required parameter (vehicle_number not supplied) |
| 403 | Authentication failure — wrong or expired secret-key |
| 200 | VAHAN source temporarily unavailable |
