Repository navigation
fix(models): sync openrouter prices from the models API - #42832
Conversation
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
|
|
| "input_cost_per_token": 1.4e-07, | ||
| "output_cost_per_token": 4.2e-07, | ||
| "cache_read_input_token_cost": 4.2e-09, |
There was a problem hiding this comment.
During configured windows, these updated base rates are replaced by retained higher rates, overcharging both changed DeepSeek models
Knowledge Base Used: Spend, budgets, and rate limits
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…test Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
TLDR
Problem this solves:
How it solves it:
GET https://openrouter.ai/api/v1/models, per tokenUser Flow
Before: a proxy admin routing to openrouter/deepseek/deepseek-v4-flash sees spend logged at half the current OpenRouter rate
"model": "openrouter/deepseek/deepseek-v4-flash"After: the same request is priced at the rate OpenRouter currently lists
Rows changed
Every row below comes from
npm run providers -- prices openrouterin BerriAI/litellm-providers, which readsGET https://openrouter.ai/api/v1/models(fetched 2026-09-24T00:35:07Z). Values are USD per token as the API returns them. No rows were added and no context window values changedopenrouter/deepseek/deepseek-v4-flash(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 9.8e-08 -> 1.77212e-07cache_read_input_token_cost: 9.8e-09 -> 1.77212e-08input_cost_per_token: 4.9e-08 -> 8.8606e-08openrouter/deepseek/deepseek-v4-pro(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 1.76088e-06 -> 1.8792e-06cache_read_input_token_cost: 7.337e-08 -> 7.83e-08input_cost_per_token: 8.8044e-07 -> 9.396e-07openrouter/deepseek/deepseek-v4-pro-0813(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 3.96e-06 -> 1.386e-06cache_read_input_token_cost: 4.4e-08 -> 1.54e-08input_cost_per_token: 1.32e-06 -> 4.62e-07openrouter/deepseek/deepseek-v4.1-flash(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 1.2e-06 -> 4.2e-07cache_read_input_token_cost: 6e-09 -> 4.2e-09input_cost_per_token: 3e-07 -> 1.4e-07openrouter/minimax/minimax-m2(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 1.02e-06 -> 1.2e-06input_cost_per_token: 2.55e-07 -> 3e-07openrouter/nvidia/nemotron-3.5-lightning(kind: api, source https://openrouter.ai/api/v1/models)input_cost_per_token: 7e-08 -> 8e-08openrouter/qwen/qwen3-coder-flash(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_32k_tokens: unset -> 1.625e-06cache_read_input_token_cost_above_32k_tokens: unset -> 6.5e-08cache_creation_input_token_cost_above_32k_tokens: unset -> 4.0625e-07input_cost_per_token_above_32k_tokens: unset -> 3.25e-07openrouter/qwen/qwen3-coder-plus(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_32k_tokens: unset -> 5.85e-06cache_read_input_token_cost_above_32k_tokens: unset -> 2.34e-07cache_creation_input_token_cost_above_32k_tokens: unset -> 1.4625e-06input_cost_per_token_above_32k_tokens: unset -> 1.17e-06cache_read_input_token_cost_above_128k_tokens: unset -> 3.9e-07cache_creation_input_token_cost_above_128k_tokens: unset -> 2.4375e-06openrouter/qwen/qwen3-max(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_32k_tokens: unset -> 7.8e-06cache_read_input_token_cost_above_32k_tokens: unset -> 3.12e-07cache_creation_input_token_cost_above_32k_tokens: unset -> 1.95e-06input_cost_per_token_above_32k_tokens: unset -> 1.56e-06openrouter/qwen/qwen3-max-thinking(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_32k_tokens: unset -> 7.8e-06input_cost_per_token_above_32k_tokens: unset -> 1.56e-06openrouter/qwen/qwen3-next-80b-a3b-instruct(kind: api, source https://openrouter.ai/api/v1/models)input_cost_per_token: 9e-08 -> 1e-07openrouter/qwen/qwen3.5-plus-02-15(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_256k_tokens: 3e-06 -> 1.95e-06input_cost_per_token_above_256k_tokens: 5e-07 -> 3.25e-07openrouter/qwen/qwen3.6-plus(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_256k_tokens: unset -> 3.9e-06cache_creation_input_token_cost_above_256k_tokens: unset -> 1.625e-06input_cost_per_token_above_256k_tokens: unset -> 1.3e-06openrouter/qwen/qwen3.7-flash(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_32k_tokens: unset -> 4e-07cache_read_input_token_cost_above_32k_tokens: unset -> 2e-08cache_creation_input_token_cost_above_32k_tokens: unset -> 1.25e-07input_cost_per_token_above_32k_tokens: unset -> 1e-07openrouter/qwen/qwen3.7-plus(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token_above_256k_tokens: unset -> 3.84e-06cache_read_input_token_cost_above_256k_tokens: unset -> 1.92e-07cache_creation_input_token_cost_above_256k_tokens: unset -> 1.2e-06input_cost_per_token_above_256k_tokens: unset -> 9.6e-07openrouter/z-ai/glm-5.3(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 2.0548e-06 -> 2.64e-06cache_read_input_token_cost: 1.2142e-07 -> 1.56e-07input_cost_per_token: 6.538e-07 -> 8.4e-07openrouter/z-ai/glm-5.3-flashx(kind: api, source https://openrouter.ai/api/v1/models)cache_read_input_token_cost: 7.5e-08 -> 9e-08openrouter/z-ai/glm-5.3:batch(kind: api, source https://openrouter.ai/api/v1/models)output_cost_per_token: 2.4e-06 -> 2e-06cache_read_input_token_cost: 1.2e-07 -> 1e-07input_cost_per_token: 7.2e-07 -> 4.5e-07Delisted by the provider
None
Unpriced
None
Relevant issues
Affected release
Linear ticket
Pre-Submission checklist
python3 -m pytest tests/test_litellm/test_model_prices_schema.py tests/test_litellm/test_cost_map_guard.py -q(85 passed)Screenshots / Proof of Fix
Data only sync from the provider list API; the evidence is the per row API values listed above
Type
🐛 Bug Fix
Caveats (if any)
Low
openrouter/tencent/hy3off_peak_pricing was left as is: the API emits the same values the catalog already holds, only serialized differentlyopenrouter/deepseek/deepseek-v4.1-flashkeeps its existing off_peak_pricing block; only the base prices movedFinal Attestation
Link to Devin session: https://app.devin.ai/sessions/95fc82171299489d8c762af7454e5a1c
Open in Devin Desktop: https://app.devin.ai/desktop/session/95fc82171299489d8c762af7454e5a1c?variant=devin
Requested by: @kerry-berri