LLM API Pricing for a Micro-SaaS: Price the Workload
Model price per token tells you almost nothing. How to price the whole workload instead, with dated 2026 figures and the caching that changes the answer.
The verdict. Pick an LLM API by the job it has to finish, not this week’s model winner. Start direct with one provider; use stronger models where failure is expensive and cheap models only where output is machine-checked. Add routing when a second provider solves a measured reliability, capability, or spend problem. Self-host only when measured API spend can pay for capacity and its ops work.
This is a Workflow Decision Lab piece, not a “best AI API” list. Customers buy a finished reply, valid extracted record, or completed agent task. Price that workflow.
Proof status. Token prices below are quoted from vendor pages fetched on 21 August 2026 and linked at every figure. The monthly example is labelled arithmetic, not a benchmark. The self-hosted comparison is blocked / unverified. Needs a measured benchmark. No GPU benchmark was run. Recheck sources before setting a customer price.
1. The operator
You’re a solo builder with an AI feature inside a SaaS. It serves about 100,000 user-facing completions a month: ordinary chat, upload-to-fields extraction, multi-tool loops, and a nightly back-catalogue job.
Every request currently goes to one default model. A 200-token extraction, a long agent loop, and asynchronous bulk work therefore get the same price, latency, and failure plan. A rate-limit spike or model retirement becomes a product incident.
2. The mechanism: four workloads, four things that break
There are four common LLM jobs in a micro-SaaS. They do not stress the stack in the same way.
| Workload | What the customer sees | What actually decides the stack |
|---|---|---|
| Chat / completions | A response while they wait | Time to first token, output speed, conversation context, and a predictable fallback when capacity tightens. |
| Agentic multi-tool loops | A task completed across tools | Tool-call reliability, retry behaviour, context growth, idempotency, and the cost of several model turns rather than one. |
| Structured extraction | Valid JSON or fields in a database | Schema adherence, validation failure rate, short output, and whether a cheap model saves money after retries. |
| Bulk batch jobs | A queue finishes later | Input/output token cost, asynchronous discount, throughput, queue back-pressure, and a clear retry budget. |
Chat needs low perceived latency. An agent can justify a pricier model when one bad tool call creates five retries. Extraction needs a validator. Batch work needs an asynchronous rate.
If requests contain customer records, check direct-provider retention and regional terms, then the router’s policy for the exact model. A lower token price does not compensate for sending data somewhere your agreement forbids.
3. The prices (as of 21 Aug 2026, from vendor pages)
These are standard listed input/output prices per 1M tokens, not a claim that any model is best for your workload. Cached-input rates, tool charges, reasoning tokens, regional processing, and batch rates can change the total. OpenAI says its Batch API cuts input and output prices by 50%; Anthropic’s pricing page says batch processing saves 50%.12
| API path | Model | Input / 1M | Output / 1M |
|---|---|---|---|
| OpenAI direct | GPT-5.6 Sol | $5.00 | $30.00 |
| OpenAI direct | GPT-5.6 Terra | $2.00 | $12.00 |
| OpenAI direct | GPT-5.6 Luna | $0.20 | $1.20 |
| Anthropic direct | Fable 5 | $10.00 | $50.00 |
| Anthropic direct | Sonnet 5 | $2.00 | $10.00 |
| Anthropic direct | Haiku 4.5 | $1.00 | $5.00 |
| OpenRouter | Gemini 3.7 Flash | $0.375 | $1.875 |
| OpenRouter | Qwen3.7 Flash | $0.03 | $0.13 |
| OpenRouter | gpt-oss-120b (CoreWeave) | $0.03 | $0.17 |
Receipts, as of 21 Aug 2026: OpenAI pricing, Anthropic API pricing, OpenRouter models · Qwen3.7 Flash · gpt-oss-120b.
Two important qualifications:
- OpenRouter is a routing and billing layer, not one model vendor. Its pay-as-you-go plan lists a 5.5% platform fee and model-based pricing.3 The gpt-oss-120b figure above is the CoreWeave listed provider price on OpenRouter’s model page; other hosts for the same model list different prices. Treat a routed-model price as an endpoint choice, not a universal price.
- A lower token price is not a lower workflow price by itself. If a model misses the schema, makes a bad tool call, or needs a larger prompt to work, the saving can vanish in retries. Keep the model behind a named workload and a test set.
4. The worked math (this is the section that decides it)
Assumptions. This is a pricing fixture, not observed production traffic. The 100,000 monthly completions split as follows:
- 40,000 chat completions: 800 input + 400 output tokens each = 32M input / 16M output.
- 20,000 agentic completions: 5,000 input + 1,500 output tokens each across the loop = 100M / 30M.
- 30,000 extraction completions: 1,000 input + 200 output tokens each = 30M / 6M.
- 10,000 bulk completions: 2,000 input + 300 output tokens each = 20M / 3M. This fixture applies the vendor-stated 50% batch discount to OpenAI Terra.
| Stack fixture | Workload routing | Monthly token cost | What the number means |
|---|---|---|---|
| Single-provider direct | OpenAI Terra for chat, agents, and extraction; Terra Batch for bulk | $986.00 | $256 chat + $560 agents + $132 extraction + $38 batch. |
| Routed by workload | Terra chat; Anthropic Sonnet 5 agents; OpenAI Luna extraction; Terra Batch bulk | $807.20 | $256 + $500 + $13.20 + $38. This excludes any routing-layer fee because the fixture calls providers directly. |
| Self-hosted fixture | An open-weight model on your own capacity | Blocked / unverified | No measured tokens/sec, utilization, hardware, electricity, serving, or reliability data. Do not compare it to the two rows yet. |
The routed fixture saves $178.80/month under these assumptions. It excludes evaluation work, fallback testing, observability, and whether Sonnet is actually best for your tools. It only shows why “one default model for everything” is worth challenging at real traffic.
The self-host line. Calculate:
monthly self-host cost = fixed GPU + electricity + serving/monitoring + labour + variable costs
Then compare it with your measured API bill. A simple break-even form is:
successful workflows/month = monthly fixed self-host cost ÷ (direct API cost/workflow − self-host variable cost/workflow)
Measure the model, hardware, context, concurrency, and reliability target first. Any numeric crossover without them is unverified. Needs a measured benchmark. “The weights are free” is not a serving-cost calculation.
5. Where it fails (the part the pricing table hides)
- A model disappears without warning. TubeSpark’s builder wrote that Google deprecated
gemini-1.5-flash; requests returned 404 until its check switched togemini-2.5-flash.4 This is one builder’s account, not an SLA. Keep model IDs configurable and run a canary; a fallback helps only if you tested it. - You hit a rate-limit cliff. Record 429s, queue delay, retry count, and fallback activation separately from ordinary model failures.
- Four dashboards create an irreconcilable bill. Different token accounting, caches, tool charges, and invoice periods mean you need to assign each request to a customer, workflow, provider, model, and retry outcome.
- A cheap model quietly degrades the product. Valid-looking JSON can still contain the wrong field. Track schema-valid rate and sampled task correctness, not only HTTP 200s and token cost.
6. When NOT to use it
Do not add a router before more than one provider is in production for a real reason: availability, capability, compliance, or measured cost/quality. “Optionality” buys an abstraction layer, tests, logging, model-version policy, and new failure states.
Do not self-host before tokens are a real P&L line item and you can name the box operator. You need sustained utilization and an answer for upgrades, cold starts, incidents, and regressions. Direct API is often cheaper operationally even when its token rate is higher.
For the first version, a single direct provider plus three boring safeguards is enough: model IDs in configuration, a request-level usage log, and a manual fallback procedure you have actually run.
7. The 30-day test (how you’ll know the stack earned its complexity)
Run one controlled month. Route only workloads you can evaluate and keep a baseline. Review weekly:
- $ per 1,000 successful workflows, by provider and workload. Count a workflow only after the user-visible result passes your validator. Include all attempts and tool charges where applicable.
- Fallback trigger rate. Start with a target of under 1% of production workflows. Split it into rate limits, provider errors, invalid output, and manual policy fallbacks. A low total that hides invalid output is not a win.
- Quality spot-check score. Randomly review 50 completed workflows per workload per week against a written rubric. Set a pre-committed floor, for example at least 45/50 acceptable for extraction before moving traffic to a cheaper model.
- Latency and operational load. Track p50/p95 end-to-end workflow time and the minutes spent reconciling billing or repairing fallbacks. If routing saves $179 but costs four hours of engineering every month, the fixture did not improve the business.
Keep the second provider only if its successful-workflow cost or failure profile clears the pre-set threshold. Otherwise remove it.
Bottom line
OpenAI direct, Anthropic direct, OpenRouter, and self-hosting are not four versions of the same purchase. They put different trade-offs around capability, routing, billing, data handling, and operations. Start with one provider and price a successful workflow. Use strong models for the hard, consequential work; use cheaper models only after validation proves they hold up; use batch for work that can wait. Add multi-provider routing after a real incident risk or measured routing advantage appears. Self-host only after the all-in breakeven is measured.
The model leaderboard can help choose candidates. It cannot tell you what your SaaS actually costs to run.
More on this decision, three ways to look at it:
Footnotes
-
OpenAI API Pricing, fetched 21 August 2026. ↩
-
Anthropic API Pricing, fetched 21 August 2026. ↩
-
OpenRouter Pricing, fetched 21 August 2026. ↩
-
“Why I chose 4 AI providers instead of just OpenAI, and what happened when Google killed a model without warning,” Indie Hackers, posted 2 March 2026 and fetched 21 August 2026. ↩
Get the next verdict before it's everywhere.
One email when a new lab post or cost table ships. No spam, no confirmation step — unsubscribe anytime.