Statlyte API
Free LLM pricing API with no key: per-model input, output, cache and batch rates, context windows, status and scheduled price changes. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Statlyte API?
Statlyte publishes a curated reference of large language model pricing with no API key. Each model returns its provider, API identifier, lifecycle status, context window and a full breakdown of USD-per-million-token rates including cache and batch tiers.
Comparing model costs is harder than comparing two numbers, because the headline input and output rates are only part of the bill. Statlyte's `usd_per_mtok` object breaks out `cache_write_5m`, `cache_write_1h`, `cache_read`, `batch_input` and `batch_output` alongside the base rates — which is what you need to model an actual workload, where cache hits and batch processing routinely change the total by an order of magnitude.
Two fields make it usable for planning rather than just for a table. `status` marks whether a model is generally available, in preview or deprecated, so you can avoid building on something being retired. `scheduled_change` carries an announced future price change where one has been published, which no other free source of this kind reliably tracks. Prices here are already per million tokens, unlike catalogues that quote per single token, and `updated_at` at the top tells you exactly how current the snapshot is. There is a CSV export at `/api/v1/export.csv` for spreadsheet work.
Quick facts
- Base URL
https://statlyte.com/api/v1- Authentication
- No API key and no account.
- Rate limit
- No published limit. Pricing changes rarely — cache and check `updated_at`.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Statlyte API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the LLM pricing reference
GET https://statlyte.com/api/v1/models
curl 'https://statlyte.com/api/v1/models'const res = await fetch("https://statlyte.com/api/v1/models");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://statlyte.com/api/v1/models", timeout=20)
res.raise_for_status()
print(res.json()){
"updated_at": "2026-08-14",
"source": "https://statlyte.com/models",
"count": 168,
"models": [
{
"id": "anthropic/claude-fable-5",
"provider": "anthropic",
"name": "Claude Fable 5",
"api_id": "claude-fable-5",
"status": "ga",
"modality": "text",
"context_window": 1000000,
"usd_per_mtok": {
"input": 10,
"output": 50,
"cache_write_5m": 12.5,
"cache_write_1h": 20,
"cache_read": 1,
"batch_input": 5,
"batch_output": 25
},
"non_token_price": null,
"scheduled_change": null,
"url": "https://statlyte.com/models/anthropic/claude-fable-5"
},
{
"id": "anthropic/claude-mythos-5",
"provider": "anthropic",
"name": "Claude Mythos 5",
"api_id": "claude-mythos-5",
"status": "preview",
"modality": "text",
"context_window": 1000000,
"usd_per_mtok": {
"input": 10,
"output": 50,
"cache_write_5m": 12.5,
"cache_write_1h": 20,
"cache_read": 1,
"batch_input": 5,
"batch_output": 25
},
"non_token_price": null,
"scheduled_change": null,
"url": "https://statlyte.com/models/anthropic/claude-mythos-5"
},
{
"id": "anthropic/claude-opus-5",
"provider": "anthropic",
"name": "Claude Opus 5",
"api_id": "claude-opus-5",
"status": "ga",
"modality": "text",
"context_window": 1000000,
"usd_per_mtok": {
"input": 5,
"output": 25,
"cache_write_5m": 6.25,
"caParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(none) | n/a | Optional | The models endpoint returns the full catalogue with no parameters. |
/models/{provider}/{model} | path | Optional | One model's record by provider and model slug. anthropic/claude-opus-5 |
/changes | path | Optional | A feed of recent pricing and status changes, with an optional `limit`. |
/history/{provider}/{model} | path | Optional | Historical price points for a single model. |
/export.csv | path | Optional | The whole dataset as CSV. |
Response fields
updated_atstring- Date the dataset was last refreshed, `YYYY-MM-DD`. Check it before quoting figures.
countinteger- How many models are in the catalogue.
sourcestring- Link to the human-readable version of the same data.
models[].idstring- Composite `provider/model` identifier.
models[].provider / namestring- Provider slug and the model's display name.
models[].api_idstring- The identifier you actually send to the provider's API, which frequently differs from the display name.
models[].statusstring- Lifecycle stage — `ga`, `preview` or deprecated. Avoid building on anything not generally available.
models[].modalitystring- What the model handles, such as `text`.
models[].context_windowinteger- Maximum context in tokens.
models[].usd_per_mtokobject- Rates per million tokens: `input`, `output`, `cache_write_5m`, `cache_write_1h`, `cache_read`, `batch_input`, `batch_output`. Already per million, not per token.
models[].non_token_priceobject- Charges not measured in tokens, such as per-image or per-request fees. Null for most models.
models[].scheduled_changeobject- An announced future price or status change, where one has been published. Null otherwise.
models[].urlstring- Link to the model's page on Statlyte.
What you can build with the Statlyte API
- Model the real cost of a workload including cache and batch tiers
- Build a model comparison table with current pricing
- Warn when a model you depend on is deprecated or has a scheduled change
- Export the dataset to a spreadsheet for finance review
Common errors and how to fix them
Costs off by a factor of a million
These rates are already per million tokens.
Fix: Do not multiply again. Catalogues differ on this convention, so check before combining sources.
Provider rejects the model name
`name` is a display label, not an identifier.
Fix: Send `api_id`, which is the string the provider's API actually accepts.
Cost estimate too high
Cache and batch tiers were ignored.
Fix: A cache read is a fraction of the input rate. Model your actual hit rate rather than assuming everything is a fresh prompt.
Stale figures
The dataset is refreshed periodically, not live.
Fix: Read `updated_at`, and use the `/changes` feed to see what moved recently.
Statlyte API — frequently asked questions
Is the Statlyte API free?
Yes, free with no key and no account, including the CSV export.
Are the prices per token or per million tokens?
Per million tokens, as the `usd_per_mtok` field name says. That differs from catalogues that quote per single token, so be careful when combining sources.
What are the cache_write and cache_read rates?
Prompt caching tiers. Writing a prompt to cache costs more than a normal input token; reading it back costs far less. For a workload with a stable system prompt they dominate the bill, which is why the breakdown matters.
Can I see historical pricing?
Yes. `/history/{provider}/{model}` returns past price points for one model, and `/changes` gives a feed of recent movements across the catalogue.
Tools that pair with this API
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Statlyte is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.