What data does a VIN decode return?
A normalized vehicle record: make, model, year, trim, engine, drivetrain, body type, vehicle type, manufacturer, and plant country, sourced from NHTSA and returned as flat JSON fields.
Decode any VIN into normalized make, model, year, engine, body, and plant details from NHTSA data. Single or batch, with checksum validation built in.
This calls the live VIN Lookup API. Enter a 17-character VIN or pick a sample; the response normalizes NHTSA data into clean vehicle fields.
Decoding VIN...
Why VIN Lookup API
Normalized NHTSA data
Every decode returns clean make, model, year, trim, engine, drivetrain, body type, manufacturer, plant country, and vehicle type.
Checksum validation
VINs are validated against ISO 3779 before decoding, so malformed or mistyped numbers fail fast with a clear error.
Batch decode
POST an array of up to 50 VINs in one call and get per-VIN results plus metadata with count and processing time.
GET or POST
Decode a single VIN through a path parameter or POST a body. Same normalized fields either way.
Make listings
GET /makes returns the manufacturer list for building dropdowns and validating input before decode.
Prefix suggestions
GET /suggest/:prefix returns candidate matches for a 3 to 9 character VIN prefix, ideal for autocomplete.
/api/v1/vin-lookup
Decode VIN(s)
Accepts a single VIN string or an array of up to 50 VINs. Returns normalized vehicle fields.
Decode via path
Single-VIN decode through a path parameter, convenient for browsers and quick scripts.
List makes
Returns the manufacturer list for dropdowns and pre-decode validation.
Prefix suggestions
Candidate matches for a 3 to 9 character VIN prefix, ideal for autocomplete.
Service health
Status, service name, version, and timestamp.
Prometheus metrics
Request counts and latency histograms in Prometheus exposition format.
| Parameter | Type | Required | Description |
|---|---|---|---|
| vin | string | decode | Single VIN in the POST body or path parameter. 11 to 17 alphanumeric characters. |
| vin | array | batch | Array of up to 50 VINs in the POST body for batch decoding. |
| prefix | path | suggest | VIN prefix for suggestions, 3 to 9 characters. |
Error reference
Checksum and format problems are caught before any upstream call. Every error carries a correlationId for tracing.
Missing or invalid VIN, a failed ISO 3779 checksum, or an out-of-range prefix length. The error message names the problem.
Missing or invalid API key at the gateway. Send x-api-key or api_key with every request.
Unknown route. Valid paths are /decode, /makes, and /suggest/:prefix under /api/v1/vin-lookup.
More than 100 requests in a 15-minute window per IP. The response includes retryAfter seconds.
NHTSA upstream failure or handler error. The response includes details and a correlationId for tracing.
Example error response
{
"error": "Invalid VIN checksum (failed ISO 3779 validation).",
"correlationId": "abc123"
}FAQ
A normalized vehicle record: make, model, year, trim, engine, drivetrain, body type, vehicle type, manufacturer, and plant country, sourced from NHTSA and returned as flat JSON fields.
Yes. VINs are checked against ISO 3779, including the checksum digit, so malformed or mistyped VINs return a 400 with a clear error instead of a bad decode.
Yes. POST an array of up to 50 VINs to /decode and the response returns per-VIN results plus metadata with the count and processing time.
GET /makes returns the manufacturer list for dropdowns, and GET /suggest/:prefix returns candidate matches for a 3 to 9 character VIN prefix to power autocomplete.
Send your Datpaq API key as an x-api-key header or an api_key query parameter. Keys are created in the Datpaq dashboard and a free tier is included.
Normalized NHTSA decoding with checksum validation, batch support, and autocomplete utilities. No data files to maintain, no NHTSA parsing to write.