Driver License OCR
Our Driver License OCR API provides specialized data extraction for driving permits worldwide. Beyond standard identity data, it accurately parses vehicle classifications, issuing regions (States/Provinces), and validity dates. Streamline car rental, insurance, and gig-economy onboarding with high-precision recognition.
Endpoint
POSThttps://api.structocr.com/v1/driver-licenseRequest Parameters
Important: This endpoint requires application/json Content-Type. Images must be sent as Base64 strings.
| Parameter | In | Required | Description |
|---|---|---|---|
| x-api-key | Header | Required | Your unique API key generated from the dashboard. |
| Content-Type | Header | Required | Must be set to application/json. |
| img | Body (JSON) | Required | The Base64 encoded string of the driver license image.
|
Response Schema
The following fields are extracted into the data object. All dates are normalized to YYYY-MM-DD.
| Field | Description |
|---|---|
| type | Document type indicator (fixed as 'drivers_license'). |
| country_code | ISO 3166-1 alpha-3 country code (e.g., 'USA', 'CAN'). |
| region | State, Province, or Region code (e.g., 'CA' for California). |
| document_number | The unique license number. |
| surname | The holder's family name. |
| given_names | The holder's first and middle names. |
| date_of_birth | Holder's birth date in YYYY-MM-DD format. |
| date_of_expiry | The date when the license validity expires. |
| date_of_issue | The date when the license was issued. |
| sex | Gender of the holder (e.g., 'M', 'F'). |
| address | Full residential address as printed on the card. |
| vehicle_class | Allowed vehicle categories (e.g., 'C', 'B', 'AM'). |
Code Examples
Request Implementation
curl -X POST https://api.structocr.com/v1/driver-license \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"img": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}'Success Response (200 OK)
{
"success": true,
"data": {
"type": "drivers_license",
"country_code": "USA",
"region": "CALIFORNIA",
"document_number": "D1234567",
"surname": "DRIVER",
"given_names": "JANE MARIE",
"date_of_birth": "1995-08-15",
"date_of_expiry": "2025-08-15",
"date_of_issue": "2020-08-15",
"sex": "F",
"address": "1234 ELM ST, SACRAMENTO, CA 95814",
"vehicle_class": "C"
}
}Error Responses
400 Bad Request - Invalid Input
Returned when JSON is invalid or image data is missing/corrupt.
{
"error": "INVALID_JSON"
// or "NO_IMAGE_DATA", "INVALID_BASE64"
}402 Payment Required - Insufficient Credits
{
"success": false,
"error": "INSUFFICIENT_CREDITS",
"message": "Your account balance is insufficient to complete this operation."
}413 Payload Too Large
The Base64 decoded image size exceeds 4.5MB.
{
"error": "FILE_TOO_LARGE"
}415 Unsupported Media Type
{
"error": "INVALID_CONTENT_TYPE_USE_JSON"
}422 Unprocessable Entity - Policy Violation
{
"success": false,
"error": "CONTENT_POLICY_VIOLATION",
"message": "The document content could not be processed due to safety policies."
}500 Internal Server Error
{
"success": false,
"error": "PROCESSING_ERROR",
"message": "An internal error occurred while processing the document..."
}503 Service Unavailable - System Busy
{
"success": false,
"error": "SYSTEM_BUSY",
"message": "StructOCR is currently processing a high volume of requests..."
}Status Code Definitions
| Code | Error Code | Description |
|---|---|---|
| 200 | SUCCESS | Recognition success |
| 400 | INVALID_JSON | Invalid Body or corrupted Base64 |
| 402 | INSUFFICIENT_CREDITS | Account balance too low |
| 413 | FILE_TOO_LARGE | Decoded image exceeds 4.5MB |
| 415 | INVALID_CONTENT_TYPE | Not using application/json |
| 422 | CONTENT_POLICY_VIOLATION | AI safety/policy block |
| 503 | SYSTEM_BUSY | API Rate limit reached |