---
title: "Search vehicle specifications by VIN"
method: GET
path: "/v1/specs/vin/{vin}"
tags: ["Vehicle Specifications"]
---

# Search vehicle specifications by VIN

`GET /v1/specs/vin/{vin}`

## Request

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

Searches the specification catalog by VIN and returns every published specification sheet that matches the vehicle the VIN identifies — engine, dimensions, fuel economy, drivetrain and the rest of the 250+ fields, plus the single most likely match. This is a specification search keyed on a VIN, not VIN decoding: for the VIN's own decoded attributes — manufacturer, country of manufacture, vehicle class, series and trim labels, check digit and build plant — call GET /v1/vin-decode/{vin} instead. Requires credit access; charged at the published specifications-by-VIN rate.

## Path parameters

- `vin` string, required

## Response `200`

successful

- VinSpecsResponse
  - `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. Some manufacturers encode a specific trim where the catalog lists the wider model line; this field is then the model line the specifications were found under, and the trim is available from the VIN decoding endpoint. Null when the VIN identifies the manufacturer but not a specific model.
  - `year` integer, nullable, required: Model year decoded from VIN position 10
  - `match_confidence` 'exact' | 'narrowed' | 'ambiguous', required: How precisely the VIN resolved to a single trim: 'exact' (one candidate remains), 'narrowed' (reduced but several remain), or 'ambiguous' (the VIN does not distinguish the remaining trims). A successful response always contains at least one candidate; when none can be found the endpoint returns 404. A VIN cannot encode trim/options for most makes, so a single result is not guaranteed.
  - `matched_on` string[], required: Decoded signals that discriminated between trims, e.g. engine_code, cylinders, displacement, fuel, body, drive_type.
  - `best_match` object, nullable, required: The single most likely modification specification for the VIN (top-ranked candidate).
  - `candidates` object[], required: Matching modification specifications, narrowed to the trims consistent with the decoded VIN.

## Other responses

- `401`: unauthorized
- `402`: Insufficient prepaid credits; the query is not charged
- `403`: No activated prepaid credits or account under review
- `404`: Returned when the VIN is valid but no specifications are published for that vehicle
- `422`: invalid VIN
- `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)
