Skip to main content

driver-find v1.8.0

A driver find service to enable external organisations to match drivers to their driving licences using their personal details.

Click here to see this OpenAPI specification in JSON format.

Base URLs

Authentication

  • API Key (jwtAuth)

    • Parameter Name: Authorization, in: header. Valid JWT token issued as a result of authentication against the API Gateway.
  • API Key (apiKeyAuth)

    • Parameter Name: X-API-Key, in: header. API key used to access the service.

Find Drivers

Find drivers from at least three items of personal information.

post__v1_drivers_find

POST /v1/drivers/find

Find drivers from their personal details.

Find drivers using three or more of last name, first names, date of birth, gender and postcode.


Parameters

Name In Type Required Restrictions Description
limit header integer false Minimum: 1
Maximum: 50
Maximum the number of records to return.
offset header integer false Maximum: 49
Offset to skip the requested number of records. Used in conjunction with limit to page through results. Note requesting a value higher than the number of matched records will return no results.
body body findDriverRequest true none Search parameters - driver’s personal details.

Example Request

curl -X POST  -d '{
  "criteria": {
    "firstNames": "Barry",
    "lastName": "Williams",
    "dateOfBirth": "1990-06-01",
    "postcode": "SA1 1TH",
    "gender": "Male"
  },
  "options": {
    "lastNameMatchType": "exact",
    "firstNamesMatchType": "phonetic",
    "searchNamesOnPreviousLicences": true,
    "searchDateOfBirthOnPreviousLicences": true,
    "includeImagesInResults": false,
    "includePartialPostcodesInResults": true,
    "orderBy": "relevance"
  }
}' https://driver-vehicle-licensing.api.gov.uk/driver-find/v1/drivers/find \
 -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'limit: 10' -H 'offset: 0' -H 'Authorization: API_KEY'

Responses

Status Meaning Description Schema
200 OK Success. Returns zero or more drivers matching the supplied personal details. driversSummaryResponse
400 Bad Request Bad Request. The server could not understand the request due to invalid syntax. errorResponse
401 Unauthorized Unauthorised. errorResponse
403 Forbidden Forbidden. No access to the requested resource. errorResponse
429 Too Many Requests Too many requests in a given amount of time. errorResponse
500 Internal Server Error The service encountered an unspecified error. errorResponse

Additional common error responses are listed in the Common Error Responses page.

Example Response

Successful Response - No results found for search request

{
  "results": []
}

Successful Response - Single driver match with mandatory attributes only

{
  "results": [
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "lastName": "Doe",
      "gender": "Male"
    }
  ]
}

Successful Response - Single driver match with all attributes

{
  "results": [
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "firstNames": "John",
      "lastName": "Doe",
      "gender": "Male",
      "dateOfBirth": "1990-01-01",
      "postcode": "SA18 1LL"
    }
  ]
}

Successful Response - Single driver match redirected from a previous licence

{
  "results": [
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "firstNames": "John",
      "lastName": "Doe",
      "gender": "Male",
      "dateOfBirth": "1990-01-01",
      "postcode": "SA18 1LL",
      "driverRedirect": true
    }
  ]
}

Successful Response - Single driver match including base64 encoded driver image

{
  "results": [
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "firstNames": "John",
      "lastName": "Doe",
      "gender": "Male",
      "dateOfBirth": "1990-01-01",
      "postcode": "SA18 1LL",
      "image": {
        "type": "image/jpg",
        "data": "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"
      }
    }
  ]
}

Successful Response - Multiple drivers match

{
  "results": [
    {
      "drivingLicenceNumber": "JANEE123456AB1AB",
      "lastName": "Doe",
      "gender": "Female"
    },
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "firstNames": "John",
      "lastName": "Doe",
      "gender": "Male",
      "dateOfBirth": "1990-01-01",
      "postcode": "SA18 1LL",
      "driverRedirect": true
    }
  ]
}

400 Response

{
  "errors": [
    {
      "status": "400",
      "code": "BRQ001",
      "detail": "Bad request"
    }
  ]
}

401 Response

{
  "errors": [
    {
      "status": "401",
      "code": "Unauthorized",
      "detail": "API Key or JWT is either not provided, expired or invalid"
    }
  ]
}

403 Response

{
  "errors": [
    {
      "status": "403",
      "code": "Forbidden",
      "detail": "Access Denied"
    }
  ]
}

429 Response

{
  "errors": [
    {
      "status": "429",
      "code": "Throttled",
      "detail": "Too many requests"
    }
  ]
}

500 Response

{
  "errors": [
    {
      "status": "500",
      "code": "ENQ000",
      "detail": "System error occurred"
    }
  ]
}

Response Headers

Status Header Type Format Description
200 X-Total-Count integer none
200 X-DVLA-Request-Id string uuid Request Id to trace the API request.
400 X-DVLA-Request-Id string uuid Request Id to trace the API request.
401 X-DVLA-Request-Id string uuid Request Id to trace the API request.
403 X-DVLA-Request-Id string uuid Request Id to trace the API request.
429 X-DVLA-Request-Id string uuid Request Id to trace the API request.
500 X-DVLA-Request-Id string uuid Request Id to trace the API request.

Schemas

x-total-count

0

The total number of driver records returned in the results.

Properties

Name Type Required Restrictions Description
anonymous integer false none The total number of driver records returned in the results.

findDriverRequest

{
  "criteria": {
    "lastName": "Doe",
    "firstNames": "John",
    "dateOfBirth": "2019-12-31",
    "gender": "Male",
    "postcode": "SA22 9FD"
  },
  "options": {
    "lastNameMatchType": "exact",
    "firstNamesMatchType": "exact",
    "searchNamesOnPreviousLicences": true,
    "searchDateOfBirthOnPreviousLicences": true,
    "includePartialPostcodesInResults": true,
    "includeImagesInResults": false,
    "orderBy": "drivingLicenceNumber"
  }
}

A driver find request containing search criteria amd options

Properties

Name Type Required Restrictions Description
criteria searchCriteria false none An object representing the information to make a search on.
options searchOptions false none An object representing the various search options used to manipulate results.

driversSummaryResponse

{
  "results": [
    {
      "drivingLicenceNumber": "ABCDE123456AB1AB",
      "firstNames": "John",
      "lastName": "Doe",
      "dateOfBirth": "2019-12-31",
      "gender": "Male",
      "postcode": "SA22 9FD",
      "driverRedirect": true,
      "image": {
        "type": "image/jpg",
        "data": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYC..."
      }
    }
  ]
}

An response containing zero or more driver summaries.

Properties

Name Type Required Restrictions Description
results [driverSummary] true none [A summary of a driver’s details as per their current driving licence]

driverSummary

{
  "drivingLicenceNumber": "ABCDE123456AB1AB",
  "firstNames": "John",
  "lastName": "Doe",
  "dateOfBirth": "2019-12-31",
  "gender": "Male",
  "postcode": "SA22 9FD",
  "driverRedirect": true,
  "image": {
    "type": "image/jpg",
    "data": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYC..."
  }
}

A summary of a driver’s details as per their current driving licence

Properties

Name Type Required Restrictions Description
drivingLicenceNumber drivingLicenceNumber true none A UK driving licence number.
firstNames firstNames false none The driver’s first name(s).
lastName lastName true none The driver’s last name.
dateOfBirth dateOfBirth false none The driver’s date of birth in the format YYYY-MM-DD.
gender gender true none The driver’s gender.
postcode postcode false none The postcode from the address registered to the driver’s driving licence.
driverRedirect driverRedirect false none Indicates if record was redirected from a matched previous driving licence for a driver. Details from the driver’s current driving licence are returned.
image image false none Contains the mime type and base64 encoded data of a driver’s image, only included if the ‘includeImagesInResults’ option is set to true.

gender

"Male"

The driver’s gender.

Properties

Name Type Required Restrictions Description
anonymous string false Enum: Male,Female
The driver’s gender.

Enumerated Values

Property Value
anonymous Male
anonymous Female

dateOfBirth

"2019-12-31"

The driver’s date of birth in the format YYYY-MM-DD.

Properties

Name Type Required Restrictions Description
anonymous string(date) false Min length: 10
Max length: 10
The driver’s date of birth in the format YYYY-MM-DD.

postcode

"SA22 9FD"

The postcode from the address registered to the driver’s driving licence.

Properties

Name Type Required Restrictions Description
anonymous string false Min length: 2
Max length: 8
The postcode from the address registered to the driver’s driving licence.

postcodeSearch

"SA22 9FD"

Full UK postcode, with or without a space.

Properties

Name Type Required Restrictions Description
anonymous string false Pattern: ^(([Gg][Ii][Rr]\s?0[Aa]{2}) ((([A-Za-z][0-9]{1,2})

drivingLicenceNumber

"ABCDE123456AB1AB"

A UK driving licence number.

Properties

Name Type Required Restrictions Description
anonymous string false Min length: 5
Max length: 16
A UK driving licence number.

uuid

"dbcf549a-43db-4b95-aea8-1e6b792397bb"

A UK driving licence number.

Properties

Name Type Required Restrictions Description
anonymous string(uuid) false none A UK driving licence number.

firstNamesSearch

"John"

One or more, space separated, first names of a driver to search on

Properties

Name Type Required Restrictions Description
anonymous string false Pattern: ^(?!\s*$)[a-zA-Z .‘,-]{1,38}$
Min length: 1
Max length: 38
One or more, space separated, first names of a driver to search on

firstNames

"John"

The driver’s first name(s).

Properties

Name Type Required Restrictions Description
anonymous string false none The driver’s first name(s).

lastNameSearch

"Doe"

Last name of a driver to search on

Properties

Name Type Required Restrictions Description
anonymous string false Pattern: ^(?!\s*$)[a-zA-Z .’,-]{1,43}$
Min length: 1
Max length: 43
Last name of a driver to search on

lastName

"Doe"

The driver’s last name.

Properties

Name Type Required Restrictions Description
anonymous string false none The driver’s last name.

image

{
  "type": "image/jpg",
  "data": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYC..."
}

Contains the mime type and base64 encoded data of a driver’s image, only included if the ‘includeImagesInResults’ option is set to true.

Properties

Name Type Required Restrictions Description
type string false none Mime type of driver image
data string false none Base64 encoded driver image

driverRedirect

true

Indicates if record was redirected from a matched previous driving licence for a driver. Details from the driver’s current driving licence are returned.

Properties

Name Type Required Restrictions Description
anonymous boolean false none Indicates if record was redirected from a matched previous driving licence for a driver. Details from the driver’s current driving licence are returned.

errorResponse

{
  "errors": [
    {
      "status": "400",
      "code": "BRQ001",
      "detail": "Bad request"
    }
  ]
}

Error response containing a list of errors.

Properties

Name Type Required Restrictions Description
errors [error] false none none

error

{
  "status": "400",
  "code": "BRQ001",
  "detail": "Bad request"
}

Properties

Name Type Required Restrictions Description
status string false none HTTP status code.
code string false none DVLA reference code.
detail string false none A meaningful description of the error which has occurred.

searchOptions

{
  "lastNameMatchType": "exact",
  "firstNamesMatchType": "exact",
  "searchNamesOnPreviousLicences": true,
  "searchDateOfBirthOnPreviousLicences": true,
  "includePartialPostcodesInResults": true,
  "includeImagesInResults": false,
  "orderBy": "drivingLicenceNumber"
}

An object representing the various search options used to manipulate results.

Properties

Name Type Required Restrictions Description
lastNameMatchType string false Enum: exact,phonetic,token
Option to specify last name match type.
firstNamesMatchType string false Enum: exact,phonetic,token
Option to specify first names match type.
searchNamesOnPreviousLicences boolean false none Option to specify whether to search previous licences with the first name(s) and last name provided.
searchDateOfBirthOnPreviousLicences boolean false none Option to specify whether to search previous licences with the date of birth provided.
includePartialPostcodesInResults boolean false none Option to specify whether to include partial postcode matches in the results (this option only has an effect on the returned results when a postcode is also supplied in the request).
includeImagesInResults boolean false none Option to specify whether to include driver photos in the results. Enforces a max page size limit of 10 results.
orderBy string false Enum: drivingLicenceNumber,name,fullName,postcode,relevance
Option to specify the order in which the results are returned.

Enumerated Values

Property Value
lastNameMatchType exact
lastNameMatchType phonetic
lastNameMatchType token
firstNamesMatchType exact
firstNamesMatchType phonetic
firstNamesMatchType token
orderBy drivingLicenceNumber
orderBy name
orderBy fullName
orderBy postcode
orderBy relevance

searchCriteria

{
  "lastName": "Doe",
  "firstNames": "John",
  "dateOfBirth": "2019-12-31",
  "gender": "Male",
  "postcode": "SA22 9FD"
}

An object representing the information to make a search on.

Properties

Name Type Required Restrictions Description
lastName lastNameSearch false none Last name of a driver to search on
firstNames firstNamesSearch false none One or more, space separated, first names of a driver to search on
dateOfBirth dateOfBirth false none The driver’s date of birth in the format YYYY-MM-DD.
gender gender false none The driver’s gender.
postcode postcodeSearch false none Full UK postcode, with or without a space.