API reference
Parts
Last updated:
OEM part numbers by model year, linked to the manufacturer's official parts store
/v2/parts/{ref}since 2026-10-26OEM part numbers for a model year or build code, with where to buy them
The manufacturer part numbers on record for a model year, each with the document that names it and, where known, a link to that number on the manufacturer's official parts store. The root `acquire` lists the official stores for the make by market. Parts apply at the model-year grain: a part listed applies to some builds of the model year, not necessarily every vehicle. A `nano:` ref is answered at its model year. Today's source is the part numbers manufacturers file with NHTSA recalls, so `coverage.complete` is false: this is not the full catalogue. No prices; the store has the current one.
Path parameters
refstringrequiredA model-year: or nano: ref. Slashes in refs must be URL-encoded (%2F).
curl "https://api.cardog.app/v2/parts/model-year:hyundai%2Fioniq-5%2F2022" \
-H "x-api-key: $CARDOG_API_KEY"Response
200PartsrefstringThe queried ref
grain"model-year"The grain the parts apply at. "model-year": each part applies to some builds of the model year, not necessarily every vehicle. A nano request is answered at this grain.
modelYearRefstringEntity ref ({domain}:{key}) in the "model-year" domain. Example: "model-year:toyota/rav4/2021"
totalintegerpartsobject[]refstringEntity ref ({domain}:{key}) in the "part" domain. Example: "part:hyundai/4295118110"
partNumberstringThe number as the manufacturer printed it, e.g. "42951-18110"
makestringThe make the part is sold under
namestring | nullThe manufacturer's name for the part
descriptionstring | nullcomponentobject | nullThe component the part belongs to. A ref into the shared component tree joins this object when the tree ships (additive).
asPublishedstringThe system it belongs to, verbatim as the authority files it, e.g. "PARKING BRAKE:ELECTRICAL:CONTROL MODULE:SOFTWARE". The same field name recall rows use for the same text.
sourcesobject[]sourcestringWho published it, as an ocean source id, e.g. "gov:nhtsa"
refstringThe document that names the part (today: the recall campaign it was filed with)
observedAtstring | nullWhen that document was published (ISO date); null if undated
recallsstring[]The recall campaigns that name this part for this model year: the distinct recall refs among sources.
acquireobject[]optionalThis number on the manufacturer's official store, where a link to it is known. Absent otherwise; use the root acquire stores.
market"CA" | "US"Market the store sells into
kind"search" | "product""search" opens the store's search for this number; "product" opens the part's own page
urlstring (uri)acquireobject[]The manufacturer's official parts stores for this make, by market. Empty when none is on file.
makestringEntity ref ({domain}:{key}) in the "make" domain. Example: "make:toyota"
market"CA" | "US"Market the store sells into
namestringThe store's own name, e.g. "Hyundai Canada Parts"
urlstring (uri)The store's home page (absolute URL on the manufacturer's site)
coverageobjectcompletefalseAlways false today: the list is the part numbers named on the public record, not the full catalogue for the vehicle
sourcesstring[]Sources the list is built from, e.g. ["gov:nhtsa"]
unpairedintegerPart numbers a document names for several vehicles at once without saying which is this one's (a multi-vehicle recall filed as a cross product). Not in parts: listing them would claim a fit the record does not make.
linksobjectoptionalRelated resources, keyed by relation name, each a server-relative path. Example: {"recalls": "/v2/recalls/entity/model-year:toyota/rav4/2021"}
Example response
8 keysErrors400401402404429500every non-2xx body is the error envelope
Generated from the contract. Machine-readable spec: GET https://api.cardog.app/v2/openapi.json · markdown twin: /docs/reference/parts.md
Was this helpful?