Peleza β€” Trust built on data
πŸ‡°πŸ‡ͺ Kenya
On this page

Driving License

Look up a Kenyan driving license by national ID via POST /api/v1/dl/ke. Returns license and holder details when available. Other country codes are not supported yet.

Loading sandbox test IDs…

Request

POST/api/v1/dl/ke
{{baseUrl}}/api/v1/dl/ke
HeaderTypeDescription
AuthorizationstringBearer YOUR_ACCESS_TOKEN from the OAuth client-credentials flow
Content-Typestringapplication/json

Body Parameters

ParameterTypeDescriptionRequired
id_numberstringNational ID of the license holder (6–10 digits)required
consentbooleanMust be true β€” confirms data-subject consent to perform this verificationrequired
customer_numberstringOptional reference for your own tracking (max 255 characters)optional

Sample request body

All verification APIs require consent: true in the JSON body.

Sample dataSample request body
{
  "id_number": "12345678",
  "consent": true
}

Response

200 OKSample dataExample response
{
  "success": true,
  "response_code": 200,
  "message": "Driving License Details Fetched Successfully",
  "country": "ke",
  "data": {
    "full_name": "JOHN DOE",
    "first_name": "JOHN",
    "last_name": "DOE",
    "id_number": "12345678",
    "date_of_birth": "1990-01-01",
    "gender": "M",
    "citizenship": "KE",
    "verification_status": "Valid",
    "serial_number": "DL-1000001",
    "license_number": "DL-1000001",
    "dl_class": "B",
    "date_of_issue": "2020-01-01",
    "date_of_expiry": "2030-01-01",
    "status": "valid",
    "points": "20",
    "blood_group": "UNKNOWN",
    "is_valid": true,
    "phone_number": "+254700000000",
    "email": "john.doe@example.com",
    "address": "123 Sample Street",
    "city": "Nairobi",
    "postal_address": "P.O. Box 12345-00100",
    "kra_pin": "A000000000A",
    "file_reference_number": "FRN-1000001",
    "has_smart_dl": "yes",
    "id_type": "citizen",
    "loader": "NO",
    "nc_classes": "B",
    "sub_classes_of_i": "B1",
    "certificate_of_competency_number": "COC-1000001",
    "certificate_of_competency_issued_date": "2019-12-01"
  },
  "request_id": "550e8400-e29b-41d4-a716-446655440003"
}

Response Fields

FieldTypeDescription
successbooleanWhether the request succeeded
response_codenumberApplication response code (typically mirrors HTTP)
messagestringHuman-readable status message
dataobjectPayload for the verified resource
request_idstringUUID for support and audit trails

Error codes

Standard Peleza HTTP / response_code values (same across all API calls). Validation message text is endpoint-specific. Full reference: Error Codes.

CodeWhenBilled?
200License details returnedYes
400Validation β€” id_number required, 6–10 digitsNo
401Missing or invalid Bearer tokenNo
402Insufficient wallet balance or credit limitNo
403No active wallet or billing profile (or service not enabled)No
404Driving license not foundYes
408Upstream timeout / service errorNo
429Rate limitedNo
502Upstream bad or unreadable responseNo
503Verification service unavailableNo

404 β€” not found

404Sample data404 β€” not found
{
  "success": false,
  "response_code": 404,
  "message": "Driving License Not Found",
  "description": "There is no information for the requested search parameters",
  "country": "ke",
  "request_id": "550e8400-e29b-41d4-a716-446655440031"
}

Set {{baseUrl}} to https://api.peleza.com (production) or https://sandbox.peleza.com (sandbox). Authenticated calls need a Bearer token from POST /api/v1/oauth/token.