DL Verify
POST/v2
This endpoint allows for the validation of a driver's license, ID card, or military ID using Agility's verification service. It accepts an image or scanned data of the license ID and returns validation results, including authenticity checks and extracted information.
Request
Header Parameters
A unique, idempotent key. We recommend to use a guid
The tenant ID provided by Agility Credit.
The requestor user ID.
If passed, will assign the report to that applicant. If not, will create a new applicant ID
- application/json
Body
required
Inquiry request payload
Array [
]
The session ID returned from the DL Verify Endpoint. Pass it back to continue uploading images.
Set to true when its your last image upload.
images
object[]
required
Base64 encoded image of the driver's license.
Possible values: [front, back, barcode, selfie]
Responses
- 200
- 400
- 401
- 429
- 500
Inquiry processed succesfully
Response Headers
Source-Ip
string
The source IP
X-Rate-Limit
integer
The current limit on a 5-minute window.
X-Rate-Limit-Remaining
integer
The remaining calls on a 5-minute window.
Timestamp
string
The timestamp of the request reception.
- application/json
- Schema
- Example (from schema)
Schema
- Update user request format schema
- DLResponseWithError
Array [
]
Array [
]
oneOf
The session ID returned from the DL Verify Endpoint. Pass it back to continue uploading images.
The list of images that need to be retaken using the same session ID.
Indicates if the user has completed the process.
The expiration date of the session.
result
object
The raw response from DL Verification.
idcheck
object
Barcode check signal (idcheck) response.
True if the API call was successful; false otherwise.
True if data was returned in the data object; false otherwise.
A description of the result output, for example, "success" or an error message.
imageQualityFindings
object[]
Array of image quality detection response codes with messages. Each member contains one code and one message.
Image quality detection response code.
Image quality detection response message.
data
object
Contains the idcheck signal elements returned as a JSON object.
Processing result status code. See ID Verification processResult Definitions
Possible values: [DocumentProcessOK, DocumentBadRead, DocumentBadDevice, DocumentUnknown, Document1DDocument, ErrorBadConfiguration, UnexpectedError]
Processing result diagnostic code. Values are Y, U, B, IUX, F, 1, UEE. See Extended Result Codes.
Possible values: [Y, U, B, IUX, F, 1, UEE]
Contains the first name.
Contains the middle name.
Contains the last name with suffix if present.
Contains line one of the residence address.
Contains line two of the residence address.
Contains the city of residence.
Contains the jurisdiction of residence.
Contains the postal code (zip code) of residence.
Contains the date of birth in MM/DD/YYYY format. When a partial birth date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: 01/12/???? will be returned for a document that does not encode the birth date year.
Contains the age based on the date of birth and the current system date. The age will be 1 if the age is unknown. The age will be 1 if either no date of birth or a partial date of birth is encoded.
Contains the height in centimeters for areas that use metric units.
Contains the height in feet and inches for areas that use customary units, for example, 5’2”.
Contains the weight in kilograms as specified on the ID.
Contains the weight in pounds as specified on the ID.
Contains the eye color. If the jurisdiction code for eye color is known, the color’s name is returned, for example, brown, blue, hazel. If the code is not recognized, the code that is encoded on the document is returned.
Contains the hair color. If the jurisdiction code for hair color is known, the color’s name is returned, for example, brown, black, blonde. If the code is not recognized, the code that is encoded on the document is returned.
Contains the gender. Either Male or Female.
This field is intentionally blank.
Contains the media type of the processed document. Examples include MAG and 2D.
Contains a unique ID to identify the document format. All jurisdiction document formats are assigned a unique ID by DL Verify.
True if the document is an DL Verify test card; false otherwise. DL Verify can provide test cards that produce different responses for system testing and demonstration.
Contains the raw driver license or ID (DL/ID) value. This will not contain any formatting characters, such as spaces and hyphens. It will contain only the alphanumeric characters that make up the DL/ID.
Contains the formatted driver license or ID (DL/ID) value. This will contain the formatting characters, such as spaces and hyphens, as it appears on the printed document.
Contains the restriction codes encoded on the document.
Contains the endorsement codes encoded on the document.
Contains the driver class codes encoded on the document.
Contains Yes or No indicating if the document owner is an organ donor.
Contains the expiration date of the processed document in MM/DD/YYYY format or the word NEVER for documents that do not expire. When a partial expiration date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example, 01/12/???? will be returned for a document that does not encode the expiration year.
Contains the expiration status of the document. Values are Yes, No, or Unknown.
Possible values: [Yes, No, Unknown]
Contains the date of issuance of the document in MM/DD/YYYY format.
Contains the full name of the issuing jurisdiction, for example, New York.
Contains the name of the issuing jurisdiction as an abbreviation. This value will always be two letters, for example, NY.
Contains the document duplication status. Values are Yes, No, or empty. An empty value means the duplicate status is unknown.
Possible values: [Yes, No, {empty}]
Contains the date the duplicate document was issued in MM/DD/YYYY format.
Contains the type of document (if available) from the barcode, for example, Driver's License, Learner's Permit, Operator License, and so on. Values vary by issuing jurisdiction. An empty value means the type is not identifiable.
Contains the document category acronym from the barcode. The value is typically one of the following: DL (driver license), HC (health card), ID (identification card), MIL (military identification). Rarely, certain other values are possible: WPN (weapon), HCP (handicap), WV (water vehicle), EMP (employee), OID (other). An empty value means the category is not identifiable.
Possible values: [DL, HC, ID, MIL, WPN, HCP, WV, EMP, OID, {empty}]
Contains the document REAL ID status. Values are Yes, No, or empty. Yes means the document was issued in compliance with United States Department of Homeland Security (DHS) requirements for the REAL ID Act passed by Congress in 2005. No means it was not. An empty value means the document did not have enough information to determine a result.
Possible values: [Yes, No, {empty}]
Contains a status of whether the address state compared to the document issuer are mismatched. Values are Yes, No, or Unknown. Yes means the state and issuer do not match. No means the state and issuer match. Unknown means the match status is not known.
Possible values: [No, Yes, Unknown]
Contains a transaction ID.
OCR
object
Optical character recognition (OCR) signal (ocr) response.
True if the API call was successful; false otherwise.
True if data was returned in the data object; false otherwise.
A description of the result output. For example, "success" or and error message.
imageQualityFindings
object[]
Array of image quality detection response codes with messages. Each member contains one code and one message.
Image quality detection response code.
Image quality detection response message.
data
object
Contains the OCR signal elements returned as a JSON object.
Deprecated. Currently not populated. Set /start return_images to true, and then see the images object in get-results.
Deprecated. Currently not populated. Set /start return_images to true, and then see the images object in get-results.
First name printed on the front of the identification or driver license document.
Last name printed on the front of the identification or driver license document.
fullName is derived from the front of the identification or driver license document. Certain documents, such as a Michigan State driver license, may not return values in the firstName and lastName name fields for OCR results. The API instead returns a fullName field, which can be used to process the name. The fullName field is the entire name. This change is required because the OCR scan cannot separate names as they appear on certain IDs (for example, Michigan issued driver licenses).
Address printed on the front of the identification or driver license document.
Identification number printed on the front of the identification or driver license document.
0 = not recognized. 1 = recognized. 2 = not processed.
Possible values: [0, 1, 2]
Three-letter code of the document issuing country (from third to fifth characters in the first MRZ string).
Contains the expiration date of the processed document, typically in yyyy-mm-dd format or the word NEVER for documents that do not expire. When a partial expiration date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: ????-01-12 will be returned for a document that does not encode the expiration year.
Contains the expiration date of the processed document in mm/dd/yyyy format or the word NEVER for documents that do not expire. When a partial expiration date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: 01/12/???? will be returned for a document that does not encode the expiration year.
Contains the date of issuance of the document, typically in yyyy-mm-dd format.
Contains the date of issuance of the document in MM/DD/YYYY format.
Contains the age.
Contains the expiration date of the processed document in MM/DD/YYYY format or the word NEVER for documents that do not expire. When a partial expiration date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: 01/12/???? will be returned for a document that does not encode the expiration year.
Contains the date of issuance of the document in MM/DD/YYYY format.
Contains the date of birth, typically in yyyy-mm-dd format. When a partial birth date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: ????-01-12 will be returned for a document that does not encode the birth date year.
Contains the date of birth in mm/dd/yyyy format. When a partial birth date is encoded on the document, the fields that are unknown will be filled in with ? characters. For example: 01/12/???? will be returned for a document that does not encode the birth date year.
Contains the gender. Either Male or Female.
Contains the height in centimeters.
Contains the eye color. If the jurisdiction code for eye color is known, the color’s name is returned, for example, brown, blue, hazel. If the code is not recognized, the code that is encoded on the document is returned.
Contains the driver class codes encoded on the document.
Contains the endorsement codes encoded on the document.
Contains the restriction codes encoded on the document.
Contains the document REAL ID status. Values are Yes, No, or empty. Yes means the document was issued in compliance with United States Department of Homeland Security (DHS) requirements for the REAL ID Act passed by Congress in 2005. No means it was not. An empty value means the document did not have enough information to determine a result.
Possible values: [Yes, No, {empty}]
Contains the name of the country or state where the person was born. Results depend on the document.
Contains the nationality of the person. Results depend on the document.
Contains the name of the issuing jurisdiction state, for example, New York.
Contains the weight in kilograms as specified on the ID.
Indicates the cause of failed OCR. Either unable to recognize license or unable to parse data from license.
ocr_match
object
OCR mismatch signal (ocr_match) response
True if the API call was successful; false otherwise.
True if data was returned in the data object; false otherwise.
A description of the result output, for example, "success" or an error message.
data
object
Contains the ocr_match signal elements returned as a JSON object.
True if name matched; false otherwise. A null value means this data was not available for the match comparison.
nameMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if document number matched; false otherwise. A null value means this data was not available for the match comparison.
documentNumberMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if country code matched; false otherwise. A null value means this data was not available for the match comparison.
countryCodeMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if expiration date matched; false otherwise. A null value means this data was not available for the match comparison.
expirationDateMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if date of birth matched; false otherwise. A null value means this data was not available for the match comparison.
dobMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if sex matched; false otherwise. A null value means this data was not available for the match comparison.
sexMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if nationality matched; false otherwise. A null value means this data was not available for the match comparison.
nationalityMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if issuer name matched; false otherwise. A null value means this data was not available for the match comparison.
issuerNameMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if address matched; false otherwise. A null value means this data was not available for the match comparison.
addressMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if issue date matched; false otherwise. A null value means this data was not available for the match comparison.
issueDateMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if height matched; false otherwise. A null value means this data was not available for the match comparison.
heightMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if weight matched; false otherwise. A null value means this data was not available for the match comparison.
weightMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if eye color matched; false otherwise. A null value means this data was not available for the match comparison.
eyeColorMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if driver license class matched; false otherwise. A null value means this data was not available for the match comparison.
dlClassMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if driver license endorsement matched; false otherwise. A null value means this data was not available for the match comparison.
dlEndorsementMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if driver license restrictions matched; false otherwise. A null value means this data was not available for the match comparison.
dlRestrictionsMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
True if real ID matched; false otherwise. A null value means this data was not available for the match comparison.
realIdMatchDetails
object
Contains details to explain the match decision along with a similarityScore value and a similarityThreshold value.
A brief explanation of whether the comparison was a match, a match with a slight discrepancy, a mismatch, or an indeterminate result.
A confidence cutoff that applies to similarityScore. For the issuer name, this value is 100 because the issuer must be an exact match. Otherwise, this value is typically 70. The similarityScore must be greater than or equal to this similarityThreshold to produce a match. The match result determines a true or false value for the corollary object. For example, if this object is nameMatchDetails, then its corollary object is isNameMatch.
A confidence estimate between 0 and 100 that OCR data matched the barcode or the MRZ data. A null value means this data was not available for the match comparison.
{}
Bad Request
- application/json
- Schema
- Example (from schema)
Schema
{
"status": "Bad Request - Invalid Parameters",
"error": "Failed schema validation. Error: data.pull_type must be one of ['prequal', 'hard'], Path: ['data', 'pull_type'], Data: prequalification"
}
Unauthorized
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Unauthorized"
}
Too Many Requests
- application/json
- Schema
- Example (from schema)
Schema
{
"error": "Too Many Requests"
}
Internal Server Error
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Agility Server Error"
}