The short version. The difference is not how many models sit behind the API. OpenRouter gives you one API to its models: you choose which one runs, or let its Auto Router pick by what other OpenRouter users spend on, and it picks a provider by price, speed and uptime. Fronset chooses the model for you: you name a task, and each call runs on the best-value model for that job, the cheapest one that graded outputs of the task show is good enough. By default we run the models we use today, and we can add any model OpenRouter offers when a customer asks. For chat, streaming or tools, use OpenRouter. For batch and background steps, you may want both.

First, a disclosure. OpenRouter is one of our providers. Eleven of the models we serve, among them NVIDIA’s Nemotron 3 models and MiniMax M3, run through our OpenRouter account. Because of that account, any model OpenRouter offers can be added to our set on request. What we add is the choice between models, made on graded outputs of your task.

OpenRouterFronset
What you put in modelA model, a router such as openrouter/auto, or a saved preset 1 2A task. We choose the model
How the model is chosenBy default, providers weighted by price, skipping recent outages; or sorted by price, throughput or latency 3. The Auto Router ranks models by what OpenRouter users spent on them over the last seven days 4From graded outputs of the task: judges score the answers, each model gets an evidence band, then the cheapest model that meets the bar serves, by observed cost per run
Quality measured on your taskNo. OpenRouter publishes benchmarks and grades providers’ tool calls 5 6Yes. While a task is being measured, a call can run several models and a judge picks the answer. After that, a sample of calls is judged, and a task can keep comparing a small share of calls
Structured outputPassed to the provider. Opt-in Response Healing fixes JSON syntax, with no schema check 7 8Every answer is checked against the task’s schema, then repaired or retried on another model. On one of our tasks the schema is the task’s own, and a schema you send is refused. On a task of your own the schema is yours
Streaming, tools, conversationsYes 9 10No streaming (refused with a 400) and no tools. One turn per call: one of our tasks runs its own template, so you send messages: [] and your content as its variables; a pass-through task of your own takes your messages, with at most one user message
Models500+ from 80+ providers 11By default, the 47 text models we run today, from 9 provider accounts (free and paid versions of a model counted once). Any model OpenRouter offers can be added on request. Either way you don’t pick from the list: each call runs the best-value model for the task
BatchInline JSON requests, a 24-hour window, “typically billed at 50%” 12The OpenAI batch format: JSONL files, /v1/files and /v1/batches, one task per file. Lines on one of our tasks send their variables, not messages; a pass-through task of your own takes OpenAI message lines unchanged. Each line is billed as a single call would be, at the provider’s batch rate where it has one
Markup on model usageNone 13None. On one of our tasks with a published rate, model usage is billed at that rate, not at the price of the model that ran: the rate is set from measured cost, with no markup, and corrected in both directions as costs move. While a task is being measured, and always on a task of your own, every model request behind your call is billed at the provider’s price
Buying credit5.5% by card, $0.80 minimum; 5% in crypto. 8% on the Business plan 13 145.5% of the purchase, $0.80 minimum
Fee per requestNone, except for some server tools 14The first 10,000 calls a month carry none, on every plan. Then $2.00, $1.50 and $1.00 per 1,000 calls in marginal bands. Once per call, however many models it runs, and not on a call that fails
Your own provider keysOn the pay-as-you-go plans, free up to $25,000 a month of list-price usage, then 5% 14 15Only the per-call fee. Your provider bills you directly for every model request your call makes, including the comparison and judge calls while a task is being measured. If your keys can run no judge model, calls are not judged and no comparison runs
Which model ranThe response’s model field, with usage.cost 16Headers and a llmbench body object: the model, its provider, its list cost, its evidence band on this task and the task’s phase
Free tierFree models, capped at 20 requests a minute and 50 a day (1,000 a day after $10 of purchases) 17A $0 plan, not free usage: you still pay for model usage and, after 10,000 calls a month, the per-call fee. It is paid for with data: we keep your prompts word for word, may re-run them on new models, and pool the grades from your calls on our tasks irreversibly. Send no personal data on it
Prompts and answersNo prompt logging unless you opt in 13Free plan: prompts and the model’s answers kept. shared_anon ($49 a month): prompt text never written to the call record, and the answer deleted once it has been delivered and evaluated (an undelivered answer is kept at most 72 hours); grades from your calls on our tasks still pooled. private, sold by conversation: the same, and grades stay in your account. A batch keeps a working copy while it runs, on every plan. Choose your plan before your first call: each call is stored under the plan in force when it runs

When OpenRouter is the better choice

  • You need streaming, tools, conversations or images.
  • You want to choose the exact model for each call yourself.
  • You bring your own keys at volume. OpenRouter charges nothing for that until your list-price usage passes $25,000 a month 14 15. We charge the per-call fee after 10,000 calls a month: $1,130 a month at a million calls.
  • You want free models without paying for usage 17, or no prompt logging on a free account 13.

When Fronset is the better choice

  • The step has a quality bar, and you don’t want to re-run an eval every time a model ships.
  • You want every answer checked against a schema, and repaired or retried, before it reaches you.
  • You run batch files in the OpenAI format and want each line at batch rates across providers. On a pass-through task of your own your files run unchanged; on one of our tasks each line sends its variables instead of messages.
  • You want the evidence behind the model with every response.

We last checked the facts about OpenRouter on 12 October 2026 from its public pages, which the footnotes link. Prices and features change. If something here is out of date, write to support@kapualabs.com and we’ll correct it.


  1. openrouter.ai/docs/llms.txt. Fetched 2026-10-12. ↩︎

  2. OpenRouter: Presets. Fetched 2026-10-12. ↩︎

  3. OpenRouter: Provider selection. Fetched 2026-10-12. ↩︎

  4. OpenRouter: Auto Router and Introducing the new Auto Router. Fetched 2026-10-12. ↩︎

  5. OpenRouter: Benchmarks. Fetched 2026-10-12. ↩︎

  6. OpenRouter: Auto Exacto. Fetched 2026-10-12. ↩︎

  7. OpenRouter: Structured outputs. Fetched 2026-10-12. ↩︎

  8. OpenRouter: Response Healing. Fetched 2026-10-12. ↩︎

  9. OpenRouter: Streaming. Fetched 2026-10-12. ↩︎

  10. OpenRouter: Tool calling and changelog. Fetched 2026-10-12. ↩︎

  11. openrouter.ai. Fetched 2026-10-12. ↩︎

  12. OpenRouter: Batch quickstart. Fetched 2026-10-12. ↩︎

  13. OpenRouter: FAQ. Fetched 2026-10-12. ↩︎ ↩︎ ↩︎ ↩︎

  14. OpenRouter: Pricing. Fetched 2026-10-12. ↩︎ ↩︎ ↩︎ ↩︎

  15. OpenRouter: BYOK. Fetched 2026-10-12. ↩︎ ↩︎

  16. OpenRouter: Usage accounting and Router metadata. Fetched 2026-10-12. ↩︎

  17. OpenRouter: Limits. Fetched 2026-10-12. ↩︎ ↩︎