AI Kit Data
API reference

AI Kit Data API

Decodes VINs inside the Worker with a port of NHTSA's `spVinDecode` over the official vPIC dump, checked against NHTSA's SQL and the live API. No API key. Requests are limited to 120 per minute per client and location; over the limit the API answers 429 with `Retry-After`. Independent project, not affiliated with any U.S. government agency.

VIN

Offline decoding.

GET /api/v1/vin/{vin}

Decode a VIN. Clean JSON: typed headline fields plus every decoded attribute keyed by vPIC variable code.

Parameters

  • vin path, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.
  • modelyear query · Model year hint, for VINs where the year cannot be read from the VIN.

Responses

  • 200 Decoded vehicle
  • 400 Invalid VIN or model year
  • 429 Rate limited

GET /api/v1/vin/{vin}/unified

Decode plus US EPA and EU RDW reference data. Enrichment is at model level, not per vehicle. A failing source is reported in the response and does not fail the request.

Parameters

  • vin path, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.
  • modelyear query · Model year hint, for VINs where the year cannot be read from the VIN.
  • epa query · `false` skips the EPA lookup.
  • eu query · `false` skips the RDW lookup.

Responses

  • 200 Vehicle profile
  • 400 Invalid VIN or model year
  • 429 Rate limited

GET /api/v1/vin/{vin}/compare

Compare the offline decode with the live vPIC API. Field by field. Calls NHTSA on every request and is never cached.

Parameters

  • vin path, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.
  • modelyear query · Model year hint, for VINs where the year cannot be read from the VIN.

Responses

  • 200 List of differing fields
  • 400 Invalid VIN or model year
  • 429 Rate limited
  • 502 NHTSA did not answer

Catalog

Makes and models in the bundled dataset.

GET /api/v1/makes

Every make in the bundled dataset.

Responses

  • 200 Makes
  • 429 Rate limited

GET /api/v1/models

Models of a make.

Parameters

  • make query, required

Responses

  • 200 Models grouped by matching make
  • 400 Missing make
  • 404 Unknown make
  • 429 Rate limited

vPIC drop-in

Same paths and JSON shape as vpic.nhtsa.dot.gov.

GET /vehicles/DecodeVinValues/{vin}

vPIC DecodeVinValues, answered offline.

Parameters

  • vin path, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.
  • format query
  • modelyear query · Model year hint, for VINs where the year cannot be read from the VIN.
  • clean query · `true` drops empty and "Not Applicable" values.

Responses

  • 200 vPIC envelope
  • 429 Rate limited

GET /vehicles/DecodeVin/{vin}

vPIC DecodeVin (one row per variable), answered offline.

Parameters

  • vin path, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.
  • format query

Responses

  • 200 vPIC envelope
  • 429 Rate limited

POST /vehicles/DecodeVINValuesBatch/

vPIC batch decode, up to 50 VINs per request.

Responses

  • 200 vPIC envelope with one result per entry
  • 400 More than 50 entries, or an invalid VIN
  • 429 Rate limited

Recalls

Proxied to NHTSA and cached.

GET /api/v1/recalls/{vin}

Safety recall campaigns for a VIN. Proxied to NHTSA and cached for 6 hours; unavailable when NHTSA is.

Parameters

  • vin path, required · Full 17-character VIN (I, O and Q are not used in VINs).

Responses

  • 200 Recalls as returned by NHTSA
  • 400 Invalid VIN
  • 429 Rate limited