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.
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.
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 | Meaning |
|---|---|
id | Stable slug. Also the model page URL: /models/{id}. |
p | Provider name. |
m | Model display name. |
i, o | USD per 1M input / output tokens, vendor list price. |
n | Caveat 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. |
born | When the model was first listed, for models with no history yet. |
| Field | Meaning |
|---|---|
id, p, m | Slug, provider, product name. |
pr | USD per user per month, the published annual-billing rate where both exist; the note carries the monthly rate. |
n | Seat minimums, credit quotas, licence prerequisites, monthly rates. Quotas differ a lot between products; list price is not value. |
curl -s https://llmcostkit.com/api/v1/prices | jq '.tokens[] | select(.p=="Anthropic") | {m, i, o}'
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")
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)]));
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.
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.