---
title: "NHTSA campaigns for a VIN"
method: GET
path: "/v1/vehicles/{vin}"
---

# NHTSA campaigns for a VIN

`GET /v1/vehicles/{vin}`

## Request

- Base URL: `https://api.recallsapi.com`
- URL: `https://api.recallsapi.com/v1/vehicles/{vin}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Decodes the VIN with NHTSA vPIC, then answers like /v1/vehicles: campaigns plus live NHTSA consumer complaint counts (`complaints`).

## Path parameters

- `vin` string, required

## Response `200`

OK

- object
  - `vehicle` object: The vehicle as asked; for a VIN, as NHTSA vPIC decoded it.
    - `make` string
    - `model` string
    - `year` string
    - `vin` string, nullable: The VIN as checked (uppercase); null for a make, model and year lookup
    - `check_digit_ok` boolean: VIN lookups only: whether the 9th character matches the North American check digit (a false value does not block the lookup)
    - `canonical` object: The vehicle as recallsapi.com lists it, whichever spelling was asked: every spelling of a make and model answers the same.
      - `make` string: The make as its records print it (Mercedes-Benz, Ford)
      - `model` string, nullable: The model in its canonical spelling: NHTSA vPIC's when vPIC lists the model (F-250), else the spelling the records print most; null for records that do not state the model
      - `year` string
      - `key` string: The canonical make|model|year key, as in the reasons of each match
      - `page` string, nullable: The make, model and year page on recallsapi.com; null when no campaign is on record for it
  - `note` string
  - `matches` Match[]
    - `confidence` 'exact' | 'strong' | 'possible': exact: barcode or NDC package code; strong: identifier confirmed by brand or a distinctive model; possible: brand and name overlap or a weak identifier
    - `reasons` string[]
    - `recall` Recall
      - `id` string
      - `agency` 'CPSC' | 'FDA' | 'NHTSA' | 'USDA FSIS' | 'US Coast Guard' | 'FAA' | 'HUD' | 'NIOSH' | 'MSHA'
      - `source` 'cpsc' | 'fda_food' | 'fda_drug' | 'fda_device' | 'nhtsa' | 'fsis' | 'uscg' | 'faa' | 'hud' | 'niosh' | 'msha' | 'fda_press' | 'fda_hfcs' | 'fda_ires'
      - `source_id` string: The agency recall number, Federal Register document number, or a stable slug for notices without a number
      - `category` 'consumer_product' | 'food' | 'drug' | 'device' | 'vehicle' | 'vehicle_equipment' | 'tire' | 'child_seat' | 'meat_poultry' | 'boat' | 'aircraft' | 'manufactured_home' | 'respirator' | 'mine_equipment' | 'unclassified' | 'cosmetic' | 'tobacco' | 'biologic' | 'veterinary'
      - `title` string
      - `description` string, nullable
      - `hazard` string, nullable
      - `remedy` string, nullable
      - `classification` string, nullable: FDA and FSIS class (Class I, II, III), NHTSA recall type, Coast Guard recall type (Boat, Engine or equipment), Federal Register document type, or notice type
      - `status` string, nullable
      - `firms` string[]
      - `products` string[]
      - `distribution` string, nullable
      - `units` string, nullable
      - `flags` string[]
      - `recall_date` string, date, nullable
      - `report_date` string, date, nullable
      - `url` string, uri: Agency notice
      - `source_url` string, uri: Machine-readable source record
      - `first_seen` string, date-time: When recallsapi.com first stored this record
      - `as_of` string, date-time: When recallsapi.com last saw this record change
      - `identifiers` object[]
        - `kind` string
        - `value` string
        - `raw` string
  - `candidates` object[]: Empty unless matches is empty. Then: the models of the same year whose names start with the vehicle's model (or match vPIC's series) in the recall records, model level, each with its campaign count that year and its page on recallsapi.com. No campaign under the vehicle's own name does not mean the vehicle has no recall (see note).
    - `make` string
    - `model` string, nullable: Null for records that do not state the model
    - `year` string
    - `key` string: The canonical make|model|year key
    - `page` string: The model-year page on recallsapi.com
    - `campaigns` integer: Campaigns filed for that model and year (model level)
  - `complaints` object, nullable: Live consumer complaint counts from NHTSA for this make, model and year. Complaints are submitted by consumers and not verified by NHTSA; a count is not a safety determination. Null when NHTSA holds none or the live lookup fails or takes over 4 seconds.
    - `source` string
    - `make` string
    - `model` string
    - `year` string
    - `complaints_total` integer
    - `complaints_last_12_months` integer: By the date each complaint was filed
    - `last_complaint_date` string, nullable: ISO date the newest complaint was filed
    - `components` object: The 5 most-complained-about components, lowercased, with complaint counts
    - `crashes` integer
    - `fires` integer
    - `injuries` integer
    - `deaths` integer
    - `url` string: The public api.nhtsa.gov complaints URL for this vehicle
    - `truncated` boolean: Present and true only if NHTSA sent fewer records than its own count; per-record counts then cover the records sent
    - `note` string

## Other responses

- `400`: Invalid input
- `401`: Missing or invalid API key
- `429`: Daily quota reached

---

[API](https://skmtc.dev/recallsapi/apis/recallsapi-com.md) · [All operations](https://skmtc.dev/recallsapi/apis/recallsapi-com/llms.txt) · [OpenAPI document](https://skmtc.dev/recallsapi/apis/recallsapi-com/revisions/2501df40ea54?raw)
