Credits & limits
One commercial currency across the platform: per-family rates, plan allowances, live budget headers, and what happens at the edge.
Everything commercial on the platform is denominated in credits — one currency across every route group, REST and MCP alike. A request's price depends on what it answers, not how many bytes it moves: registry reads are cheap, identity and market answers cost more.
The posted card below is version 5, as of 2026-07-27, in USD. It is what you are charged today.
GET https://api.cardog.app/v2/pricingis the authoritative copy — this page renders from the same module that endpoint serves, andversionis monotonic, so pin it if you price off our prices.
The rate card
| Family | Unit | Credits | What it covers |
|---|---|---|---|
vin | per vin | 2 | Identity decode; batch = N units (one per VIN decoded). |
entities | per request | 1 | Registry browse/resolve/dereference. |
specs | per request | 1 | Catalog + spec sheets. |
listings | per request | 1 | Search, count, facets, detail. |
instruments | per request | 5 | Symbology + instrument cards. |
quotes | per request | 5 | The live book (multi-quote = one request). |
tape | per request | 5 | Prints + daily bars. |
recalls | per vin | 5 | The authoritative per-VIN recall check — Transport Canada + NHTSA fused. |
recalls | per request | 1 | Recall entity/feed/stats reads (non-VIN). |
safety | per request | 1 | NCAP ratings + ODI complaints, keyed by model-year ref. |
Rates are per unit, and most units are one request. The exceptions meter
per VIN: batch decode charges one vin unit per VIN decoded (a failed row
costs nothing), and the recalls VIN check prices the compliance answer, not
the transport.
Plans
| Plan | Price | Credits / month | Past the allowance |
|---|---|---|---|
| Free | $0/mo | 50 | Hard stop (402) |
| Starter | $30/mo | 1,000 | Billed overage ($0.05/credit) |
| Pro | $100/mo | 5,000 | Billed overage ($0.04/credit) |
| Business | $500/mo | 25,000 | Billed overage ($0.03/credit) |
| Enterprise | Custom | Custom | Billed overage (contract rate) |
Two laws worth internalizing:
- Paid tiers are never blocked. Past the allowance, requests keep working and the excess is billed as overage. A production integration does not fall over because a month ran long.
- The free tier hard-stops. At the allowance, metered requests return
402 insufficient_creditsuntil the month resets or you upgrade. It is an evaluation tier, not a production tier.
The budget headers
Every metered response carries the live state of your budget:
X-Credits-RateX-Credits-RemainingX-Credits-AllowanceX-Credits-ResetX-Credits-Source
X-Credits-Rate is what this response cost (0 on non-2xx — errors are
free). One deliberate exception: 304 Not Modified on a conditional
request is debited at the route's rate — "unchanged as of now" is a
served answer, priced the same as the 200 it stands in for.
X-Credits-Remaining counts down against the allowance;
-1 in Allowance/Remaining means a custom plan that is not capped here.
X-Credits-Reset is when the month rolls over.
A worked sequence
A fresh free-tier key (50-credit allowance). First, a VIN decode — 2 credits:
curl -i "https://api.cardog.app/v2/vin/1HGCM82633A123456" -H "x-api-key: $CARDOG_API_KEY"X-Credits-Rate: 2
X-Credits-Allowance: 50
X-Credits-Remaining: 48
X-Credits-Reset: 2026-08-01T00:00:00.000ZThen a listings search (1 credit) and a market quote (5 credits):
X-Credits-Rate: 1
X-Credits-Allowance: 50
X-Credits-Remaining: 47
X-Credits-Reset: 2026-08-01T00:00:00.000ZX-Credits-Rate: 5
X-Credits-Allowance: 50
X-Credits-Remaining: 42
X-Credits-Reset: 2026-08-01T00:00:00.000ZRead the headers as you go and you can budget mid-task — "spend at most 20 credits answering this" is computable without a single extra call.
The free-tier stop
At the allowance, the free tier answers 402 with the standard
error envelope — and the budget headers, so even the refusal
tells you when the month resets:
Example
4 keysOne thing to plan for: your remaining balance is cached for up to a minute, so a fast burst can cross the allowance before the stop catches it. Those requests are charged. The stop then lands on the very next request — the overshoot is one request in practice, and never more than a minute's worth.
Budget like a machine
GET https://api.cardog.app/v2/pricing returns this entire card — rates, plans, header
names — as JSON, no auth required. If you are an agent (or writing one),
read it at integration time and again before long tasks; never hardcode a
rate. The card carries a monotonic version so you can detect change.