Skip to content
Constaia
us_driver_license

Driver license

Read both sides of a US driver license, decode the AAMVA barcode and check expiry, age and holder.

Category
Driver licenses
Country
United States
Extracted fields
28 fields
Cost
1 credit
US driver's license (specimen)
Valid
SpecimenTry it in the demo

Every state has its own design, but the back carries a PDF417 barcode under the AAMVA standard. Constaia decodes it, compares it with the printed front and checks expiry, date of birth and holder. You get a valid, invalid or review verdict with reasons, and only the fields you need.

  • Front and back count as 1 credit.
  • A barcode that matches the front does not prove the card is genuine: it catches typos, mismatched sides and crude edits. Constaia does not do biometric checks.
  • The federal Driver's Privacy Protection Act (DPPA) limits the use of personal information from state motor vehicle records, and some states add their own rules. Collect license data only for a clear purpose and keep only what you need, ideally with storage "none".

What it checks

  • PDF417 barcode (AAMVA). The back is decoded and compared with the front.
  • National identifiers. Official checksum or format of the number (NIF, CPF, CURP, RUT, SSN…).us_dl, us_zip
  • Postal code. Postal code format of the country.
  • Holder. Name, number or date of birth match what you expect.
  • Age. Minimum or maximum age from the date of birth.
  • Validity. Not expired on the reference date.
  • Form I-9. Whether the document belongs to list A, B or C.B

Extracted fields

  • Document numberdocument_number
  • Issuing stateissuing_state
  • First namefirst_name
  • Middle namemiddle_name
  • Last namelast_name
  • Name suffixname_suffix
  • Date of birthbirth_date
  • Issue dateissue_date
  • Expiry dateexpiry_date
  • Sexsex
  • Heightheight
  • Weightweight
  • Eye coloreye_color
  • Hair colorhair_color
  • Addressaddress
  • Postal codepostal_code
  • REAL ID compliantreal_id_compliant
  • Dddd
  • Organ donororgan_donor
  • Veteranveteran
  • Under 21 untilunder_21_until
  • Federal limits applyfederal_limits_apply
  • Classclass
  • Restrictionsrestrictions
  • Endorsementsendorsements
  • Commercialcommercial
  • Permit typepermit_type
  • Barcode databarcode_data

Where it is used

Sample request

curl https://api.constaia.com/v1/analyze \
  -H "Authorization: Bearer $CONSTAIA_API_KEY" \
  -F "file=@us_driver_license_specimen.jpg" \
  -F 'options={
    "expect": "us_driver_license",
    "checks": {
      "not_expired": true,
      "min_age_years": 21,
      "holder": {
        "full_name": "Jordan Specimen"
      }
    },
    "storage": "none"
  }'

Try it for free with a ck_test_ key and the file us_driver_license_specimen.jpg.

Sample response

Fictitious data. Shortened response.

200 OK · application/json
{
  "id": "an_01J9Z3K8QW4T6Y2B7N5M1R0PXC",
  "object": "analysis",
  "status": "completed",
  "livemode": false,
  "document": {
    "type": "us_driver_license",
    "label": "Driver license",
    "confidence": 0.97
  },
  "verdict": {
    "expected": [
      "us_driver_license"
    ],
    "match": true,
    "status": "valid",
    "reasons": [
      {
        "code": "type_match",
        "severity": "info",
        "message": "The document is: Driver license."
      }
    ]
  },
  "fields": {
    "document_number": {
      "value": "D1234567",
      "confidence": 0.99,
      "validated": true
    },
    "first_name": {
      "value": "JORDAN",
      "confidence": 0.98,
      "validated": null
    },
    "middle_name": {
      "value": "LEE",
      "confidence": 0.97,
      "validated": null
    },
    "last_name": {
      "value": "SPECIMEN",
      "confidence": 0.96,
      "validated": null
    },
    "birth_date": {
      "value": "1994-03-08",
      "confidence": 0.99,
      "validated": null
    },
    "sex": {
      "value": "M",
      "confidence": 0.98,
      "validated": null
    },
    "issuing_state": {
      "value": "CA",
      "confidence": 0.97,
      "validated": null
    },
    "license_class": {
      "value": "C",
      "confidence": 0.96,
      "validated": null
    },
    "issue_date": {
      "value": "2023-05-17",
      "confidence": 0.99,
      "validated": null
    },
    "expiry_date": {
      "value": "2028-03-08",
      "confidence": 0.98,
      "validated": null
    },
    "real_id_compliant": {
      "value": true,
      "confidence": 0.97,
      "validated": null
    }
  },
  "checks": [
    {
      "code": "aamva_barcode_matches_front",
      "passed": true,
      "message": "The PDF417 barcode matches the front."
    },
    {
      "code": "not_expired",
      "passed": true,
      "message": "Valid on the reference date."
    },
    {
      "code": "min_age_years",
      "passed": true,
      "message": "The holder meets the minimum age."
    },
    {
      "code": "holder_match",
      "passed": true,
      "message": "The holder matches."
    }
  ],
  "warnings": [],
  "storage": {
    "mode": "none",
    "file_deleted_at": "2026-09-29T10:00:02Z",
    "expires_at": null
  },
  "usage": {
    "credits": 1,
    "pages": 2
  }
}

FAQ

Does Constaia prove the document is authentic?

No. It checks the type, data consistency and your rules, and flags signals such as a possible edit or a screen photo. That does not prove authenticity.

Is a copy of the document kept?

No, unless you ask for it. With storage "none" (the default) the file is deleted when the analysis ends.

Other documents

And for the record…

Create your account, copy the test key and validate your first document in five minutes.