# Parts


`/v2/parts/{ref}` answers which manufacturer part numbers are on record for
a vehicle, why each one is on record, and where to buy it **from the
manufacturer**. Ask by model year, or by build code and get the answer for
that build's model year.

![Line drawing of a generic crossover in side view with three parts drawn out above it on dashed lines: a control module over the front, a gear selector over the cabin and a brake caliper over the rear wheel, each with a blank parts tag.](https://cardog.app/images/docs/parts-exploded.png)

### Parts for a model year

```bash
curl "https://api.cardog.app/v2/parts/model-year:hyundai%2Fioniq-5%2F2022" \
  -H "x-api-key: $CARDOG_API_KEY" \
  -H "Cardog-Version: 2026-10-26"
```

```json
{
  "modelYearRef": "model-year:hyundai/ioniq-5/2022",
  "grain": "model-year",
  "total": 2,
  "parts": [
    {
      "ref": "part:hyundai/364001xaa0",
      "partNumber": "36400-1XAA0",
      "name": "ICCU ASSEMBLY",
      "description": "Integrated Charging Control Unit",
      "component": { "asPublished": "ELECTRICAL SYSTEM:PROPULSION SYSTEM:CHARGING:MODULE:SOFTWARE" },
      "recalls": ["recall:nhtsa/24v868000", "recall:nhtsa/24v204000"]
    },
    { "ref": "part:hyundai/4295118110", "partNumber": "42951-18110", "name": "SBW CONTROL UNIT" }
  ],
  "acquire": [
    { "make": "make:hyundai", "market": "CA", "name": "Hyundai Canada Parts", "url": "https://parts.hyundaicanada.com/" }
  ],
  "coverage": { "complete": false, "sources": ["gov:nhtsa"], "unpaired": 1 }
}
```

`partNumber` is the number as the manufacturer prints it, the string a
parts counter or a checkout searches for. `ref` is the join key: separators
are dropped, so `04465-0E010` and `044650E010` are the same part. Every
part carries `sources`, the documents that name it, with their dates, and
`recalls`, the campaign refs among them. Follow one to
`/v2/recalls/{ref}`.

### A build code is answered at its model year

```bash
curl "https://api.cardog.app/v2/parts/nano:KM8KM4ABNU" \
  -H "x-api-key: $CARDOG_API_KEY" \
  -H "Cardog-Version: 2026-10-26"
```

The answer is the same as for the build's model year, and `grain` says so:
`"model-year"`. A part listed for a model year **applies to some builds of
it**, not necessarily to every vehicle. From a VIN, `GET /v2/vin/{vin}`
links `parts` (the model year) and `partsBuild` (the build code).

### Pairing, and the `unpaired` count

A recall that covers several vehicles and several parts is filed as every
part against every vehicle. Read naively, campaign `24V204000` puts the
GV60's charging unit on the IONIQ 5. A part is listed for a model year only
when the pairing is certain (one vehicle or one part in the campaign), or
when the manufacturer's own description names that model. A number the
campaign names without saying which vehicle it belongs to is counted in
`coverage.unpaired` and never listed. Listing it would claim a fit the
record does not make.

### Where to buy

![Line drawing of a control module resting in an open parts box, a blank parts tag tied to it.](https://cardog.app/images/docs/parts-box.png)

`acquire` at the top lists the manufacturer's official parts stores for the
make, by market, Canada first. A part's own `acquire` links, when present,
open that number on the official store. Every link goes to the
manufacturer's own site, never to a reseller. There are no prices: the
store has the current one.


### What the list covers today

The part numbers manufacturers file with their recalls: about 14,000
numbers across every make NHTSA records. `coverage.complete` is always
`false`. This is the parts named on the public record, not the full
catalogue for the vehicle, and `coverage.sources` says where each answer
came from. More sources land in the same response without changing its
shape.

Errors: a ref that is not a model year or a build code is a 400
`invalid_ref`. A model year we have no record of is a 404. A model year
with nothing on record is a 200 with `total: 0`. Parts costs 3 credits a
request. Every field is in the [reference](https://cardog.app/docs/reference/parts).


---

Previous: [Window stickers by VIN](https://cardog.app/docs/window-sticker.md) (Vehicle identity)
Next: [Feeds](https://cardog.app/docs/feeds.md) (Vehicle identity)
