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
vinpath, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.modelyearquery · Model year hint, for VINs where the year cannot be read from the VIN.
Responses
200Decoded vehicle400Invalid VIN or model year429Rate 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
vinpath, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.modelyearquery · Model year hint, for VINs where the year cannot be read from the VIN.epaquery · `false` skips the EPA lookup.euquery · `false` skips the RDW lookup.
Responses
200Vehicle profile400Invalid VIN or model year429Rate 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
vinpath, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.modelyearquery · Model year hint, for VINs where the year cannot be read from the VIN.
Responses
200List of differing fields400Invalid VIN or model year429Rate limited502NHTSA did not answer
Catalog
Makes and models in the bundled dataset.
GET /api/v1/makes
Every make in the bundled dataset.
Responses
200Makes429Rate limited
GET /api/v1/models
Models of a make.
Parameters
makequery, required
Responses
200Models grouped by matching make400Missing make404Unknown make429Rate limited
vPIC drop-in
Same paths and JSON shape as vpic.nhtsa.dot.gov.
GET /vehicles/DecodeVinValues/{vin}
vPIC DecodeVinValues, answered offline.
Parameters
vinpath, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.formatquerymodelyearquery · Model year hint, for VINs where the year cannot be read from the VIN.cleanquery · `true` drops empty and "Not Applicable" values.
Responses
200vPIC envelope429Rate limited
GET /vehicles/DecodeVin/{vin}
vPIC DecodeVin (one row per variable), answered offline.
Parameters
vinpath, required · 3 to 17 characters: letters, digits or `*` wildcards. Partial VINs are decoded too.formatquery
Responses
200vPIC envelope429Rate limited
POST /vehicles/DecodeVINValuesBatch/
vPIC batch decode, up to 50 VINs per request.
Responses
200vPIC envelope with one result per entry400More than 50 entries, or an invalid VIN429Rate 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
vinpath, required · Full 17-character VIN (I, O and Q are not used in VINs).
Responses
200Recalls as returned by NHTSA400Invalid VIN429Rate limited