VIN

GET/v0/vin

Validates a 17-character Vehicle Identification Number (VIN) as defined by ISO 3779. Checks that the VIN contains only permitted characters (letters A–Z excluding I, O, Q, and digits 0–9) and verifies the NHTSA check digit algorithm. When valid, the response includes the parsed WMI, VDS, and VIS sections, the detected production region and country, the manufacturer name (if known), and the possible model year or years. Spaces and hyphens in the input are stripped automatically.

Guides: Node.js · Python

Try it

Query Parameters

ParameterTypeRequiredDescription
valuestringYesThe 17-character VIN to validate

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.isvalid.dev/v0/vin?value=1FTFW1ET9DFC10312"

Response Fields

FieldTypeDescription
validbooleanWhether the VIN passes format validation
normalizedstringThe VIN after normalisation — uppercase, spaces and hyphens removed
wmistringWorld Manufacturer Identifier — first 3 characters
vdsstringVehicle Descriptor Section — characters 4–9 (manufacturer-specific vehicle attributes)
visstringVehicle Identification Section — characters 10–17 (model year, plant, serial number)
regionstring | nullProduction region inferred from the first one or two WMI characters. Possible values: North America, South America, Europe, Asia, Africa, Oceania
countrystring | nullCountry of manufacture inferred from the first two WMI characters, or null if not in the built-in directory
manufacturerstring | nullManufacturer name if the WMI is in the built-in directory, or null for unknown WMIs
modelYearnumber[] | nullPossible model years decoded from position 10. Returns an array of 1 or 2 values because the encoding repeats on a 30-year cycle (e.g. [1983, 2013]). Returns null if the character at position 10 is not a recognised model year code.
checkDigitobjectResult of the NHTSA check digit calculation. See the checkDigit object below.

The checkDigit object

FieldTypeDescription
valuestringThe actual character at position 9 of the VIN
calculatedstringThe check digit computed by the NHTSA weighted-sum algorithm. A value of X represents 10.
validbooleanWhether value matches calculated
applicablebooleanWhether the check digit standard applies to this VIN. true for North American (WMI starts with 1–5) and Chinese (WMI starts with H or L) vehicles. For other regions, position 9 is a manufacturer-specific attribute — the algorithm is always computed but the result may not match.

Example Response — valid (Ford, USA, 2013)

{
  "valid": true,
  "normalized": "1FTFW1ET9DFC10312",
  "wmi": "1FT",
  "vds": "FW1ET9",
  "vis": "DFC10312",
  "region": "North America",
  "country": "United States",
  "manufacturer": "Ford",
  "modelYear": [2013],
  "checkDigit": {
    "value": "9",
    "calculated": "9",
    "valid": true,
    "applicable": true
  }
}

Example Response — valid (BMW, Germany)

{
  "valid": true,
  "normalized": "WBA3A5C51CF256560",
  "wmi": "WBA",
  "vds": "3A5C51",
  "vis": "CF256560",
  "region": "Europe",
  "country": "Germany",
  "manufacturer": "BMW",
  "modelYear": [1982, 2012],
  "checkDigit": {
    "value": "1",
    "calculated": "7",
    "valid": false,
    "applicable": false
  }
}

Example Response — invalid

{
  "valid": false
}