πŸ“– API Documentation

Plain-English guide to the VIN Decoder API. For interactive Swagger, see /docs.

Quick start

Decode any VIN with a single POST request:

curl -X POST https://YOUR-HOST/decode \
  -H "Content-Type: application/json" \
  -d '{"vin": "19XFB4F25DE200650"}'
πŸ’‘ Works with full 17-char VINs, partial VINs (9+ chars), or even just the WMI (3 chars). The decoder always returns whatever it can deduce.

Endpoints

POST/decode

Decode a single VIN. Returns make/model/year/engine/transmission/body and per-character breakdown.

Body

{"vin": "19XFB4F25DE200650"}

Response (truncated)

{
  "vin": "19XFB4F25DE200650",
  "make": "HONDA",
  "model": "Civic",
  "year": 2013,
  "engine_code": "LEA2",
  "engine_displacement": 1491,
  "transmission": "CVT",
  "fuel_type": "GASOLINE",
  "body_type": "Sedan",
  "country_rules": {...},
  "positions": [{"pos":1,"char":"1","name":"Country/Region","value":"North America"}, ...],
  "segments": [{"name":"WMI","value":"19X","positions":"1-3"}, ...]
}
POST/decode/batch

Decode up to 50 VINs in one request.

{"vins": ["VIN1", "VIN2", ..., "VIN50"]}
POST/decode/image

Upload a VIN plate photo, get OCR + decode.

curl -X POST https://YOUR-HOST/decode/image \
  -F "file=@vin_photo.jpg"
GET/recalls/{vin}

List active NHTSA recalls for the vehicle (US-market mostly). Cached 1h.

GET/image/{vin}

Get a representative Wikipedia thumbnail of the make/model/year. Cached 24h.

GET/validate/{vin}

Validate VIN format + ISO 3779 check digit (no DB hit, instant).

GET/search?make=&model=&year=&limit=

Reverse lookup β€” find WMI+VDS patterns matching a make/model/year.

curl "https://YOUR-HOST/search?make=TOYOTA&model=COROLLA&year=2020&limit=10"
GET/generate?make=&count=

Generate test VINs for development. count up to 50.

GET/health   GET/stats

Service health and dataset coverage metrics.

Progressive decoding

The decoder applies 6 layers of deduction in order:

  1. ISO 3779/3780 rules β€” region, country, year, plant code (works for any VIN)
  2. Exact WMI+VDS lookup β€” 900K+ decodable VDS codes in our DB
  3. NHTSA full-VIN fallback β€” official US decoder
  4. VDS fuzzy prefix match β€” tries 8β†’7β†’6β†’5β†’4 chars
  5. WMI aggregation β€” make/manufacturer from prefix
  6. NHTSA DecodeWMI β€” official manufacturer registry

Even unknown VINs get region/country/year/plant from pure ISO rules.

Country-aware

The decoder reads VINs differently depending on origin. BMW, Toyota, Honda, Tesla, etc. use their own VDS encoding schemes (60+ manufacturer schemes built in). Check digit validation is mandatory only for North American + Chinese VINs.

Censored / partial VINs

Sellers often mask serial digits: JTDKN3EE2D30XXXXX, WBAPH5C55BA2*****, JTD-KN3-DU5-?????. The decoder handles all of these β€” masking characters (X, *, ., ?, #, dashes, spaces) are stripped automatically.