BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://statlyte.com/api/v1/models'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://statlyte.com/api/v1/models", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "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,
        "ca

Parameters

ParameterTypeRequiredDescription
(none)n/aOptionalThe models endpoint returns the full catalogue with no parameters.
/models/{provider}/{model}pathOptionalOne model's record by provider and model slug. anthropic/claude-opus-5
/changespathOptionalA feed of recent pricing and status changes, with an optional `limit`.
/history/{provider}/{model}pathOptionalHistorical price points for a single model.
/export.csvpathOptionalThe 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

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.