---
title: "Decode one VIN."
method: GET
path: "/v1/vin/{vin}"
tags: ["VIN"]
---

# Decode one VIN.

`GET /v1/vin/{vin}`

## Request

- Base URL: `https://open.wenmarpro.com`
- URL: `https://open.wenmarpro.com/v1/vin/{vin}`
- Auth: none declared

Spaces and dashes in the VIN are ignored and letters may be in either
case. A wrong check digit is not an error: `valid` is `false` and a
warning says so.

## Path parameters

- `vin` string, required

## Query parameters

- `year` integer

## Response `200`

The decode.

- VinDecode: A decoded VIN. A field that could not be determined is left out.
  - `base_price_usd` number, double, nullable: Manufacturer base price in US dollars, when NHTSA has one.
  - `body` string, nullable
  - `catalog` Selection: The catalog's answer for one decoded VIN.
    - `engine_id` string, nullable: The engine's id form, when the decode settles on one.
    - `entry` Entry, required: One vehicle of the catalog, down to whatever level was asked for.
      - `body` string, nullable
      - `drive` string, nullable
      - `engine` string, nullable
      - `id` string, required: The stable id. It stays the same from one data release to the next for as long as the names do.
      - `make` string, required
      - `model` string, required
      - `submodel` string, nullable
      - `summary` string, required: One line naming everything above that is known.
      - `transmission` string, nullable
      - `vehicle_types` string[], required: NHTSA's vehicle types for this model year, such as `Truck`.
      - `year` integer, required
    - `submodel_id` string, nullable: The submodel's id form, when the decode names exactly one.
    - `vehicle_id` string, required: The id of the year, make and model.
  - `check_digit` CheckDigit, required
    - `actual` string, required: What position 9 is.
    - `expected` string, required: What position 9 should be.
    - `valid` boolean, required
  - `doors` integer, nullable
  - `drivetrain` string, nullable
  - `engine` Engine
    - `configuration` string, nullable
    - `cylinders` integer, nullable
    - `displacement_cc` integer, nullable
    - `displacement_l` number, double, nullable
    - `electrification` string, nullable
    - `fuel` string, nullable
    - `label` string, nullable: The short name shops use, such as `2.0L Turbo` or `3.5L V6`.
    - `model` string, nullable
    - `turbo` boolean, nullable
  - `gvwr` string, nullable: Gross vehicle weight rating class, as NHTSA words it.
  - `make` string, nullable
  - `manufacturer` Manufacturer, required
    - `country` string, nullable
    - `name` string, required
    - `vehicle_type` string, nullable
    - `wmi` string, required: The manufacturer code: three characters, or six for a low-volume maker.
  - `model` string, nullable
  - `plant` Plant, required: Where the vehicle was built. `code` is position 11 of the VIN.
    - `city` string, nullable
    - `code` string, required
    - `company` string, nullable
    - `country` string, nullable
    - `state` string, nullable
  - `recalls` VinRecallCount: What a batch decode says of recalls when `include=recalls` is asked: how many campaigns may apply to the model year the VIN decodes to.
    - `count` RecallCount, required: How many recall campaigns list a model year, for each country. `null` for a country this server holds no recalls for; `0` when it holds them and none lists the model year.
      - `ca` integer, nullable
      - `us` integer, nullable
    - `do_not_drive` boolean, required: Whether any of them carries NHTSA's advisory not to drive.
    - `lookup` RecallLookup, required: Where to check one vehicle for open recalls. Neither government publishes recalls by VIN as data, so no answer here can say a recall applies to a VIN: these lookups can.
      - `maker` string, nullable: The maker's own lookup by VIN, where one is on file.
      - `nhtsa` string, required: NHTSA's lookup by VIN, for the United States.
      - `tc` string, required: Transport Canada's recall search, for Canada.
    - `may_apply` boolean, required: Always `true`. The count is for the year, make and model, not for the VIN: check the VIN at the addresses in `lookup`.
    - `park_outside` boolean, required: Whether any of them carries NHTSA's advisory to park outside.
  - `safety` Safety: Safety equipment as the manufacturer reported it: `Standard`, `Optional`, or a system type such as `Direct`.
    - `abs` string, nullable
    - `adaptive_cruise` string, nullable
    - `airbags_curtain` string, nullable
    - `airbags_front` string, nullable
    - `airbags_knee` string, nullable
    - `airbags_side` string, nullable
    - `auto_brake` string, nullable
    - `backup_camera` string, nullable
    - `blind_spot` string, nullable
    - `dynamic_brake_support` string, nullable
    - `esc` string, nullable
    - `forward_collision` string, nullable
    - `lane_centering` string, nullable
    - `lane_departure` string, nullable
    - `lane_keep` string, nullable
    - `park_assist` string, nullable
    - `pedestrian_braking` string, nullable
    - `rear_cross_traffic` string, nullable
    - `tpms` string, nullable: How tire pressure is monitored, as NHTSA words it, such as `Direct`.
    - `traction_control` string, nullable
  - `seat_rows` integer, nullable
  - `seats` integer, nullable
  - `series` string, nullable
  - `transmission` string, nullable
  - `transmission_speeds` integer, nullable
  - `trim` string, nullable
  - `valid` boolean, required: Whether the check digit, position 9, is right. Many genuine VINs from outside North America fail it.
  - `vin` string, required
  - `warnings` Warning[], required: Things to know about a decode that still succeeded.
    - `code` string, required: `invalid_check_digit`, `model_year_unknown`, `no_patterns` or `model_unresolved`. More may be added.
    - `message` string, required
    - `suggestions` string[]: VINs the caller may have meant.
  - `wheel_size_front` integer, nullable: Front wheel diameter in inches.
  - `wheel_size_rear` integer, nullable: Rear wheel diameter in inches.
  - `year` integer, nullable

## Other responses

- `400`: `invalid_vin`: wrong length or illegal characters. `details.suggestions` lists likely corrections.
- `404`: `not_found`: no manufacturer is registered for the first three characters.
- `429`: `rate_limited`: over 600 requests a minute. See `Retry-After`.

---

[API](https://skmtc.dev/wenmarpro/apis/wenmar-open.md) · [All operations](https://skmtc.dev/wenmarpro/apis/wenmar-open/llms.txt) · [OpenAPI document](https://skmtc.dev/wenmarpro/apis/wenmar-open/revisions/1027b548b6f0?raw)
