V1
Verify an Indian driving licence against RTO records with DL number, DOB, and consent. Server-side POST with Bearer auth.
Driver's License Verification (V1)
API reference
JWT Bearer token authentication. Obtain a token from the KwikID dashboard.
In: header
Applicant consent for DL verification. Must be Y.
"Y"Driving licence number as printed on the licence (for example DL22XXXX1234567).
Date of birth in YYYY-MM-DD format.
dateResponse Body
curl -X POST "https://__playground__/verification/v1/idverification/dl/basic" \ -H "Content-Type: application/json" \ -d '{ "consent": "Y", "dl_no": "DL22XXXX1234567", "dob": "1990-06-15" }'{
"COV": [
"NT",
"TR"
],
"COV_category": [
"MCWG",
"LMV"
],
"captcha_tries": 2,
"date_of_birth": "15-06-1990",
"expiry_date": "31-Dec-2028",
"issue_date": "01-Jan-2020",
"licence_number": "DL22XXXX1234567",
"name": "J*A*N*E D*O*E*",
"rto_name": "RTO,MUMBAI",
"status": "ACTIVE",
"credits_consumed": 2
}{
"detail": {},
"message": "string"
}{
"detail": {},
"message": "string"
}Overview
Call POST /verification/v1/idverification/dl/basic from your backend with Authorization: Bearer <token> and JSON consent (Y only), dl_no, and dob (YYYY-MM-DD). The 200 response returns masked name, licence_number, status, issue and expiry dates, COV / COV_category, rto_name, and credits_consumed.
Key features
- Official-record style fields for underwriting and identity checks.
- Explicit consent required in
consent.
Implementation
Step 1: Prepare the request body
Send consent, dl_no, and dob in the JSON body.
| Field | Type | Required | Description |
|---|---|---|---|
| consent | string | Yes | Applicant consent for DL verification. Must be Y. |
| dl_no | string | No | Driving licence number as printed on the licence (for example DL22XXXX1234567). |
| dob | string | No | Date of birth in YYYY-MM-DD format (for example 1990-06-15). |
Example request (mock values):
{
"consent": "Y",
"dl_no": "DL22XXXX1234567",
"dob": "1990-06-15"
}Step 2: Call from your backend
POST /verification/v1/idverification/dl/basic HTTP/1.1
Host: <verification-api-base-url>
Authorization: Bearer <token>
Content-Type: application/json
{
"consent": "Y",
"dl_no": "DL22XXXX1234567",
"dob": "1990-06-15"
}Step 3: Use the response
Validate status (for example ACTIVE) and map name, COV_category, and dates into your records. Store licence fields securely; do not log raw holder names.
Response
| Field | Type | Description |
|---|---|---|
| COV | array of string | Class-of-vehicle codes as returned by the RTO source. |
| COV_category | array of string | Human-readable class-of-vehicle categories (for example MCWG, LMV). |
| captcha_tries | integer | Number of captcha attempts used during upstream lookup. |
| date_of_birth | string | Date of birth on the licence in DD-MM-YYYY format. |
| expiry_date | string | Licence expiry date (for example 31-Dec-2028). |
| issue_date | string | Licence issue date (for example 01-Jan-2020). |
| licence_number | string | Verified driving licence number. |
| name | string | Holder name as returned by the source. Often partially masked (for example J*A*N*E D*O*E*). |
| rto_name | string | Issuing RTO office name (for example RTO,MUMBAI). |
| status | string | Licence status (for example ACTIVE). |
| credits_consumed | number | Verification credits consumed for this call. |
Example response (mock values):
{
"COV": ["NT", "TR"],
"COV_category": ["MCWG", "LMV"],
"captcha_tries": 2,
"date_of_birth": "15-06-1990",
"expiry_date": "31-Dec-2028",
"issue_date": "01-Jan-2020",
"licence_number": "DL22XXXX1234567",
"name": "J*A*N*E D*O*E*",
"rto_name": "RTO,MUMBAI",
"status": "ACTIVE",
"credits_consumed": 2
}Error handling
| HTTP status | When |
|---|---|
| 400 | Validation error. |
| 401 | Auth failure. |
Benefits
- Reduces fake DL uploads by matching against structured RTO-style data.