Pricing API

One endpoint returning the dataset behind the calculator: 24 token-priced models across 8 providers, 14 per-seat products, dated price history, and the verification date. Prices are re-verified daily against vendor pages; confirmed changes land the same day and the outgoing price moves into that model's history.

Endpoint

GET https://llmcostkit.com/api/v1/prices

No key, no auth. CORS is open, so you can call it from a browser. Responses are cached at the edge for up to an hour (cache-control: public, s-maxage=3600, max-age=600), which is also the freshness you should assume. Only GET and OPTIONS are accepted; anything else returns 405 with a JSON error body.

Response shape

Trimmed real response (one token model, one seat product):

{
  "meta": {
    "name": "LLM Cost Kit pricing dataset",
    "docs": "https://llmcostkit.com/api",
    "terms": "Free for reasonable use with attribution...",
    "updated": "2026-08-12",
    "prices_verified": "12 Aug 2026"
  },
  "tokens": [
    {
      "id": "sonnet",
      "p": "Anthropic",
      "m": "Claude Sonnet 5",
      "n": "Intro pricing; input rises to $3 from 1 Sep 2026",
      "i": 2,
      "o": 10,
      "hist": [ { "d": "2024-06", "i": 3, "o": 15, "cls": 1 } ]
    }
  ],
  "seats": [
    {
      "id": "m365e",
      "p": "Microsoft",
      "m": "M365 Copilot Enterprise",
      "pr": 30,
      "n": "Annual commit; requires M365 E3/E5/Business base licence"
    }
  ]
}

Field reference: tokens[]

FieldMeaning
idStable slug. Also the model page URL: /models/{id}.
pProvider name.
mModel display name.
i, oUSD per 1M input / output tokens, vendor list price.
nCaveat note (intro pricing, long-context meters, retirement dates, per-request fees). Null or absent when there is none. Read it before relying on the number.
hist[]Dated prior list prices: d (YYYY-MM), i, o. cls: 1 marks a predecessor-model comparison (the earlier price belongs to the previous model in the same line, not this exact model). Empty array means no earlier price on record.
bornWhen the model was first listed, for models with no history yet.

Field reference: seats[]

FieldMeaning
id, p, mSlug, provider, product name.
prUSD per user per month, the published annual-billing rate where both exist; the note carries the monthly rate.
nSeat minimums, credit quotas, licence prerequisites, monthly rates. Quotas differ a lot between products; list price is not value.

Examples

curl

curl -s https://llmcostkit.com/api/v1/prices | jq '.tokens[] | select(.p=="Anthropic") | {m, i, o}'

Python

import requests

data = requests.get("https://llmcostkit.com/api/v1/prices").json()
cheapest = min(data["tokens"], key=lambda t: t["i"])
print(f"Cheapest input tokens: {cheapest['m']} at ${cheapest['i']}/M")
# Always surface the caveat note if you display a price:
print(cheapest.get("n") or "no caveats")

JavaScript

const r = await fetch("https://llmcostkit.com/api/v1/prices");
const { tokens, meta } = await r.json();
const monthly = (t, reqDay, tin, tout) =>
  (reqDay * 30 * tin / 1e6) * t.i + (reqDay * 30 * tout / 1e6) * t.o;
console.log(meta.prices_verified,
  tokens.map(t => [t.m, monthly(t, 1000, 1500, 400).toFixed(2)]));

Versioning and stability

The shape is versioned in the path. Within v1, fields get added, never removed or renamed. If v2 ever exists, v1 keeps working. The updated date changes daily; prices_verified changes when the underlying prices were last confirmed against vendor pages.

Terms

Free for reasonable use with two conditions: attribute "LLM Cost Kit" with a link to llmcostkit.com wherever the data is shown, and represent the numbers as what they are, vendor list prices re-verified daily, not a billing feed. No key is needed at current volumes; if your usage is heavy enough to notice, or you need a commercial licence without attribution or guaranteed support, email hello@llmcostkit.com.

Part of LLM Cost Kit. The paid kit includes a FOCUS™ converter that uses this dataset to compute ListCost for AI vendor invoices. Independent; no vendor affiliation.