Comparing OpenRouter's Per-Model Pricing Against Direct Provider Rates
Use this cheatsheet when finance asks "are we paying a markup?" or when you choose among OpenRouter credits, BYOK, and direct provider SDKs.
Token list prices on OpenRouter are designed to pass through underlying provider rates (no inference markup). Platform economics still differ because of credit purchase fees, BYOK fees after free allowances, and multi-provider price variance for the same open model.
All fee percentages and thresholds below are version-sensitive - verify at build on OpenRouter FAQ / pricing and provider price pages.
How to Use This Cheatsheet
- Compare unit token price and fully loaded cost separately.
- Fully loaded = inference + purchase/BYOK fees + failed retries + your engineering cost for failover.
- Re-pull numbers from
GET https://openrouter.ai/api/v1/modelsand the provider's price sheet before a board deck. - Prefer $/successful agent task over $/M tokens alone.
A - Unit Price: List Rates
| Claim | Typical reality (verify at build) | What to check |
|---|---|---|
| OpenRouter vs first-party Claude/GPT/Gemini list rate | Same pass-through rate for that provider endpoint | Model page + provider pricing |
| Same open model on many hosts | Diverges by host (and quantization) | Per-provider rows on the model page |
:floor / sort: "price" | Routes toward cheapest eligible host | Still same model capability band |
| Cached tokens / reasoning tokens | Separate line items when providers bill them | usage breakdown fields |
| Tools, web, file plugins | May add surcharges beyond base tokens | Activity / analytics component metrics |
B - Fully Loaded: Fees Outside Token Rates
| Cost component | OpenRouter credits | BYOK via OpenRouter | Direct provider only |
|---|---|---|---|
| Inference token price | Pass-through list | Provider bills you at your contract rate | Provider contract |
| Platform fee on funding | Card ~5.5% (min fee applies); crypto ~5% | You still hold OpenRouter credits for non-BYOK and BYOK fees | None (provider billing) |
| BYOK fee | N/A | First ~1M BYOK requests/month free on standard plans, then ~5% of equivalent OpenRouter list cost (enterprise allowances differ) | N/A |
| Multi-provider failover | Included in routing | Included | You build it |
| Unified invoice / analytics | Yes | Partial (provider + OpenRouter fee) | Per vendor |
| Data-policy routing controls | Yes (data_collection, zdr, privacy UI) | Yes | Per vendor knobs |
Example mental math (illustrative only):
- $1,000 of inference via credit card top-ups ≈ $1,000 × 1.055 funding overhead before any BYOK discussion (plus minimum fees on small top-ups).
- Heavy BYOK after the free request band: budget an extra ~5% of list-equivalent on top of what the provider charges you.
C - When Rates "Match" vs "Diverge"
| Scenario | Match or diverge? | Why |
|---|---|---|
| Single closed model, first-party host only | Match list | Pass-through |
| Closed model, Azure/Bedrock/Vertex vs first-party | May diverge | Different seller rates |
| Llama / Mixtral / Qwen multi-host | Diverge often | Hosts compete on price/speed |
| Your enterprise discount at OpenAI | Direct may win | Discount not always mirrored on gateway list |
| You need 4 vendors' models in one agent | OpenRouter often wins fully loaded | One integration + fallback |
| Ultra-high BYOK volume past free tier | Compare 5% fee vs building your own router | Fee vs eng cost |
D - Decision Snapshot
| Choose | If you need |
|---|---|
| OpenRouter credits | Fast multi-model access, automatic provider failover, simple ops |
| OpenRouter + BYOK | Keep provider contracts/rate limits, still want unified API |
| Direct provider SDK | Single vendor, deepest discount, no gateway dependency |
| Hybrid | Direct for the 1 huge steady model; OpenRouter for long-tail + fallback |
E - Quick Verification Script
import os
import requests
# Snapshot OpenRouter catalog prices (prompt/completion per token or per million - inspect payload)
r = requests.get("https://openrouter.ai/api/v1/models", timeout=60)
r.raise_for_status()
models = {m["id"]: m.get("pricing") for m in r.json().get("data", [])}
for slug in [
"openai/gpt-4o-mini",
"anthropic/claude-sonnet-4.5",
"meta-llama/llama-3.3-70b-instruct",
]:
print(slug, models.get(slug)) # compare to provider docs manuallyDo not automate scraping of provider marketing pages without permission. Maintain an internal table updated on a schedule.
F - Agent-Specific Cost Pitfalls
| Pitfall | Effect | Mitigation |
|---|---|---|
| Multi-turn tool loops | Tokens multiply | Max turns + cheap-tier steps |
| Huge system prompts | Prompt dominates bill | Caching, trim tools |
| Fallback to pricier host | Unit price jumps mid-incident | Monitor provider field + cost |
| Small credit top-ups | Min fee inflates effective % | Larger, fewer top-ups or invoicing |
| Ignoring free-tier limits | 429s cause retries/waste | Paid cheap models in prod |
FAQs
Does OpenRouter mark up tokens?
Documented position: inference is pass-through at provider list rates. Revenue comes from credit purchase fees and BYOK fees after free allowances (verify FAQ at build).
Why is my invoice higher than tokens × list?
Funding fees, BYOK fees, plugin surcharges, cache write pricing, reasoning tokens, retries, and currency rounding all stack on top of base rates.
Is BYOK always cheaper?
Only if your direct rate plus BYOK fees (after free requests) undercuts credit-based pass-through plus purchase fees - and you value the gateway features enough.
Do provider fallbacks change the price I pay?
Yes if backup hosts have different rates for the same model. You pay for the endpoint that actually served the request.
How should I report cost to finance?
Report three lines: token inference, OpenRouter platform/BYOK fees, and internal reliability value (outages avoided). Collapsing them hides trade-offs.
Are free models free at agent scale?
They are free of token charges but rate-limited (for example low daily request caps without sufficient credit history). Unsuitable as the sole production path for busy agents.
Where do I see per-provider prices for one model?
On the OpenRouter model page endpoint table and related APIs. Catalog /models gives model-level pricing; endpoint detail may require UI or endpoints APIs (verify at build).
Does enterprise pricing change this cheatsheet?
Yes. Invoicing, fee discounts, higher BYOK free bands, and EU routing can move the fully loaded math. Re-run the comparison under your contract.
Related
Related: Cost-Based Routing: Sending Cheap Tasks to Cheap Models
Related: Setting Spend Limits and Usage Caps per API Key
Related: Monitoring OpenRouter Spend and Usage in Real Time
Related: How OpenRouter's Provider Fallback Actually Protects Uptime
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.