Documentation

The Cardog API puts VIN identity, canonical specs, Canadian-market listings, live market data, and recalls behind one key. Every parameter is an entity ref or a VIN; every response links to its neighbours; every error tells you what to do next.

Reading this as an agent? Every page has a markdown twin — append .md to any docs URL or send Accept: text/markdown. The whole platform is one fetch: curl https://cardog.app/docs.md

Your first call

curl "https://api.cardog.app/v2/listings/search?make=make:tesla&limit=3" \
  -H "x-api-key: $CARDOG_API_KEY"

Guides

Quickstart

Your first three calls: resolve free text to refs, then query with them.

The Vehicle Graph

The data model behind every endpoint: typed entities, permanent refs, and the grains that connect a VIN to specs, recalls, and the live market.

The ref grammar

Hold the platform's identifier language offline: @cardog/entities validates, builds, and types refs with zero API calls — resolution is where the API begins.

Authentication

API keys, both accepted headers, and the plan limits — straight from the code.

API conventions

The mechanics every v2 group shares: encoding, response shape, null semantics, and the stability contract.

Credits & limits

One commercial currency across the platform: per-family rates, plan allowances, live budget headers, and what happens at the edge.

Errors

The v2 error envelope and a complete correction recipe for every well-known code.

Decode a Canadian VIN by API

One VIN in, one identity card out — entity refs, VIN grains, and links, for 99.77% of Canadian VINs.

Understanding VINs

VIN structure and standards — what the 17 characters mean.

Market data

Instruments, quotes, and the tape: how live listings become a priced, historied market grammar.

Transport Canada recall lookup by VIN, by API

Per-VIN recall checks with citable authority — Transport Canada + NHTSA fused — and entity-scoped sweeps for fleets.

The Cardog MCP server: vehicle data as five tools

Connect Claude, Cursor, VS Code, and any MCP client to Cardog vehicle data.

For agents

The agent-native contract: one-fetch docs, errors that instruct, resolve-first, link traversal, refs as memory, machine-readable pricing, and MCP.

API reference

Generated from the v2 contract — one page per route group. Groups marked soon are frozen contract whose routes land shortly; everything marked live is serving on https://api.cardog.app today.

SDKs

Typed clients for the whole v2 surface — the TypeScript client validates every response against the same contract schemas the API serves, and the Python SDK is generated from the OpenAPI artifact. Every reference operation below carries samples in both, next to its curl line.

npm
npm install @cardog/api
pip
pip install cardog
import { CardogClient } from "@cardog/api";

const client = new CardogClient({ apiKey: process.env.CARDOG_API_KEY });

const resolved = await client.v2.entities.resolve("2021 civic");
console.log(resolved.best);

The identifier language itself is also on npm — @cardog/entities validates, builds, and types refs with zero API calls (see The ref grammar):

npm
npm install @cardog/entities

VIN decoding, offline

The decoder behind /v2/vin also ships as an open-source package — full decode in-process, no network, Node / browsers / Workers.

npm
npm install @cardog/corgi

For agents

Every docs page has a markdown twin — append .md to any docs URL, or send Accept: text/markdown. The whole platform is one fetch:

curl https://cardog.app/docs.md