---
title: "The machine-readable rate card"
method: GET
path: "/v2/pricing"
tags: ["platform"]
---

# The machine-readable rate card

`GET /v2/pricing`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/pricing`
- Auth: none required

Credit rates per family + plan allowances, as JSON. Budget mid-task with this plus the X-Credits-* headers on every metered response. Unauthenticated.

## Response `200`

Rates, plans, credit headers

- Pricing
  - `version` integer, required: Monotonic rate-card version. Bump it on any price change.
  - `asOf` string, required: When this card took effect (ISO 8601)
  - `currency` string, required: ISO 4217, e.g. "USD"
  - `rates` object[], required: Only ENFORCED rates appear
    - `family` string, required: Billing family. The route groups (vin, entities, specs, listings, instruments, quotes, tape, recalls, safety, charging, feedback, documents, feeds) plus composite products (open set).
    - `unit` string, required: What one metered unit is: "request" | "vin" (batch = N units) | "check"
    - `credits` number, required: Credits debited per unit. 0 = unmetered class read.
    - `description` string
  - `plans` object[], required
    - `id` string, required: Stable plan id, e.g. "free", "starter", "growth", "enterprise"
    - `name` string, required
    - `monthlyPrice` number, nullable, required: Monthly base price in `currency`; null = sales-led (contact)
    - `monthlyCredits` integer, nullable, required: The monthly credit allowance; null = custom (sales-led)
    - `overage` object, required
      - `billed` boolean, required: true = past-allowance usage is billed, not blocked; false = hard stop (free tier)
      - `pricePerCredit` number, nullable, required: Overage price per credit in `currency`; null when overage is not billed
    - `rateLimits` object
      - `perMinute` integer, nullable, required: Token-bucket rate; null = plan-custom
    - `selfServe` boolean, required: true = instant key, no sales call
    - `requiresCard` boolean: false on the evaluation tier
    - `description` string
  - `packs` object[]: Prepaid one-time credit top-ups, all tiers (free included). Spend order per debit: allowance → packs (FIFO by purchase) → overage; packs expire 12 months after purchase.
    - `id` string, required: Stable pack id, e.g. "pack-250"
    - `credits` integer, required: Credits granted by one purchase
    - `price` number, required: One-time price in `currency`
    - `description` string
  - `customTopUp` object: Caller-chosen top-up amount at a flat per-credit rate (no volume bonus); mechanics identical to packs.
    - `ratePerCredit` number, required: Flat price per credit in `currency`; no volume bonus
    - `minCredits` integer, required: Smallest purchasable amount
    - `maxCredits` integer, required: Largest purchasable amount
    - `expiryMonths` integer, required: Months from purchase until unspent credits expire
  - `creditHeaders` string[]: The response headers that carry live budget state
  - `signupGrant` object: Present only while a signup credit grant is running: new accounts created before `endsAt` receive `credits` prepaid credits. Absent when no campaign is open.
    - `credits` integer, required: Credits granted to a new account
    - `endsAt` string, required: The last moment a signup qualifies (ISO 8601)
    - `expiryMonths` integer, required: Months until unspent granted credits expire
    - `description` string, required: Human-readable offer, e.g. plan-equivalent framing
  - `links` object: Related resources, keyed by relation name, each a server-relative path. Example: {"recalls": "/v2/recalls/entity/model-year:toyota/rav4/2021"}
  - `docs_url` string

## Other responses

- `429`: Per-minute rate limit exceeded
- `500`: Internal error

---

[API](https://skmtc.dev/cardog/apis/cardog-api-v2.md) · [All operations](https://skmtc.dev/cardog/apis/cardog-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/cardog/apis/cardog-api-v2/revisions/b9d48193126f?raw)
