Driving Licence Verification
Identity & KYCConfirm a driving licence is valid, current and permits the right vehicle class.
Verify a driving licence number against the national transport database. Get the holder's name, issuing state, validity dates and permitted vehicle classes, so you know who can legally drive what before they start.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
driving_licence_number
required
|
string | Driving licence number |
date_of_birth
required
|
string | Date of birth |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/driving-license-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"driving_licence_number": "string",
"date_of_birth": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/driving-license-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"driving_licence_number": "string",
"date_of_birth": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/driving-license-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"driving_licence_number": "string",
"date_of_birth": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/driving-license-verification', {
"driving_licence_number": "string",
"date_of_birth": "string"
});
$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,
"data": {
"verification_status": STRING,
"registered_name": STRING,
"issuing_state": STRING,
"valid_until": STRING,
"permitted_vehicle_classes": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"verification_status": "string",
"registered_name": "string",
"issuing_state": "string",
"valid_until": "string",
"permitted_vehicle_classes": "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
For delivery fleets, logistics, ride-hailing and any role that puts someone behind a wheel, a valid licence is a safety and liability requirement, not a formality. This API checks the licence number and date of birth against the transport authority and returns the record as it stands today.
Because validity and vehicle classes come back explicitly, you can enforce policy rules automatically: expired licences are blocked, and a two-wheeler licence is not accepted for a light commercial vehicle role.
Typical uses
- Delivery and gig partner onboarding. Verify licence before activating a rider on the platform.
- Fleet and logistics hiring. Confirm commercial vehicle classes for drivers and operators.
- Ride-hailing and rentals. Validate customer or driver licences before handing over a vehicle.
- General ID verification. Accept a licence as identity proof in background checks with source validation.
Questions
- Does it cover licences from all states?
- Yes. The lookup runs against the national transport database, which consolidates licences issued by state authorities.
- Can I re-run the check periodically?
- Yes. Many fleets re-verify at renewal or every few months. Each call is billed as a single hit and returns the current record.
- What if the licence has expired?
- The validity date is returned so your workflow can block, warn or request a renewed licence. Use the webhook or response to prompt the user to upload a renewed licence.