VIN Lookup API
NHTSA Data
Batch Decode
ISO 3779 Validation

17 characters. The whole vehicle.

Decode any VIN into normalized make, model, year, engine, body, and plant details from NHTSA data. Single or batch, with checksum validation built in.

11 · decoded fields50 · VINs per batchNHTSA · source dataGET + POST · decode

Decode a VIN.

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.

Request builder
One VIN in, the full spec out.
POST /vin-lookup/decode
Batch and utilities
POST an array of up to 50 VINs to /decode for batch results, or use /makes and /suggest/:prefix to build pickers and autocomplete.
Output preview
Live response from the API, plus the exact request to reproduce it.

Decoding VIN...

Why VIN Lookup API

Vehicle intelligence from a VIN.

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

Endpoints, at a glance.

POST /decode is the workhorse for single and batch decodes. GET variants and utility endpoints cover browsers, pickers, and autocomplete.
POST/api/v1/vin-lookup/decode

Decode VIN(s)

Accepts a single VIN string or an array of up to 50 VINs. Returns normalized vehicle fields.

PRIMARY
GET/api/v1/vin-lookup/decode/:vin

Decode via path

Single-VIN decode through a path parameter, convenient for browsers and quick scripts.

GET/api/v1/vin-lookup/makes

List makes

Returns the manufacturer list for dropdowns and pre-decode validation.

GET/api/v1/vin-lookup/suggest/:prefix

Prefix suggestions

Candidate matches for a 3 to 9 character VIN prefix, ideal for autocomplete.

GET/health

Service health

Status, service name, version, and timestamp.

GET/metrics

Prometheus metrics

Request counts and latency histograms in Prometheus exposition format.

ParameterTypeRequiredDescription
vinstringdecodeSingle VIN in the POST body or path parameter. 11 to 17 alphanumeric characters.
vinarraybatchArray of up to 50 VINs in the POST body for batch decoding.
prefixpathsuggestVIN prefix for suggestions, 3 to 9 characters.

Error reference

Bad VINs fail cleanly.

Checksum and format problems are caught before any upstream call. Every error carries a correlationId for tracing.

400Validation Error

Missing or invalid VIN, a failed ISO 3779 checksum, or an out-of-range prefix length. The error message names the problem.

401Authentication Error

Missing or invalid API key at the gateway. Send x-api-key or api_key with every request.

404Not Found

Unknown route. Valid paths are /decode, /makes, and /suggest/:prefix under /api/v1/vin-lookup.

429Rate Limit

More than 100 requests in a 15-minute window per IP. The response includes retryAfter seconds.

500Internal Error

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

API questions developers ask first.

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.

Does the API validate the VIN before decoding?

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.

Can I decode many VINs at once?

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.

Are there helpers for building input UIs?

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.

How do I authenticate requests?

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.

Turn VINs into vehicle records.

Normalized NHTSA decoding with checksum validation, batch support, and autocomplete utilities. No data files to maintain, no NHTSA parsing to write.