Vehicle identity

Parts

Last updated:

OEM part numbers for a model year or a build, with the recalls that name them and the manufacturer's own parts store.

/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.
  1. 1The part numberpartNumber, as the maker prints it. ref is the join key.
  2. 2Where it sitscomponent.asPublished, the system the authority files it under.
  3. 3Why it is on recordrecalls: the campaigns that name it for this model year.
  4. 4Where to buy itacquire: the maker's official parts store.

Parts for a model year

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"

Example

6 keys
"response": {
"modelYearRef": "model-year:hyundai/ioniq-5/2022",
"grain": "model-year",
"total": 2,
"parts": [
0: {6 items},
1: {3 items}
],
"acquire": [
0: {4 items}
],
"coverage": {
"complete": false,
"sources": [1 item],
"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

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.
Every link goes to the manufacturer's own parts store.

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.