fix(model_prices): absorb Baseten GLM-5.3 and OpenRouter live prices, fix Bedrock Qwen3 Coder 480B input price and Gemini Live image price

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
mateo 2026-09-03 19:53:58 +00:00
parent 32a3a65312
commit 2c4eb693ed
5 changed files with 487 additions and 233 deletions

View file

@ -22968,7 +22968,8 @@
"search_context_size_medium": 0.035,
"search_context_size_high": 0.035
},
"gemini_native_audio": true
"gemini_native_audio": true,
"input_cost_per_image_token": 3e-06
},
"gemini-live-2.5-flash-preview-native-audio-09-2025": {
"cache_read_input_token_cost": 7.5e-08,
@ -37637,7 +37638,7 @@
"cache_creation_input_token_cost_above_200k_tokens": 7.5e-06,
"cache_read_input_token_cost_above_200k_tokens": 6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"mode": "chat",
@ -37733,24 +37734,24 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-chat": {
"input_cost_per_token": 1.4e-07,
"input_cost_per_token": 3.2e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65536,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.8e-07,
"output_cost_per_token": 8.9e-07,
"supports_prompt_caching": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-chat-v3-0324": {
"input_cost_per_token": 1.4e-07,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65536,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.8e-07,
"output_cost_per_token": 1e-06,
"supports_prompt_caching": true,
"supports_tool_choice": true
},
@ -37770,7 +37771,7 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v3.2": {
"input_cost_per_token": 2.8e-07,
"input_cost_per_token": 2.69e-07,
"input_cost_per_token_cache_hit": 2.8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 163840,
@ -37785,14 +37786,14 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v3.2-exp": {
"input_cost_per_token": 2e-07,
"input_cost_per_token": 2.7e-07,
"input_cost_per_token_cache_hit": 2e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 163840,
"max_output_tokens": 163840,
"max_tokens": 163840,
"mode": "chat",
"output_cost_per_token": 4e-07,
"output_cost_per_token": 4.1e-07,
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -37800,14 +37801,14 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-r1": {
"input_cost_per_token": 5.5e-07,
"input_cost_per_token": 7e-07,
"input_cost_per_token_cache_hit": 1.4e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65336,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.19e-06,
"output_cost_per_token": 2.5e-06,
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -37903,8 +37904,8 @@
"input_cost_per_token": 1.25e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 65536,
"max_tokens": 65536,
"max_output_tokens": 65535,
"max_tokens": 65535,
"mode": "chat",
"output_cost_per_token": 1e-05,
"supports_audio_output": true,
@ -38119,19 +38120,19 @@
"supports_vision": true
},
"openrouter/gryphe/mythomax-l2-13b": {
"input_cost_per_token": 1.875e-06,
"input_cost_per_token": 6e-08,
"litellm_provider": "openrouter",
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 1.875e-06,
"output_cost_per_token": 6e-08,
"supports_tool_choice": true
},
"openrouter/mancer/weaver": {
"input_cost_per_token": 5.625e-06,
"input_cost_per_token": 4e-07,
"litellm_provider": "openrouter",
"max_tokens": 2000,
"mode": "chat",
"output_cost_per_token": 5.625e-06,
"output_cost_per_token": 7.5e-07,
"supports_tool_choice": true,
"max_input_tokens": 8000,
"max_output_tokens": 2000
@ -38161,13 +38162,13 @@
},
"openrouter/mistralai/devstral-2512": {
"input_cost_per_image": 0,
"input_cost_per_token": 1.5e-07,
"input_cost_per_token": 4e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 2e-06,
"supports_function_calling": true,
"supports_prompt_caching": false,
"supports_tool_choice": true,
@ -38240,54 +38241,54 @@
"max_output_tokens": 8191
},
"openrouter/mistralai/mistral-large": {
"input_cost_per_token": 8e-06,
"input_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_tokens": 8191,
"mode": "chat",
"output_cost_per_token": 2.4e-05,
"output_cost_per_token": 6e-06,
"supports_tool_choice": true,
"max_input_tokens": 128000,
"max_output_tokens": 8191
},
"openrouter/mistralai/mistral-small-3.1-24b-instruct": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 3.51e-07,
"litellm_provider": "openrouter",
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3e-07,
"output_cost_per_token": 5.55e-07,
"supports_tool_choice": true,
"max_input_tokens": 131072,
"max_output_tokens": 131072
},
"openrouter/mistralai/mistral-small-3.2-24b-instruct": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 7.5e-08,
"litellm_provider": "openrouter",
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-07,
"output_cost_per_token": 2e-07,
"supports_tool_choice": true,
"max_input_tokens": 128000,
"max_output_tokens": 128000
},
"openrouter/mistralai/mixtral-8x22b-instruct": {
"input_cost_per_token": 6.5e-07,
"input_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 6.5e-07,
"output_cost_per_token": 6e-06,
"supports_tool_choice": true,
"max_input_tokens": 65536,
"max_output_tokens": 65536
},
"openrouter/moonshotai/kimi-k2.5": {
"cache_read_input_token_cost": 1e-07,
"input_cost_per_token": 6e-07,
"cache_read_input_token_cost": 7e-08,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 3e-06,
"output_cost_per_token": 2.25e-06,
"source": "https://openrouter.ai/moonshotai/kimi-k2.5",
"supports_function_calling": true,
"supports_tool_choice": true,
@ -38295,7 +38296,7 @@
"supports_vision": true
},
"openrouter/nvidia/nemotron-3.5-lightning": {
"input_cost_per_token": 5e-08,
"input_cost_per_token": 8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"mode": "chat",
@ -38600,13 +38601,13 @@
"supports_vision": true
},
"openrouter/openai/gpt-oss-120b": {
"input_cost_per_token": 1.8e-07,
"input_cost_per_token": 3.7e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 8e-07,
"output_cost_per_token": 1.7e-07,
"source": "https://openrouter.ai/openai/gpt-oss-120b",
"supports_function_calling": true,
"supports_parallel_function_calling": true,
@ -38615,13 +38616,13 @@
"supports_tool_choice": true
},
"openrouter/openai/gpt-oss-20b": {
"input_cost_per_token": 2e-08,
"input_cost_per_token": 3e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 1e-07,
"output_cost_per_token": 1.3e-07,
"source": "https://openrouter.ai/openai/gpt-oss-20b",
"supports_function_calling": true,
"supports_parallel_function_calling": true,
@ -38681,13 +38682,13 @@
"source": "https://openrouter.ai/openai/o3-mini-high"
},
"openrouter/qwen/qwen-2.5-coder-32b-instruct": {
"input_cost_per_token": 1.8e-07,
"input_cost_per_token": 6.6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 33792,
"max_output_tokens": 33792,
"max_tokens": 33792,
"mode": "chat",
"output_cost_per_token": 1.8e-07,
"output_cost_per_token": 1e-06,
"supports_tool_choice": true
},
"openrouter/qwen/qwen-vl-plus": {
@ -38702,50 +38703,50 @@
"supports_vision": true
},
"openrouter/qwen/qwen3-coder": {
"input_cost_per_token": 2.2e-07,
"input_cost_per_token": 3e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262100,
"max_output_tokens": 262100,
"max_tokens": 262100,
"mode": "chat",
"output_cost_per_token": 9.5e-07,
"output_cost_per_token": 1e-06,
"source": "https://openrouter.ai/qwen/qwen3-coder",
"supports_tool_choice": true,
"supports_function_calling": true
},
"openrouter/qwen/qwen3-coder-plus": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 6.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 997952,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 5e-06,
"output_cost_per_token": 3.25e-06,
"source": "https://openrouter.ai/qwen/qwen3-coder-plus",
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/qwen/qwen3-235b-a22b-2507": {
"input_cost_per_token": 7.1e-08,
"input_cost_per_token": 8.75e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 1e-07,
"output_cost_per_token": 3.5e-07,
"source": "https://openrouter.ai/qwen/qwen3-235b-a22b-2507",
"supports_function_calling": true,
"supports_tool_choice": true
},
"openrouter/qwen/qwen3-235b-a22b-thinking-2507": {
"input_cost_per_token": 1.1e-07,
"input_cost_per_token": 2.3e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 2.3e-06,
"source": "https://openrouter.ai/qwen/qwen3-235b-a22b-thinking-2507",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38772,7 +38773,7 @@
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2e-06,
"output_cost_per_token": 1.25e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-35b-a3b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38780,13 +38781,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-27b": {
"input_cost_per_token": 3e-07,
"input_cost_per_token": 1.95e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.4e-06,
"output_cost_per_token": 1.56e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-27b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38794,13 +38795,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-122b-a10b": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 2.9e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2e-06,
"output_cost_per_token": 2.4e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-122b-a10b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38808,13 +38809,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-flash-02-23": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 6.5e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 4e-07,
"output_cost_per_token": 2.6e-07,
"source": "https://openrouter.ai/qwen/qwen3.5-flash-02-23",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38822,14 +38823,14 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-plus-02-15": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 2.6e-07,
"input_cost_per_token_above_256k_tokens": 5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.4e-06,
"output_cost_per_token": 1.56e-06,
"output_cost_per_token_above_256k_tokens": 3e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-plus-02-15",
"supports_function_calling": true,
@ -38838,13 +38839,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-397b-a17b": {
"input_cost_per_token": 6e-07,
"input_cost_per_token": 5.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 3.6e-06,
"output_cost_per_token": 3.5e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-397b-a17b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38863,11 +38864,11 @@
"supports_tool_choice": true
},
"openrouter/undi95/remm-slerp-l2-13b": {
"input_cost_per_token": 1.875e-06,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "openrouter",
"max_tokens": 4096,
"mode": "chat",
"output_cost_per_token": 1.875e-06,
"output_cost_per_token": 6.5e-07,
"supports_tool_choice": true,
"max_input_tokens": 6144,
"max_output_tokens": 4096
@ -38887,13 +38888,13 @@
"supports_web_search": true
},
"openrouter/z-ai/glm-4.6": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 5.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 202800,
"max_output_tokens": 131000,
"max_tokens": 131000,
"mode": "chat",
"output_cost_per_token": 1.75e-06,
"output_cost_per_token": 2.2e-06,
"source": "https://openrouter.ai/z-ai/glm-4.6",
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -38931,10 +38932,10 @@
"supports_prompt_caching": true
},
"openrouter/xiaomi/mimo-v2.5-pro": {
"input_cost_per_token": 1e-06,
"output_cost_per_token": 3e-06,
"input_cost_per_token": 4.35e-07,
"output_cost_per_token": 8.7e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost": 3.6e-09,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 16384,
@ -38948,10 +38949,10 @@
"supports_prompt_caching": true
},
"openrouter/xiaomi/mimo-v2.5": {
"input_cost_per_token": 4e-07,
"output_cost_per_token": 2e-06,
"input_cost_per_token": 1.4e-07,
"output_cost_per_token": 2.8e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 8e-08,
"cache_read_input_token_cost": 2.8e-09,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 131072,
@ -38968,9 +38969,9 @@
},
"openrouter/z-ai/glm-4.7": {
"input_cost_per_token": 4e-07,
"output_cost_per_token": 1.5e-06,
"output_cost_per_token": 1.75e-06,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
"max_output_tokens": 64000,
@ -38984,10 +38985,10 @@
"supports_assistant_prefill": true
},
"openrouter/z-ai/glm-4.7-flash": {
"input_cost_per_token": 7e-08,
"input_cost_per_token": 6e-08,
"output_cost_per_token": 4e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 1e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 200000,
"max_output_tokens": 32000,
@ -39000,22 +39001,22 @@
"supports_prompt_caching": false
},
"openrouter/z-ai/glm-5": {
"input_cost_per_token": 8e-07,
"input_cost_per_token": 6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 2.56e-06,
"output_cost_per_token": 1.92e-06,
"source": "https://openrouter.ai/z-ai/glm-5",
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/z-ai/glm-5.1": {
"input_cost_per_token": 1.05e-06,
"output_cost_per_token": 3.5e-06,
"cache_read_input_token_cost": 5.25e-07,
"input_cost_per_token": 9.66e-07,
"output_cost_per_token": 3.036e-06,
"cache_read_input_token_cost": 1.794e-07,
"cache_creation_input_token_cost": 0.0,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
@ -39029,10 +39030,10 @@
"supports_tool_choice": true
},
"openrouter/minimax/minimax-m2.1": {
"input_cost_per_token": 2.7e-07,
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.2e-06,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 3e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 204000,
"max_output_tokens": 64000,
@ -39046,9 +39047,9 @@
"supports_computer_use": false
},
"openrouter/minimax/minimax-m2.5": {
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.1e-06,
"cache_read_input_token_cost": 1.5e-07,
"input_cost_per_token": 2.7e-07,
"output_cost_per_token": 1.08e-06,
"cache_read_input_token_cost": 2.7e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 196608,
"max_output_tokens": 65536,
@ -39947,7 +39948,7 @@
"supports_reasoning": true
},
"qwen.qwen3-coder-480b-a35b-v1:0": {
"input_cost_per_token": 2.2e-07,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "bedrock_converse",
"max_input_tokens": 262000,
"max_output_tokens": 65536,
@ -39957,7 +39958,8 @@
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_native_structured_output": true
"supports_native_structured_output": true,
"source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/us-east-1/index.json"
},
"qwen.qwen3-235b-a22b-2507-v1:0": {
"input_cost_per_token": 2.2e-07,
@ -52852,7 +52854,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52878,7 +52880,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52904,7 +52906,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52932,7 +52934,7 @@
"max_input_tokens": 131072,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 4.5e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52963,7 +52965,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52991,7 +52993,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -53019,7 +53021,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -53049,7 +53051,7 @@
"max_input_tokens": 131072,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 4.5e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -59463,7 +59465,8 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 1e-06,
"supports_prompt_caching": true,
"cache_creation_input_token_cost": 1.25e-05
"cache_creation_input_token_cost": 1.25e-05,
"prompt_cache_min_tokens": 512
},
"openrouter/anthropic/claude-fable-5.1": {
"input_cost_per_token": 1e-05,
@ -59483,7 +59486,8 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 2.5e-07,
"supports_prompt_caching": true,
"cache_creation_input_token_cost": 1.25e-05
"cache_creation_input_token_cost": 1.25e-05,
"prompt_cache_min_tokens": 512
},
"openrouter/anthropic/claude-opus-4.8": {
"input_cost_per_token": 5e-06,
@ -59549,8 +59553,8 @@
"output_cost_per_token": 9e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 65536,
"max_tokens": 65536,
"max_output_tokens": 65535,
"max_tokens": 65535,
"mode": "chat",
"source": "https://openrouter.ai/google/gemini-3.5-flash",
"supports_function_calling": true,
@ -59662,7 +59666,7 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 1e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59681,7 +59685,7 @@
"input_cost_per_token": 1.75e-06,
"output_cost_per_token": 1.4e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59719,7 +59723,7 @@
"input_cost_per_token": 7.5e-07,
"output_cost_per_token": 4.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59738,7 +59742,7 @@
"input_cost_per_token": 2e-07,
"output_cost_per_token": 1.25e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59776,7 +59780,7 @@
"input_cost_per_token": 2e-07,
"output_cost_per_token": 1.2e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1050000,
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59795,7 +59799,7 @@
"input_cost_per_token": 2e-06,
"output_cost_per_token": 1.2e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 1050000,
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59852,9 +59856,9 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 2000000,
"max_output_tokens": 1800000,
"max_tokens": 1800000,
"max_input_tokens": 1000000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.20",
"supports_function_calling": true,
@ -59871,9 +59875,9 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 2000000,
"max_output_tokens": 1800000,
"max_tokens": 1800000,
"max_input_tokens": 1000000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.20-multi-agent",
"supports_function_calling": false,
@ -59891,8 +59895,8 @@
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 900000,
"max_tokens": 900000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.3",
"supports_function_calling": true,
@ -59910,8 +59914,8 @@
"output_cost_per_token": 6e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 500000,
"max_output_tokens": 450000,
"max_tokens": 450000,
"max_output_tokens": 500000,
"max_tokens": 500000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.5",
"supports_function_calling": true,
@ -59929,8 +59933,8 @@
"output_cost_per_token": 6e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 500000,
"max_output_tokens": 450000,
"max_tokens": 450000,
"max_output_tokens": 500000,
"max_tokens": 500000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.6",
"supports_function_calling": true,
@ -59948,8 +59952,8 @@
"output_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 256000,
"max_output_tokens": 230400,
"max_tokens": 230400,
"max_output_tokens": 256000,
"max_tokens": 256000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-build-0.1",
"supports_function_calling": true,
@ -59961,5 +59965,26 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 2e-07,
"supports_prompt_caching": true
},
"baseten/zai-org/GLM-5.3": {
"cache_read_input_token_cost": 1.4e-07,
"input_cost_per_token": 1.4e-06,
"litellm_provider": "baseten",
"max_input_tokens": 1048576,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 4.4e-06,
"source": "https://www.baseten.co/pricing/",
"supported_modalities": [
"text"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_tool_choice": true
}
}

View file

@ -22968,7 +22968,8 @@
"search_context_size_medium": 0.035,
"search_context_size_high": 0.035
},
"gemini_native_audio": true
"gemini_native_audio": true,
"input_cost_per_image_token": 3e-06
},
"gemini-live-2.5-flash-preview-native-audio-09-2025": {
"cache_read_input_token_cost": 7.5e-08,
@ -37637,7 +37638,7 @@
"cache_creation_input_token_cost_above_200k_tokens": 7.5e-06,
"cache_read_input_token_cost_above_200k_tokens": 6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"mode": "chat",
@ -37733,24 +37734,24 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-chat": {
"input_cost_per_token": 1.4e-07,
"input_cost_per_token": 3.2e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65536,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.8e-07,
"output_cost_per_token": 8.9e-07,
"supports_prompt_caching": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-chat-v3-0324": {
"input_cost_per_token": 1.4e-07,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65536,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.8e-07,
"output_cost_per_token": 1e-06,
"supports_prompt_caching": true,
"supports_tool_choice": true
},
@ -37770,7 +37771,7 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v3.2": {
"input_cost_per_token": 2.8e-07,
"input_cost_per_token": 2.69e-07,
"input_cost_per_token_cache_hit": 2.8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 163840,
@ -37785,14 +37786,14 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v3.2-exp": {
"input_cost_per_token": 2e-07,
"input_cost_per_token": 2.7e-07,
"input_cost_per_token_cache_hit": 2e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 163840,
"max_output_tokens": 163840,
"max_tokens": 163840,
"mode": "chat",
"output_cost_per_token": 4e-07,
"output_cost_per_token": 4.1e-07,
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -37800,14 +37801,14 @@
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-r1": {
"input_cost_per_token": 5.5e-07,
"input_cost_per_token": 7e-07,
"input_cost_per_token_cache_hit": 1.4e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 65336,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 2.19e-06,
"output_cost_per_token": 2.5e-06,
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -37903,8 +37904,8 @@
"input_cost_per_token": 1.25e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 65536,
"max_tokens": 65536,
"max_output_tokens": 65535,
"max_tokens": 65535,
"mode": "chat",
"output_cost_per_token": 1e-05,
"supports_audio_output": true,
@ -38119,19 +38120,19 @@
"supports_vision": true
},
"openrouter/gryphe/mythomax-l2-13b": {
"input_cost_per_token": 1.875e-06,
"input_cost_per_token": 6e-08,
"litellm_provider": "openrouter",
"max_tokens": 8192,
"mode": "chat",
"output_cost_per_token": 1.875e-06,
"output_cost_per_token": 6e-08,
"supports_tool_choice": true
},
"openrouter/mancer/weaver": {
"input_cost_per_token": 5.625e-06,
"input_cost_per_token": 4e-07,
"litellm_provider": "openrouter",
"max_tokens": 2000,
"mode": "chat",
"output_cost_per_token": 5.625e-06,
"output_cost_per_token": 7.5e-07,
"supports_tool_choice": true,
"max_input_tokens": 8000,
"max_output_tokens": 2000
@ -38161,13 +38162,13 @@
},
"openrouter/mistralai/devstral-2512": {
"input_cost_per_image": 0,
"input_cost_per_token": 1.5e-07,
"input_cost_per_token": 4e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 2e-06,
"supports_function_calling": true,
"supports_prompt_caching": false,
"supports_tool_choice": true,
@ -38240,54 +38241,54 @@
"max_output_tokens": 8191
},
"openrouter/mistralai/mistral-large": {
"input_cost_per_token": 8e-06,
"input_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_tokens": 8191,
"mode": "chat",
"output_cost_per_token": 2.4e-05,
"output_cost_per_token": 6e-06,
"supports_tool_choice": true,
"max_input_tokens": 128000,
"max_output_tokens": 8191
},
"openrouter/mistralai/mistral-small-3.1-24b-instruct": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 3.51e-07,
"litellm_provider": "openrouter",
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3e-07,
"output_cost_per_token": 5.55e-07,
"supports_tool_choice": true,
"max_input_tokens": 131072,
"max_output_tokens": 131072
},
"openrouter/mistralai/mistral-small-3.2-24b-instruct": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 7.5e-08,
"litellm_provider": "openrouter",
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-07,
"output_cost_per_token": 2e-07,
"supports_tool_choice": true,
"max_input_tokens": 128000,
"max_output_tokens": 128000
},
"openrouter/mistralai/mixtral-8x22b-instruct": {
"input_cost_per_token": 6.5e-07,
"input_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 6.5e-07,
"output_cost_per_token": 6e-06,
"supports_tool_choice": true,
"max_input_tokens": 65536,
"max_output_tokens": 65536
},
"openrouter/moonshotai/kimi-k2.5": {
"cache_read_input_token_cost": 1e-07,
"input_cost_per_token": 6e-07,
"cache_read_input_token_cost": 7e-08,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 3e-06,
"output_cost_per_token": 2.25e-06,
"source": "https://openrouter.ai/moonshotai/kimi-k2.5",
"supports_function_calling": true,
"supports_tool_choice": true,
@ -38295,7 +38296,7 @@
"supports_vision": true
},
"openrouter/nvidia/nemotron-3.5-lightning": {
"input_cost_per_token": 5e-08,
"input_cost_per_token": 8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"mode": "chat",
@ -38600,13 +38601,13 @@
"supports_vision": true
},
"openrouter/openai/gpt-oss-120b": {
"input_cost_per_token": 1.8e-07,
"input_cost_per_token": 3.7e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 8e-07,
"output_cost_per_token": 1.7e-07,
"source": "https://openrouter.ai/openai/gpt-oss-120b",
"supports_function_calling": true,
"supports_parallel_function_calling": true,
@ -38615,13 +38616,13 @@
"supports_tool_choice": true
},
"openrouter/openai/gpt-oss-20b": {
"input_cost_per_token": 2e-08,
"input_cost_per_token": 3e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 1e-07,
"output_cost_per_token": 1.3e-07,
"source": "https://openrouter.ai/openai/gpt-oss-20b",
"supports_function_calling": true,
"supports_parallel_function_calling": true,
@ -38681,13 +38682,13 @@
"source": "https://openrouter.ai/openai/o3-mini-high"
},
"openrouter/qwen/qwen-2.5-coder-32b-instruct": {
"input_cost_per_token": 1.8e-07,
"input_cost_per_token": 6.6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 33792,
"max_output_tokens": 33792,
"max_tokens": 33792,
"mode": "chat",
"output_cost_per_token": 1.8e-07,
"output_cost_per_token": 1e-06,
"supports_tool_choice": true
},
"openrouter/qwen/qwen-vl-plus": {
@ -38702,50 +38703,50 @@
"supports_vision": true
},
"openrouter/qwen/qwen3-coder": {
"input_cost_per_token": 2.2e-07,
"input_cost_per_token": 3e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262100,
"max_output_tokens": 262100,
"max_tokens": 262100,
"mode": "chat",
"output_cost_per_token": 9.5e-07,
"output_cost_per_token": 1e-06,
"source": "https://openrouter.ai/qwen/qwen3-coder",
"supports_tool_choice": true,
"supports_function_calling": true
},
"openrouter/qwen/qwen3-coder-plus": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 6.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 997952,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 5e-06,
"output_cost_per_token": 3.25e-06,
"source": "https://openrouter.ai/qwen/qwen3-coder-plus",
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/qwen/qwen3-235b-a22b-2507": {
"input_cost_per_token": 7.1e-08,
"input_cost_per_token": 8.75e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 1e-07,
"output_cost_per_token": 3.5e-07,
"source": "https://openrouter.ai/qwen/qwen3-235b-a22b-2507",
"supports_function_calling": true,
"supports_tool_choice": true
},
"openrouter/qwen/qwen3-235b-a22b-thinking-2507": {
"input_cost_per_token": 1.1e-07,
"input_cost_per_token": 2.3e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 2.3e-06,
"source": "https://openrouter.ai/qwen/qwen3-235b-a22b-thinking-2507",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38772,7 +38773,7 @@
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2e-06,
"output_cost_per_token": 1.25e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-35b-a3b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38780,13 +38781,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-27b": {
"input_cost_per_token": 3e-07,
"input_cost_per_token": 1.95e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.4e-06,
"output_cost_per_token": 1.56e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-27b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38794,13 +38795,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-122b-a10b": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 2.9e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2e-06,
"output_cost_per_token": 2.4e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-122b-a10b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38808,13 +38809,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-flash-02-23": {
"input_cost_per_token": 1e-07,
"input_cost_per_token": 6.5e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 4e-07,
"output_cost_per_token": 2.6e-07,
"source": "https://openrouter.ai/qwen/qwen3.5-flash-02-23",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38822,14 +38823,14 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-plus-02-15": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 2.6e-07,
"input_cost_per_token_above_256k_tokens": 5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.4e-06,
"output_cost_per_token": 1.56e-06,
"output_cost_per_token_above_256k_tokens": 3e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-plus-02-15",
"supports_function_calling": true,
@ -38838,13 +38839,13 @@
"supports_vision": true
},
"openrouter/qwen/qwen3.5-397b-a17b": {
"input_cost_per_token": 6e-07,
"input_cost_per_token": 5.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 262144,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 3.6e-06,
"output_cost_per_token": 3.5e-06,
"source": "https://openrouter.ai/qwen/qwen3.5-397b-a17b",
"supports_function_calling": true,
"supports_reasoning": true,
@ -38863,11 +38864,11 @@
"supports_tool_choice": true
},
"openrouter/undi95/remm-slerp-l2-13b": {
"input_cost_per_token": 1.875e-06,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "openrouter",
"max_tokens": 4096,
"mode": "chat",
"output_cost_per_token": 1.875e-06,
"output_cost_per_token": 6.5e-07,
"supports_tool_choice": true,
"max_input_tokens": 6144,
"max_output_tokens": 4096
@ -38887,13 +38888,13 @@
"supports_web_search": true
},
"openrouter/z-ai/glm-4.6": {
"input_cost_per_token": 4e-07,
"input_cost_per_token": 5.5e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 202800,
"max_output_tokens": 131000,
"max_tokens": 131000,
"mode": "chat",
"output_cost_per_token": 1.75e-06,
"output_cost_per_token": 2.2e-06,
"source": "https://openrouter.ai/z-ai/glm-4.6",
"supports_function_calling": true,
"supports_prompt_caching": true,
@ -38931,10 +38932,10 @@
"supports_prompt_caching": true
},
"openrouter/xiaomi/mimo-v2.5-pro": {
"input_cost_per_token": 1e-06,
"output_cost_per_token": 3e-06,
"input_cost_per_token": 4.35e-07,
"output_cost_per_token": 8.7e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 2e-07,
"cache_read_input_token_cost": 3.6e-09,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 16384,
@ -38948,10 +38949,10 @@
"supports_prompt_caching": true
},
"openrouter/xiaomi/mimo-v2.5": {
"input_cost_per_token": 4e-07,
"output_cost_per_token": 2e-06,
"input_cost_per_token": 1.4e-07,
"output_cost_per_token": 2.8e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 8e-08,
"cache_read_input_token_cost": 2.8e-09,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 131072,
@ -38968,9 +38969,9 @@
},
"openrouter/z-ai/glm-4.7": {
"input_cost_per_token": 4e-07,
"output_cost_per_token": 1.5e-06,
"output_cost_per_token": 1.75e-06,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 8e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
"max_output_tokens": 64000,
@ -38984,10 +38985,10 @@
"supports_assistant_prefill": true
},
"openrouter/z-ai/glm-4.7-flash": {
"input_cost_per_token": 7e-08,
"input_cost_per_token": 6e-08,
"output_cost_per_token": 4e-07,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 1e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 200000,
"max_output_tokens": 32000,
@ -39000,22 +39001,22 @@
"supports_prompt_caching": false
},
"openrouter/z-ai/glm-5": {
"input_cost_per_token": 8e-07,
"input_cost_per_token": 6e-07,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 2.56e-06,
"output_cost_per_token": 1.92e-06,
"source": "https://openrouter.ai/z-ai/glm-5",
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/z-ai/glm-5.1": {
"input_cost_per_token": 1.05e-06,
"output_cost_per_token": 3.5e-06,
"cache_read_input_token_cost": 5.25e-07,
"input_cost_per_token": 9.66e-07,
"output_cost_per_token": 3.036e-06,
"cache_read_input_token_cost": 1.794e-07,
"cache_creation_input_token_cost": 0.0,
"litellm_provider": "openrouter",
"max_input_tokens": 202752,
@ -39029,10 +39030,10 @@
"supports_tool_choice": true
},
"openrouter/minimax/minimax-m2.1": {
"input_cost_per_token": 2.7e-07,
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.2e-06,
"cache_creation_input_token_cost": 0.0,
"cache_read_input_token_cost": 0.0,
"cache_read_input_token_cost": 3e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 204000,
"max_output_tokens": 64000,
@ -39046,9 +39047,9 @@
"supports_computer_use": false
},
"openrouter/minimax/minimax-m2.5": {
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.1e-06,
"cache_read_input_token_cost": 1.5e-07,
"input_cost_per_token": 2.7e-07,
"output_cost_per_token": 1.08e-06,
"cache_read_input_token_cost": 2.7e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 196608,
"max_output_tokens": 65536,
@ -39947,7 +39948,7 @@
"supports_reasoning": true
},
"qwen.qwen3-coder-480b-a35b-v1:0": {
"input_cost_per_token": 2.2e-07,
"input_cost_per_token": 4.5e-07,
"litellm_provider": "bedrock_converse",
"max_input_tokens": 262000,
"max_output_tokens": 65536,
@ -39957,7 +39958,8 @@
"supports_function_calling": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_native_structured_output": true
"supports_native_structured_output": true,
"source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/us-east-1/index.json"
},
"qwen.qwen3-235b-a22b-2507-v1:0": {
"input_cost_per_token": 2.2e-07,
@ -52852,7 +52854,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52878,7 +52880,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52904,7 +52906,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52932,7 +52934,7 @@
"max_input_tokens": 131072,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 4.5e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52963,7 +52965,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -52991,7 +52993,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -53019,7 +53021,7 @@
"max_input_tokens": 1048576,
"max_output_tokens": 8192,
"max_tokens": 8192,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 2e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -53049,7 +53051,7 @@
"max_input_tokens": 131072,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"mode": "realtime",
"output_cost_per_audio_token": 1.2e-05,
"output_cost_per_token": 4.5e-06,
"source": "https://ai.google.dev/gemini-api/docs/pricing",
@ -59463,7 +59465,8 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 1e-06,
"supports_prompt_caching": true,
"cache_creation_input_token_cost": 1.25e-05
"cache_creation_input_token_cost": 1.25e-05,
"prompt_cache_min_tokens": 512
},
"openrouter/anthropic/claude-fable-5.1": {
"input_cost_per_token": 1e-05,
@ -59483,7 +59486,8 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 2.5e-07,
"supports_prompt_caching": true,
"cache_creation_input_token_cost": 1.25e-05
"cache_creation_input_token_cost": 1.25e-05,
"prompt_cache_min_tokens": 512
},
"openrouter/anthropic/claude-opus-4.8": {
"input_cost_per_token": 5e-06,
@ -59549,8 +59553,8 @@
"output_cost_per_token": 9e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 65536,
"max_tokens": 65536,
"max_output_tokens": 65535,
"max_tokens": 65535,
"mode": "chat",
"source": "https://openrouter.ai/google/gemini-3.5-flash",
"supports_function_calling": true,
@ -59662,7 +59666,7 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 1e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59681,7 +59685,7 @@
"input_cost_per_token": 1.75e-06,
"output_cost_per_token": 1.4e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59719,7 +59723,7 @@
"input_cost_per_token": 7.5e-07,
"output_cost_per_token": 4.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59738,7 +59742,7 @@
"input_cost_per_token": 2e-07,
"output_cost_per_token": 1.25e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 400000,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59776,7 +59780,7 @@
"input_cost_per_token": 2e-07,
"output_cost_per_token": 1.2e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1050000,
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59795,7 +59799,7 @@
"input_cost_per_token": 2e-06,
"output_cost_per_token": 1.2e-05,
"litellm_provider": "openrouter",
"max_input_tokens": 1050000,
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
@ -59852,9 +59856,9 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 2000000,
"max_output_tokens": 1800000,
"max_tokens": 1800000,
"max_input_tokens": 1000000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.20",
"supports_function_calling": true,
@ -59871,9 +59875,9 @@
"input_cost_per_token": 1.25e-06,
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 2000000,
"max_output_tokens": 1800000,
"max_tokens": 1800000,
"max_input_tokens": 1000000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.20-multi-agent",
"supports_function_calling": false,
@ -59891,8 +59895,8 @@
"output_cost_per_token": 2.5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 900000,
"max_tokens": 900000,
"max_output_tokens": 1000000,
"max_tokens": 1000000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.3",
"supports_function_calling": true,
@ -59910,8 +59914,8 @@
"output_cost_per_token": 6e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 500000,
"max_output_tokens": 450000,
"max_tokens": 450000,
"max_output_tokens": 500000,
"max_tokens": 500000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.5",
"supports_function_calling": true,
@ -59929,8 +59933,8 @@
"output_cost_per_token": 6e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 500000,
"max_output_tokens": 450000,
"max_tokens": 450000,
"max_output_tokens": 500000,
"max_tokens": 500000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-4.6",
"supports_function_calling": true,
@ -59948,8 +59952,8 @@
"output_cost_per_token": 2e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 256000,
"max_output_tokens": 230400,
"max_tokens": 230400,
"max_output_tokens": 256000,
"max_tokens": 256000,
"mode": "chat",
"source": "https://openrouter.ai/x-ai/grok-build-0.1",
"supports_function_calling": true,
@ -59961,5 +59965,26 @@
"supports_audio_input": false,
"cache_read_input_token_cost": 2e-07,
"supports_prompt_caching": true
},
"baseten/zai-org/GLM-5.3": {
"cache_read_input_token_cost": 1.4e-07,
"input_cost_per_token": 1.4e-06,
"litellm_provider": "baseten",
"max_input_tokens": 1048576,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 4.4e-06,
"source": "https://www.baseten.co/pricing/",
"supported_modalities": [
"text"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_tool_choice": true
}
}

View file

@ -9,7 +9,6 @@ import os
import pytest
from litellm.litellm_core_utils.fallback_generalizations import (
get_fallback_generalization_rules,
match_capability_generalizations,
@ -248,6 +247,57 @@ def test_azure_ai_claude_1m_context_entries(cost_map: dict):
assert cost_map[model]["max_input_tokens"] == 200000, model
# OpenRouter headline rates from GET https://openrouter.ai/api/v1/models.
# These were the catalog values that disagreed with that API (and, for the
# two spotlight models, the public model pages that their source fields cite).
_OPENROUTER_LIVE_COSTS = {
"openrouter/qwen/qwen3.5-plus-02-15": (2.6e-07, 1.56e-06, None),
"openrouter/openai/gpt-oss-120b": (3.7e-08, 1.7e-07, None),
"openrouter/qwen/qwen3-coder-plus": (6.5e-07, 3.25e-06, None),
"openrouter/qwen/qwen3.5-flash-02-23": (6.5e-08, 2.6e-07, None),
"openrouter/qwen/qwen3.5-27b": (1.95e-07, 1.56e-06, None),
"openrouter/gryphe/mythomax-l2-13b": (6e-08, 6e-08, None),
"openrouter/mancer/weaver": (4e-07, 7.5e-07, None),
"openrouter/xiaomi/mimo-v2.5-pro": (4.35e-07, 8.7e-07, 3.6e-09),
"openrouter/moonshotai/kimi-k2.5": (4.5e-07, 2.25e-06, 7e-08),
"openrouter/z-ai/glm-5": (6e-07, 1.92e-06, None),
}
_OPENROUTER_STALE_COSTS = {
"openrouter/qwen/qwen3.5-plus-02-15": (4e-07, 2.4e-06),
"openrouter/openai/gpt-oss-120b": (1.8e-07, 8e-07),
"openrouter/gryphe/mythomax-l2-13b": (1.875e-06, 1.875e-06),
}
@pytest.mark.parametrize(
"cost_map",
[_load_root_cost_map(), GetModelCostMap.load_local_model_cost_map()],
ids=["root", "bundled_backup"],
)
def test_openrouter_catalog_costs_match_live_headline_rates(cost_map: dict):
"""openrouter/* spend tracking reads these catalog fields. The values must
stay aligned with OpenRouter's published headline rate, not the stale
figures that over/under-counted by up to 30x. Both maps are checked so
the root file and bundled backup cannot drift apart."""
control = cost_map["openrouter/anthropic/claude-opus-5"]
assert control["input_cost_per_token"] == 5e-06
assert control["output_cost_per_token"] == 2.5e-05
assert control["cache_read_input_token_cost"] == 5e-07
for model, (inp, out, cache) in _OPENROUTER_LIVE_COSTS.items():
entry = cost_map[model]
assert entry["input_cost_per_token"] == inp, model
assert entry["output_cost_per_token"] == out, model
if cache is not None:
assert entry["cache_read_input_token_cost"] == cache, model
for model, (stale_in, stale_out) in _OPENROUTER_STALE_COSTS.items():
entry = cost_map[model]
assert entry["input_cost_per_token"] != stale_in, model
assert entry["output_cost_per_token"] != stale_out, model
def test_get_model_cost_map_stamps_loaded_at(monkeypatch):
"""The load time feeds each pod's reload-due decision; a load that does not stamp it
would make manual reload requests race the proxy's startup"""

View file

@ -0,0 +1,154 @@
import json
from pathlib import Path
import pytest
import litellm
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
from litellm.types.utils import PromptTokensDetailsWrapper, Usage
from litellm.utils import supports_function_calling, supports_prompt_caching
REPO_ROOT = Path(__file__).parents[2]
MAIN_PATH = REPO_ROOT / "model_prices_and_context_window.json"
BACKUP_PATH = REPO_ROOT / "litellm" / "model_prices_and_context_window_backup.json"
MODEL = "baseten/zai-org/GLM-5.3"
INPUT_COST = 1.4e-06
CACHED_INPUT_COST = 1.4e-07
OUTPUT_COST = 4.4e-06
def _load(path):
with open(path) as f:
return json.load(f)
@pytest.fixture
def local_model_cost_map(monkeypatch):
"""Force get_model_info to resolve against the in-repo cost map instead of the
remote one fetched at import time, which still carries the pre-merge registry."""
monkeypatch.setenv("LITELLM_LOCAL_MODEL_COST_MAP", "True")
monkeypatch.setattr(litellm, "model_cost", litellm.get_model_cost_map(url=""))
litellm.get_model_info.cache_clear()
yield
litellm.get_model_info.cache_clear()
def test_baseten_glm_5_3_specs():
info = _load(MAIN_PATH).get(MODEL)
assert info is not None, f"{MODEL} missing from model_prices_and_context_window.json"
assert info["litellm_provider"] == "baseten"
assert info["mode"] == "chat"
assert info["input_cost_per_token"] == INPUT_COST
assert info["output_cost_per_token"] == OUTPUT_COST
assert info["cache_read_input_token_cost"] == CACHED_INPUT_COST
assert info["max_input_tokens"] == 1048576
assert info["max_output_tokens"] == 262144
assert info["max_tokens"] == 262144
assert info["supports_function_calling"] is True
assert info["supports_prompt_caching"] is True
assert info["supports_response_schema"] is True
assert info["supports_tool_choice"] is True
assert info["supported_modalities"] == ["text"]
assert info["supported_output_modalities"] == ["text"]
routed_model, provider, _, _ = get_llm_provider(model=MODEL)
assert routed_model == "zai-org/GLM-5.3"
assert provider == "baseten"
def test_baseten_glm_5_3_capabilities_are_visible_to_callers(local_model_cost_map):
"""The entry advertises prompt caching and tool calling, so the helpers every
caller checks before sending a request must say so too."""
assert supports_prompt_caching(model=MODEL) is True
assert supports_function_calling(model=MODEL) is True
info = litellm.get_model_info(model="zai-org/GLM-5.3", custom_llm_provider="baseten")
assert info["max_input_tokens"] == 1048576
assert info["max_output_tokens"] == 262144
def test_cached_prompt_tokens_bill_at_the_cached_rate(local_model_cost_map):
"""A cache hit reports its reused tokens under prompt_tokens_details, and those
tokens cost a tenth of the input rate, not the full rate and not nothing."""
usage = Usage(
prompt_tokens=21010,
completion_tokens=100,
total_tokens=21110,
prompt_tokens_details=PromptTokensDetailsWrapper(cached_tokens=20992),
)
prompt_cost, completion_cost = litellm.cost_per_token(
model=MODEL, usage_object=usage, custom_llm_provider="baseten"
)
assert prompt_cost == pytest.approx(18 * INPUT_COST + 20992 * CACHED_INPUT_COST)
assert completion_cost == pytest.approx(100 * OUTPUT_COST)
def test_backup_matches_main():
"""Ensure the bundled (backup) cost map stays in sync with the canonical file.
Both keys are asserted present first: comparing two ``.get`` results alone passes
just as happily when neither file has the entry at all, which is the exact state
this test exists to catch.
"""
main_cost = _load(MAIN_PATH)
backup_cost = _load(BACKUP_PATH)
assert MODEL in main_cost, f"{MODEL} missing from model_prices_and_context_window.json"
assert MODEL in backup_cost, f"{MODEL} missing from model_prices_and_context_window_backup.json"
assert backup_cost[MODEL] == main_cost[MODEL], f"{MODEL} differs between main and backup model cost maps"
def test_entry_advertises_only_what_the_baseten_path_accepts(local_model_cost_map):
"""The entry must not claim a capability whose request parameter BasetenConfig
refuses.
``BasetenConfig.get_supported_openai_params`` returns one hardcoded list for every
Baseten model, and it carries neither ``parallel_tool_calls`` nor
``reasoning_effort``. Baseten's own Model API does take ``reasoning_effort``, but
litellm's Baseten path drops it (``drop_params=True``) or raises
``UnsupportedParamsError`` (``drop_params=False``), so declaring
``supports_parallel_function_calling``, ``supports_reasoning`` or
``reasoning_effort_levels`` here would advertise a level the gateway then refuses to
send. Wiring those params through the Baseten config is separate work; until it
lands, the registry stays honest.
"""
supported = litellm.get_supported_openai_params(model="zai-org/GLM-5.3", custom_llm_provider="baseten")
assert supported is not None
entry = _load(MAIN_PATH)[MODEL]
capability_to_param = {
"supports_function_calling": "tools",
"supports_tool_choice": "tool_choice",
"supports_response_schema": "response_format",
"supports_parallel_function_calling": "parallel_tool_calls",
"supports_reasoning": "reasoning_effort",
}
for capability, param in capability_to_param.items():
if entry.get(capability):
assert param in supported, f"{MODEL} advertises {capability} but baseten drops/rejects {param}"
assert "reasoning_effort_levels" not in entry, (
"reasoning_effort_levels advertises accepted reasoning_effort values, which the Baseten path does not accept"
)
assert "thinking_always_on" not in entry, (
"thinking_always_on is only read by AnthropicModelInfo._is_always_on_thinking_model, "
"which no Baseten route reaches"
)
with pytest.raises(litellm.UnsupportedParamsError):
litellm.utils.get_optional_params(
model="zai-org/GLM-5.3",
custom_llm_provider="baseten",
parallel_tool_calls=True,
reasoning_effort="high",
drop_params=False,
)

View file

@ -2779,7 +2779,7 @@ def test_model_info_for_openrouter_kimi_k2_5():
Model properties from OpenRouter API:
- context_length: 262144
- pricing: prompt=$0.0000006, completion=$0.000003, input_cache_read=$0.0000001
- pricing: prompt=$0.00000045, completion=$0.00000225, input_cache_read=$0.00000007
- modality: text+image->text (supports vision)
- supports: tool_choice, tools (function calling)
"""
@ -2804,9 +2804,9 @@ def test_model_info_for_openrouter_kimi_k2_5():
assert model_info["max_tokens"] == 262144
# Verify pricing
assert model_info["input_cost_per_token"] == 6e-07
assert model_info["output_cost_per_token"] == 3e-06
assert model_info["cache_read_input_token_cost"] == 1e-07
assert model_info["input_cost_per_token"] == 4.5e-07
assert model_info["output_cost_per_token"] == 2.25e-06
assert model_info["cache_read_input_token_cost"] == 7e-08
# Verify capabilities
assert model_info["supports_vision"] is True