Driving License V2 (DL Validation Plus)
Identity & KYCDL Validation Plus - enhanced Driving Licence verification returning holder photo, blood group, expiry, status details and vehicle-category wise validity.
Endpoint
POST
https://app.emver.io/api/sandbox/v1/driving-license-v2
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
Request parameters
| Field | Type | Description |
|---|---|---|
dl_v2_dl_number
required
|
string | DL Number Driving licence number without spaces |
dl_v2_dob
required
|
string | Date of Birth Date of birth as on the licence (DD/MM/YYYY) |
Example request
cURL
curl -X POST https://app.emver.io/api/sandbox/v1/driving-license-v2 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"dl_v2_dl_number": "string",
"dl_v2_dob": "YYYY-MM-DD"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/driving-license-v2",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"dl_v2_dl_number": "string",
"dl_v2_dob": "YYYY-MM-DD"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/driving-license-v2", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"dl_v2_dl_number": "string",
"dl_v2_dob": "YYYY-MM-DD"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/driving-license-v2', {
"dl_v2_dl_number": "string",
"dl_v2_dob": "YYYY-MM-DD"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING
}
Example · 200
{
"status": 200,
"message": "string"
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
Driving License V2 (DL Validation Plus)
DL Validation Plus - enhanced Driving Licence verification returning holder photo, blood group, expiry, status details and vehicle-category wise validity.
Endpoint
POST /api/v1/driving-license-v2
Content-Type: application/jsonRequest parameters
| Field | Required | Description |
|---|---|---|
dl_v2_dl_number | Yes | DL Number - Driving licence number without spaces. Example: MH1220190012345 |
dl_v2_dob | Yes | Date of Birth - Date of birth as on the licence (DD/MM/YYYY). Example: DD/MM/YYYY |
Sample request
{
"dl_v2_dl_number": "MH1220190012345",
"dl_v2_dob": "DD/MM/YYYY"
}Sample success response
{
"status": 200,
"message": "Verification successful",
"data": {
"dl_number": "...",
"dob": "...",
"name": "...",
"father_or_husband_name": "...",
"status": "...",
"date_of_issue": "...",
"address": "...",
"address_list": "...",
"validity": {
"non_transport_from": "...",
"non_transport_to": "...",
"transport_from": "...",
"transport_to": "...",
"hill_valid_till": "...",
"hazardous_valid_till": "..."
},
"badge_details": "...",
"last_transaction_date": "...",
"last_transacted_at": "...",
"photo": "...",
"blood_group": "...",
"expiry_date": "...",
"status_details": "...",
"vehicle_classes": "...",
"endorse_date": "...",
"endorse_number": "..."
}
}Sample error response
{
"status": 404,
"message": "No record found for the given input"
}Response status codes
The status field in the response body indicates the verification outcome.
| status | Meaning |
|---|---|
200 | Verification successful |
400 | Invalid input / verification failed |
404 | No record found |
422 | Invalid or missing input parameters |
500 | Source unavailable - retry later |