---
title: "Decode a VIN"
method: GET
path: "/v1/vin-decode/{vin}"
tags: ["VIN Decoding"]
---

# Decode a VIN

`GET /v1/vin-decode/{vin}`

## Request

- Base URL: `https://api.carstat.app`
- URL: `https://api.carstat.app/v1/vin-decode/{vin}`
- Auth: HTTP bearer

Decodes a VIN into the vehicle it identifies — manufacturer, model, model year, country of manufacture, vehicle class, series/trim labels and the build plant.

## Path parameters

- `vin` string, required

## Response `200`

successful

- VinDecodeResponse: A decoded VIN. Returned by GET /v1/vin-decode/{vin}, which performs no specification lookup: use it to identify or validate a VIN cheaply, and for vehicles the specification catalog does not cover. Every field is decoded from the VIN itself: the vehicle it identifies, the registered manufacturer and origin, the vehicle class, the VIN's own series/trim labels, the engine manufacturer, the check-digit verification and the manufacturing (build) plant. Body type, doors, drivetrain, fuel and engine specifications are not included: those are vehicle specifications, available from the specification endpoints. Each field is null when it cannot be determined from the VIN.
  - `vin` string, required: The VIN that was decoded, upper-cased.
  - `errors` string[], required: Non-fatal VIN validation warnings, if any.
  - `make` string, nullable, required: Manufacturer decoded from the VIN
  - `model` string, nullable, required: Model decoded from the VIN, normalised to the name used in the catalog. Null when the VIN identifies the manufacturer but not a specific model.
  - `year` integer, nullable, required: Model year decoded from VIN position 10
  - `wmi` string, nullable, required: World Manufacturer Identifier (VIN positions 1-3).
  - `manufacturer` string, nullable, required: Registered manufacturer name, e.g. "TESLA, INC." — distinct from the vehicle make/brand.
  - `region` string, nullable, required: Geographic region of manufacture, e.g. "ASIA", "NORTH AMERICA", "EUROPE".
  - `country` string, nullable, required: Manufacturing country decoded from the VIN/WMI.
  - `vehicle_type` string, nullable, required: Vehicle class registered for this VIN, e.g. "Passenger Car", "Truck", "Multipurpose Passenger Vehicle (MPV)". A broader classification than the body type in the spec candidates.
  - `series` string, nullable, required: Vehicle series / sub-model as decoded from the VIN.
  - `trim` string, nullable, required: Trim level as decoded from the VIN.
  - `engine_manufacturer` string, nullable, required: Company that built the engine, which is not always the vehicle's make. Not available for all manufacturers.
  - `check_digit` object, nullable, required: Verification of the VIN's check digit (position 9), which is derived from the other 16 characters. A mismatch usually means the VIN was mistyped or transcribed incorrectly; `expected` gives the character the rest of the VIN implies. Decoding still proceeds, since some regions do not use a check digit.
    - `actual` string, nullable: Check digit character present in the supplied VIN (VIN position 9).
    - `expected` string, nullable: Check digit character the rest of the VIN implies.
    - `is_valid` boolean, nullable: Whether the supplied check digit matches the expected one.
  - `plant` object, nullable, required: Manufacturing (build) plant decoded from the VIN. Null when the VIN does not encode a plant for this vehicle (not available for all manufacturers).
    - `country` string, nullable: Plant country.
    - `city` string, nullable: Plant city.
    - `state` string, nullable: Plant state or province. Not available for all plants.
    - `code` string, nullable: Plant code (VIN position 11).
    - `manufacturer` string, nullable: Plant operator/manufacturer.

## Other responses

- `400`: VIN could not be decoded
- `401`: unauthorized
- `402`: Insufficient prepaid credits; the query is not charged
- `403`: No activated prepaid credits or account under review
- `422`: Returned when the VIN cannot be decoded at all, for example an unrecognised manufacturer prefix or an incorrect VIN length
- `503`: Query pricing is temporarily unavailable; the query is not charged

---

[API](https://skmtc.dev/carstat/apis/rest-api-reference.md) · [All operations](https://skmtc.dev/carstat/apis/rest-api-reference/llms.txt) · [OpenAPI document](https://skmtc.dev/carstat/apis/rest-api-reference/revisions/4dc0a7ab42ec?raw)
