OpenAI-compatible API

The cheapest model that's good enough, for every step of your pipeline.

As good as each step needs, on graded evidence. Typically 90%+ cheaper than the top-scoring model.

Median saving across 54 tasks at the benchmark’s default quality step, Balanced · snapshot 2026-10-31 · See the numbers →

from openai import OpenAI

client = OpenAI(
    base_url="https://api.fronset.ai/v1",
    api_key="llmb_i_…",
)

raw = client.chat.completions.with_raw_response.create(
    model="structured-content-summarization",  # a task
    messages=[],  # the task's own template builds the prompt
    extra_body={"llmbench": {"prompt_vars": {
        "content_text": article_text,
        "content_title": article_title,
        "content_type": "news article",
        "content_url": article_url,
        "summary_structure": "## Key points\nThe three facts a reader needs.",
    }}},
)
# which model answered, and what its answer cost at list price
print(raw.headers["x-llmbench-model"])
print(raw.headers["x-llmbench-cost-usd"])
# how much evidence we have for it (can be absent)
print(raw.headers.get("x-llmbench-band"))
summary = raw.parse().choices[0].message.content
Your OpenAI code with a different base URL. model names the task, the task’s template renders your variables, and the headers tell you what ran.

Name the task, not the model. Fronset runs each call on the cheapest LLM measured good enough for that task, checks the output against your schema, and tells you which model answered and what it cost.

How it works

1. You name the task. Put a task in model: one from our catalogue, or one you created first.

2. We pick the model. Panels of LLM judges grade real outputs of that task, and every score carries a confidence band. The cheapest model that meets the task’s quality step runs your call. While a new task is still being measured, some calls are compared across a few models. How routing works →

good enoughcheapestpriciest
Schematic. Each bar is a model, cheapest to priciest; the dashed line is good enough for the task. We route to the cheapest model that clears it.

3. You see what happened. Every response names the model and provider that answered and the cost at list price, and shows how much evidence we have for that model once there is some. The task’s own status tells you whether it is still being measured.

The best model is usually overkill

A pipeline step needs a certain quality; past it, a better model is headroom you pay for and don’t use. At the benchmark’s default quality step, the top-scoring model costs on average 30.9× as much per run as the cheapest model that meets it for Structured Data & Fact Extraction, and 21.1× for Relevance, Classification & Matching. See the numbers → (benchmark snapshot 2026-10-31, default quality step Balanced, a set share of each task’s best score; batch prices where the provider offers them)

On real traffic: one month of our internal customer’s 198,167 calls cost $766.79 through Fronset, every fee included, against $2,838.43 had every call run on Claude Sonnet 5, at similar judged quality. Read the case study →

Built for pipeline steps

  • OpenAI-compatible. Change the base URL and the key, and set model to a task slug.
  • Batch. Keep your OpenAI batch format: one task for the whole file, and each line runs at the provider’s batch rate (50% off at Anthropic, OpenAI, Gemini and Alibaba). The discount is yours.
  • Structured output. On one of our tasks the schema comes with the task; on a task of your own, give us your JSON schema, on your keys or ours. Either way, output that doesn’t match is repaired, or retried on another model.
  • Nothing hidden. Parameters we ignore are listed in the response.

Pricing

No markup on model usage. The first 10,000 calls a month carry no fee, on every plan. After that: $2.00 per 1,000 calls up to 50,000, $1.50 up to 250,000, and $1.00 beyond. Buying credit costs 5.5% (minimum $0.80). On our provider accounts, while one of our tasks is still being measured, model usage is billed at the provider’s list price and every model call behind your request is on your invoice at cost; once the task settles, it bills at the task’s published rate, set from measured cost. A task of your own is always billed at list price: we never put it on a published rate. Bring your own provider keys instead and your provider bills you directly, comparison calls included; you then pay us only the per-call fee.

  • Free: $0, paid for with data. We keep the prompts you send, word for word, may re-run them on new models, and pool the quality grades from your calls on our tasks with other customers’. Pooling can’t be undone. Send no personal data on it.
  • shared_anon: $49 a month or $490 a year. Keeps your prompt text off the call record. A batch keeps a working copy while it runs; grades from your calls on our tasks are still pooled. Stored templates may be adopted into our shared library and republished.
  • private: by conversation. Grades stay in your account, and templates are never republished. Write to us.

Upgrade before your first call: each call is stored under the plan in force when it runs. Full pricing →

The benchmark, and us

We publish the Fronset Benchmark — the right-sized LLM benchmark — at fronset.ai/benchmark/, and we sell the API that routes on it. For the catalogue tasks, the numbers on the benchmark are the numbers the router uses: 27 models and 54 tasks in the 2026-10-31 snapshot. How we keep that honest → · The conflict, and how we handle it →