Plain-English guide to the VIN Decoder API. For interactive Swagger, see /docs.
Decode any VIN with a single POST request:
curl -X POST https://YOUR-HOST/decode \
-H "Content-Type: application/json" \
-d '{"vin": "19XFB4F25DE200650"}'
Decode a single VIN. Returns make/model/year/engine/transmission/body and per-character breakdown.
{"vin": "19XFB4F25DE200650"}
{
"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"}, ...]
}
Decode up to 50 VINs in one request.
{"vins": ["VIN1", "VIN2", ..., "VIN50"]}
Upload a VIN plate photo, get OCR + decode.
curl -X POST https://YOUR-HOST/decode/image \ -F "file=@vin_photo.jpg"
List active NHTSA recalls for the vehicle (US-market mostly). Cached 1h.
Get a representative Wikipedia thumbnail of the make/model/year. Cached 24h.
Validate VIN format + ISO 3779 check digit (no DB hit, instant).
Reverse lookup β find WMI+VDS patterns matching a make/model/year.
curl "https://YOUR-HOST/search?make=TOYOTA&model=COROLLA&year=2020&limit=10"
Generate test VINs for development. count up to 50.
Service health and dataset coverage metrics.
The decoder applies 6 layers of deduction in order:
Even unknown VINs get region/country/year/plant from pure ISO rules.
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.
Sellers often mask serial digits: JTDKN3EE2D30XXXXX, WBAPH5C55BA2*****, JTD-KN3-DU5-?????. The decoder handles all of these β masking characters (X, *, ., ?, #, dashes, spaces) are stripped automatically.