VINFoundry

VIN Foundry API

Decode and generate VINs over JSON, with the NCIC make, colour and style codes that title and DMV work needs. No signup, no key, no quota beyond a rate limit that exists to keep the service up.

Base URL

Every path below hangs off https://vinfoundry.com/api/v1. Requests need no authentication header, and there is nothing to sign up for.

Endpoints

Endpoints
MethodPathWhat it does
GET/vin/generateGenerate up to 100 VINs, filtered.
GET/vin/decode/{vin}Decode one VIN, with NCIC codes.
POST/vin/decodeDecode up to 100 VINs in one request.
GET/vin/validate/{vin}Check structure and check digit. No database lookup.
GET/reference/makesMakes in the dataset, with counts.
GET/reference/modelsModels available for a make.
GET/reference/yearsModel years available.
GET/reference/body-stylesBody styles, with counts.
GET/reference/fuel-typesFuel types, with counts.
GET/reference/wmi/{wmi}What a WMI covers.
GET/ncic/makesNCIC make codes (VMA).
GET/ncic/colorsNCIC colour codes (VCO).
GET/ncic/stylesNCIC style codes (VST).
GET/ncic/make/{nameOrCode}Resolve a make either direction.
GET/healthLiveness.

Limits

  • 120 requests a minute per IP address across the API.
  • POST /vin/decode has a tighter budget of 30 a minute, and takes at most 100 VINs per request.
  • Request bodies are capped at 102,400 bytes.
  • Every response carries X-RateLimit-Limit, -Remaining and -Reset; a 429 adds Retry-After. All four are exposed through CORS, so browser code can read them.

What the data covers

Decoding and generation both run on NHTSA's VPIC database, which covers US-market vehicles only — cars sold or registered in the United States, model years 1980 to 2026. A brand never sold here is not in VPIC and so is not available here either, and neither is any pre-1981 vehicle, which predates the 17-character VIN.

Generated VINs use a genuine manufacturer prefix with a randomised serial, so they are structurally valid and decode correctly. The response reports synthetic: true on every one.

Schema and tooling