From acf149383abc4238c691322d7e4db872205c0d47 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Wed, 14 Jan 2026 16:39:48 -0300 Subject: [PATCH 01/13] chore(openai): add support for gpt 5.2 codex (#129) --- internal/providers/configs/openai.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/providers/configs/openai.json b/internal/providers/configs/openai.json index 05086a9ff160030d1969cb1ce3769abb3b7ef1e3..e66e79a5e99fc94e4d7cac97244ef87b02cbd4e3 100644 --- a/internal/providers/configs/openai.json +++ b/internal/providers/configs/openai.json @@ -21,6 +21,20 @@ "default_reasoning_effort": "medium", "supports_attachments": true }, + { + "id": "gpt-5.2-codex", + "name": "GPT-5.2 Codex", + "cost_per_1m_in": 1.75, + "cost_per_1m_out": 14, + "cost_per_1m_in_cached": 0.175, + "cost_per_1m_out_cached": 0.175, + "context_window": 400000, + "default_max_tokens": 128000, + "can_reason": true, + "reasoning_levels": ["minimal", "low", "medium", "high"], + "default_reasoning_effort": "medium", + "supports_attachments": true + }, { "id": "gpt-5.1", "name": "GPT-5.1", From 6ec2c1e40dcb0a2f77d25faef67d3956378f5654 Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Thu, 15 Jan 2026 02:44:41 +0000 Subject: [PATCH 03/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 334 ++++++++++----------- 1 file changed, 154 insertions(+), 180 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index 208634ff3c424868281db4fc8e3b830b79cab2e0..48aaaf3242aea2929aa45d51e50ce810379debf1 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -156,26 +156,13 @@ "supports_attachments": true, "options": {} }, - { - "id": "anthropic/claude-3.5-haiku-20241022", - "name": "Anthropic: Claude 3.5 Haiku (2024-10-22)", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 4096, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "anthropic/claude-3.5-sonnet", "name": "Anthropic: Claude 3.5 Sonnet", "cost_per_1m_in": 6, "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_in_cached": 7.5, + "cost_per_1m_out_cached": 0.6, "context_window": 200000, "default_max_tokens": 4096, "can_reason": false, @@ -190,7 +177,7 @@ "cost_per_1m_in_cached": 3.75, "cost_per_1m_out_cached": 0.3, "context_window": 200000, - "default_max_tokens": 64000, + "default_max_tokens": 32000, "can_reason": true, "reasoning_levels": [ "low", @@ -573,10 +560,10 @@ { "id": "deepseek/deepseek-chat-v3.1", "name": "DeepSeek: DeepSeek V3.1", - "cost_per_1m_in": 0.56, - "cost_per_1m_out": 1.68, + "cost_per_1m_in": 0.21, + "cost_per_1m_out": 0.7899999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.16799999999999998, "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, @@ -631,11 +618,11 @@ "id": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", "cost_per_1m_in": 0.26, - "cost_per_1m_out": 0.39, + "cost_per_1m_out": 0.38, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.13, + "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -652,9 +639,9 @@ "cost_per_1m_in": 0.21, "cost_per_1m_out": 0.32, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16799999999999998, + "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -687,10 +674,10 @@ { "id": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 2.4, + "cost_per_1m_in": 0.7, + "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.35, "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, @@ -703,6 +690,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "deepseek/deepseek-r1-distill-llama-70b", + "name": "DeepSeek: R1 Distill Llama 70B", + "cost_per_1m_in": 0.03, + "cost_per_1m_out": 0.11, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "google/gemini-2.0-flash-001", "name": "Google: Gemini 2.0 Flash", @@ -788,25 +794,6 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 1048576, - "default_max_tokens": 32768, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": true, - "options": {} - }, - { - "id": "google/gemini-2.5-flash-preview-09-2025", - "name": "Google: Gemini 2.5 Flash Preview 09-2025", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.075, - "context_window": 1048576, "default_max_tokens": 32767, "can_reason": true, "reasoning_levels": [ @@ -913,6 +900,32 @@ "supports_attachments": true, "options": {} }, + { + "id": "google/gemma-3-27b-it", + "name": "Google: Gemma 3 27B", + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.15, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 96000, + "default_max_tokens": 48000, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "google/gemma-3-27b-it:free", + "name": "Google: Gemma 3 27B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 128000, + "default_max_tokens": 12800, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "inception/mercury", "name": "Inception: Mercury", @@ -965,19 +978,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "meta-llama/llama-3.2-3b-instruct", - "name": "Meta: Llama 3.2 3B Instruct", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.049999999999999996, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 16000, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, { "id": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", @@ -1250,6 +1250,19 @@ "supports_attachments": false, "options": {} }, + { + "id": "mistralai/mistral-7b-instruct", + "name": "Mistral: Mistral 7B Instruct", + "cost_per_1m_in": 0.028, + "cost_per_1m_out": 0.054, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 32768, + "default_max_tokens": 8192, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "mistralai/mistral-7b-instruct:free", "name": "Mistral: Mistral 7B Instruct (free)", @@ -1328,19 +1341,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "mistralai/mistral-small-3.1-24b-instruct:free", - "name": "Mistral: Mistral Small 3.1 24B (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "mistralai/mistral-small-3.2-24b-instruct", "name": "Mistral: Mistral Small 3.2 24B", @@ -1448,12 +1448,12 @@ { "id": "moonshotai/kimi-k2-0905", "name": "MoonshotAI: Kimi K2 0905", - "cost_per_1m_in": 0.39, - "cost_per_1m_out": 1.9, + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.15, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -1461,12 +1461,12 @@ { "id": "moonshotai/kimi-k2-0905:exacto", "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 1, - "cost_per_1m_out": 3, + "cost_per_1m_in": 1.15, + "cost_per_1m_out": 8, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.15, "context_window": 262144, - "default_max_tokens": 8192, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -1479,7 +1479,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": true, "reasoning_levels": [ "low", @@ -1530,7 +1530,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": true, "reasoning_levels": [ "low", @@ -1649,6 +1649,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "nousresearch/hermes-4-70b", + "name": "Nous: Hermes 4 70B", + "cost_per_1m_in": 0.11, + "cost_per_1m_out": 0.38, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "openai/codex-mini", "name": "OpenAI: Codex Mini", @@ -1739,9 +1758,9 @@ "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.03, + "cost_per_1m_out_cached": 0.024999999999999998, "context_window": 1047576, - "default_max_tokens": 104757, + "default_max_tokens": 16384, "can_reason": false, "supports_attachments": true, "options": {} @@ -1989,7 +2008,7 @@ "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.125, + "cost_per_1m_out_cached": 0.13, "context_window": 400000, "default_max_tokens": 64000, "can_reason": true, @@ -2123,6 +2142,25 @@ "supports_attachments": true, "options": {} }, + { + "id": "openai/gpt-5.2-codex", + "name": "OpenAI: GPT-5.2-Codex", + "cost_per_1m_in": 1.75, + "cost_per_1m_out": 14, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.175, + "context_window": 400000, + "default_max_tokens": 64000, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, { "id": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", @@ -2422,25 +2460,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwq-32b", - "name": "Qwen: QwQ 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.58, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen-plus-2025-07-28", "name": "Qwen: Qwen Plus 0728", @@ -2579,12 +2598,12 @@ { "id": "qwen/qwen3-235b-a22b-2507", "name": "Qwen: Qwen3 235B A22B Instruct 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.55, + "cost_per_1m_in": 0.22, + "cost_per_1m_out": 0.88, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 32768, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": false, "options": {} @@ -2611,12 +2630,12 @@ { "id": "qwen/qwen3-30b-a3b", "name": "Qwen: Qwen3 30B A3B", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.28, + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 65536, + "default_max_tokens": 4000, "can_reason": true, "reasoning_levels": [ "low", @@ -2659,25 +2678,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwen3-4b:free", - "name": "Qwen: Qwen3 4B (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 40960, - "default_max_tokens": 4096, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen3-8b", "name": "Qwen: Qwen3 8B", @@ -2700,12 +2700,12 @@ { "id": "qwen/qwen3-coder-30b-a3b-instruct", "name": "Qwen: Qwen3 Coder 30B A3B Instruct", - "cost_per_1m_in": 0.07, - "cost_per_1m_out": 0.28, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -2713,12 +2713,12 @@ { "id": "qwen/qwen3-coder", "name": "Qwen: Qwen3 Coder 480B A35B", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 1.7999999999999998, + "cost_per_1m_in": 0.28, + "cost_per_1m_out": 1.2, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 32768, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -2736,19 +2736,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwen3-coder:free", - "name": "Qwen: Qwen3 Coder 480B A35B (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262000, - "default_max_tokens": 131000, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen3-coder-flash", "name": "Qwen: Qwen3 Coder Flash", @@ -2804,8 +2791,8 @@ { "id": "qwen/qwen3-next-80b-a3b-thinking", "name": "Qwen: Qwen3 Next 80B A3B Thinking", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.3, + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 1.2, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -2836,12 +2823,12 @@ { "id": "qwen/qwen3-vl-30b-a3b-instruct", "name": "Qwen: Qwen3 VL 30B A3B Instruct", - "cost_per_1m_in": 0.29, - "cost_per_1m_out": 1, + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": true, "options": {} @@ -2849,12 +2836,12 @@ { "id": "qwen/qwen3-vl-30b-a3b-thinking", "name": "Qwen: Qwen3 VL 30B A3B Thinking", - "cost_per_1m_in": 0.29, + "cost_per_1m_in": 0.19999999999999998, "cost_per_1m_out": 1, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, + "context_window": 131072, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2865,19 +2852,6 @@ "supports_attachments": true, "options": {} }, - { - "id": "qwen/qwen3-vl-8b-instruct", - "name": "Qwen: Qwen3 VL 8B Instruct", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 0.7, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 16384, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "qwen/qwen3-vl-8b-thinking", "name": "Qwen: Qwen3 VL 8B Thinking", @@ -3071,7 +3045,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.11, "context_window": 131072, - "default_max_tokens": 49152, + "default_max_tokens": 48000, "can_reason": true, "reasoning_levels": [ "low", @@ -3142,12 +3116,12 @@ { "id": "z-ai/glm-4.6", "name": "Z.AI: GLM 4.6", - "cost_per_1m_in": 0.39, - "cost_per_1m_out": 1.9, + "cost_per_1m_in": 0.55, + "cost_per_1m_out": 2.2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.11, "context_window": 204800, - "default_max_tokens": 102400, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -3183,9 +3157,9 @@ "cost_per_1m_in": 0.3, "cost_per_1m_out": 0.8999999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.055, + "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 16384, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -3199,12 +3173,12 @@ { "id": "z-ai/glm-4.7", "name": "Z.AI: GLM 4.7", - "cost_per_1m_in": 0.42, - "cost_per_1m_out": 2.2, + "cost_per_1m_in": 0.54, + "cost_per_1m_out": 1.9800000000000002, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.099, "context_window": 204800, - "default_max_tokens": 102400, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", From 1fe2f6c9685da9222d625823e6ede4fc6dadf315 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Thu, 15 Jan 2026 10:48:45 -0300 Subject: [PATCH 04/13] chore(copilot): write response to disk for debugging --- .gitignore | 3 +++ cmd/copilot/main.go | 12 +++++++++++- internal/providers/configs/copilot.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 11bbf384b3ceeb76016096c858f821fbba1d335e..c6efbc0c68645c097aa6d5bfb235b4d3236a1da2 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,6 @@ go.work.sum # crush .crush dist/ + +# temp dir +/tmp diff --git a/cmd/copilot/main.go b/cmd/copilot/main.go index 38389a97176d17a93f550593480b037c8fa720cd..d530ec72bde719c2493aa44059d7e58bfa28fd49 100644 --- a/cmd/copilot/main.go +++ b/cmd/copilot/main.go @@ -5,6 +5,7 @@ import ( "context" "encoding/json" "fmt" + "io" "net/http" "os" "path/filepath" @@ -128,8 +129,17 @@ func fetchCopilotModels() ([]Model, error) { return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) } + bts, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("unable to read response body: %w", err) + } + + // for debugging + _ = os.MkdirAll("tmp", 0o700) + _ = os.WriteFile("tmp/copilot-response.json", bts, 0o600) + var data Response - if err := json.NewDecoder(resp.Body).Decode(&data); err != nil { + if err := json.Unmarshal(bts, &data); err != nil { return nil, fmt.Errorf("unable to unmarshal json: %w", err) } return data.Data, nil diff --git a/internal/providers/configs/copilot.json b/internal/providers/configs/copilot.json index b6de3b0b879a5ca067bd80edb84d39aeefa1548e..93f1e4dbe9533f7a87849e24b7c9fe92b373dac7 100644 --- a/internal/providers/configs/copilot.json +++ b/internal/providers/configs/copilot.json @@ -26,7 +26,7 @@ "cost_per_1m_out": 0, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 144000, + "context_window": 160000, "default_max_tokens": 16000, "can_reason": false, "supports_attachments": false, From d8f5e2dc78313e11ac251d85c94ec75dc9846c4f Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Fri, 16 Jan 2026 02:45:21 +0000 Subject: [PATCH 05/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 574 +++++++++------------ 1 file changed, 235 insertions(+), 339 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index 48aaaf3242aea2929aa45d51e50ce810379debf1..fb4c4768cec46253491e347e5079769aac10edf8 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -33,19 +33,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "allenai/olmo-3-7b-instruct", - "name": "AllenAI: Olmo 3 7B Instruct", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.19999999999999998, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 65536, - "default_max_tokens": 32768, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, { "id": "allenai/olmo-3.1-32b-instruct", "name": "AllenAI: Olmo 3.1 32B Instruct", @@ -161,8 +148,8 @@ "name": "Anthropic: Claude 3.5 Sonnet", "cost_per_1m_in": 6, "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 7.5, - "cost_per_1m_out_cached": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, "context_window": 200000, "default_max_tokens": 4096, "can_reason": false, @@ -177,7 +164,7 @@ "cost_per_1m_in_cached": 3.75, "cost_per_1m_out_cached": 0.3, "context_window": 200000, - "default_max_tokens": 32000, + "default_max_tokens": 64000, "can_reason": true, "reasoning_levels": [ "low", @@ -579,12 +566,12 @@ { "id": "deepseek/deepseek-v3.1-terminus", "name": "DeepSeek: DeepSeek V3.1 Terminus", - "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.7899999999999999, + "cost_per_1m_in": 0.22999999999999998, + "cost_per_1m_out": 0.8999999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16799999999999998, + "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -599,10 +586,10 @@ "id": "deepseek/deepseek-v3.1-terminus:exacto", "name": "DeepSeek: DeepSeek V3.1 Terminus (exacto)", "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.7999999999999999, + "cost_per_1m_out": 0.7899999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, + "cost_per_1m_out_cached": 0.16799999999999998, + "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ @@ -618,11 +605,11 @@ "id": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", "cost_per_1m_in": 0.26, - "cost_per_1m_out": 0.38, + "cost_per_1m_out": 0.39, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.13, "context_window": 163840, - "default_max_tokens": 32768, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -636,8 +623,8 @@ { "id": "deepseek/deepseek-v3.2-exp", "name": "DeepSeek: DeepSeek V3.2 Exp", - "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.32, + "cost_per_1m_in": 0.27, + "cost_per_1m_out": 0.41, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, @@ -656,11 +643,11 @@ "id": "deepseek/deepseek-r1", "name": "DeepSeek: R1", "cost_per_1m_in": 0.7, - "cost_per_1m_out": 2.4, + "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 81920, + "context_window": 64000, + "default_max_tokens": 8000, "can_reason": true, "reasoning_levels": [ "low", @@ -674,10 +661,10 @@ { "id": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.7, - "cost_per_1m_out": 2.5, + "cost_per_1m_in": 0.7999999999999999, + "cost_per_1m_out": 2.4, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.35, + "cost_per_1m_out_cached": 0, "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, @@ -791,8 +778,8 @@ "name": "Google: Gemini 2.5 Flash Lite Preview 09-2025", "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_in_cached": 1, + "cost_per_1m_out_cached": 0.01, "context_window": 1048576, "default_max_tokens": 32767, "can_reason": true, @@ -805,6 +792,25 @@ "supports_attachments": true, "options": {} }, + { + "id": "google/gemini-2.5-flash-preview-09-2025", + "name": "Google: Gemini 2.5 Flash Preview 09-2025", + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 2.5, + "cost_per_1m_in_cached": 0.3833, + "cost_per_1m_out_cached": 0.075, + "context_window": 1048576, + "default_max_tokens": 32768, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, { "id": "google/gemini-2.5-pro", "name": "Google: Gemini 2.5 Pro", @@ -900,32 +906,6 @@ "supports_attachments": true, "options": {} }, - { - "id": "google/gemma-3-27b-it", - "name": "Google: Gemma 3 27B", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 96000, - "default_max_tokens": 48000, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, - { - "id": "google/gemma-3-27b-it:free", - "name": "Google: Gemma 3 27B (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "inception/mercury", "name": "Inception: Mercury", @@ -968,12 +948,12 @@ { "id": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.39999999999999997, + "cost_per_1m_in": 0.88, + "cost_per_1m_out": 0.88, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 8192, + "default_max_tokens": 13107, "can_reason": false, "supports_attachments": false, "options": {} @@ -1007,8 +987,8 @@ { "id": "meta-llama/llama-4-maverick", "name": "Meta: Llama 4 Maverick", - "cost_per_1m_in": 0.27, - "cost_per_1m_out": 0.85, + "cost_per_1m_in": 0.22, + "cost_per_1m_out": 0.88, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 1048576, @@ -1054,10 +1034,10 @@ "name": "MiniMax: MiniMax M2.1", "cost_per_1m_in": 0.3, "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_in_cached": 0.375, + "cost_per_1m_out_cached": 0.03, "context_window": 204800, - "default_max_tokens": 20480, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -1250,32 +1230,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "mistralai/mistral-7b-instruct", - "name": "Mistral: Mistral 7B Instruct", - "cost_per_1m_in": 0.028, - "cost_per_1m_out": 0.054, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, - { - "id": "mistralai/mistral-7b-instruct:free", - "name": "Mistral: Mistral 7B Instruct (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, { "id": "mistralai/mistral-large-2512", "name": "Mistral: Mistral Large 3 2512", @@ -1341,6 +1295,32 @@ "supports_attachments": false, "options": {} }, + { + "id": "mistralai/mistral-small-3.1-24b-instruct", + "name": "Mistral: Mistral Small 3.1 24B", + "cost_per_1m_in": 0.03, + "cost_per_1m_out": 0.11, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "mistralai/mistral-small-3.1-24b-instruct:free", + "name": "Mistral: Mistral Small 3.1 24B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 128000, + "default_max_tokens": 12800, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "mistralai/mistral-small-3.2-24b-instruct", "name": "Mistral: Mistral Small 3.2 24B", @@ -1393,6 +1373,19 @@ "supports_attachments": false, "options": {} }, + { + "id": "mistralai/pixtral-12b", + "name": "Mistral: Pixtral 12B", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.15, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 13107, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "mistralai/pixtral-large-2411", "name": "Mistral: Pixtral Large 2411", @@ -1448,12 +1441,12 @@ { "id": "moonshotai/kimi-k2-0905", "name": "MoonshotAI: Kimi K2 0905", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.5, + "cost_per_1m_in": 0.59, + "cost_per_1m_out": 2.99, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.15, + "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -1461,12 +1454,12 @@ { "id": "moonshotai/kimi-k2-0905:exacto", "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 1.15, - "cost_per_1m_out": 8, + "cost_per_1m_in": 1, + "cost_per_1m_out": 3, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.15, + "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": false, "options": {} @@ -1479,7 +1472,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": true, "reasoning_levels": [ "low", @@ -1530,7 +1523,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": true, "reasoning_levels": [ "low", @@ -1649,44 +1642,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "nousresearch/hermes-4-70b", - "name": "Nous: Hermes 4 70B", - "cost_per_1m_in": 0.11, - "cost_per_1m_out": 0.38, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, - { - "id": "openai/codex-mini", - "name": "OpenAI: Codex Mini", - "cost_per_1m_in": 1.5, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.375, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": true, - "options": {} - }, { "id": "openai/gpt-4-turbo", "name": "OpenAI: GPT-4 Turbo", @@ -1758,9 +1713,9 @@ "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, + "cost_per_1m_out_cached": 0.03, "context_window": 1047576, - "default_max_tokens": 16384, + "default_max_tokens": 104757, "can_reason": false, "supports_attachments": true, "options": {} @@ -1771,7 +1726,7 @@ "cost_per_1m_in": 2.5, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, + "cost_per_1m_out_cached": 0, "context_window": 128000, "default_max_tokens": 8192, "can_reason": false, @@ -1951,9 +1906,9 @@ "cost_per_1m_in": 0.25, "cost_per_1m_out": 2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.03, + "cost_per_1m_out_cached": 0.024999999999999998, "context_window": 400000, - "default_max_tokens": 40000, + "default_max_tokens": 64000, "can_reason": true, "reasoning_levels": [ "low", @@ -2008,7 +1963,7 @@ "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.13, + "cost_per_1m_out_cached": 0.125, "context_window": 400000, "default_max_tokens": 64000, "can_reason": true, @@ -2118,7 +2073,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.175, "context_window": 128000, - "default_max_tokens": 8192, + "default_max_tokens": 16000, "can_reason": false, "supports_attachments": true, "options": {} @@ -2164,12 +2119,12 @@ { "id": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.18, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.49, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 32768, + "default_max_tokens": 13107, "can_reason": true, "reasoning_levels": [ "low", @@ -2460,90 +2415,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwen-plus-2025-07-28", - "name": "Qwen: Qwen Plus 0728", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1000000, - "default_max_tokens": 16384, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, - { - "id": "qwen/qwen-plus-2025-07-28:thinking", - "name": "Qwen: Qwen Plus 0728 (thinking)", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1000000, - "default_max_tokens": 16384, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, - { - "id": "qwen/qwen-vl-max", - "name": "Qwen: Qwen VL Max", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 3.1999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 4096, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, - { - "id": "qwen/qwen-max", - "name": "Qwen: Qwen-Max ", - "cost_per_1m_in": 1.5999999999999999, - "cost_per_1m_out": 6.3999999999999995, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.64, - "context_window": 32768, - "default_max_tokens": 4096, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, - { - "id": "qwen/qwen-plus", - "name": "Qwen: Qwen-Plus", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16, - "context_window": 131072, - "default_max_tokens": 4096, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, - { - "id": "qwen/qwen-turbo", - "name": "Qwen: Qwen-Turbo", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.19999999999999998, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.02, - "context_window": 1000000, - "default_max_tokens": 4096, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen-2.5-7b-instruct", "name": "Qwen: Qwen2.5 7B Instruct", @@ -2576,25 +2447,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwen3-235b-a22b", - "name": "Qwen: Qwen3 235B A22B", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen3-235b-a22b-2507", "name": "Qwen: Qwen3 235B A22B Instruct 2507", @@ -2630,12 +2482,12 @@ { "id": "qwen/qwen3-30b-a3b", "name": "Qwen: Qwen3 30B A3B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.6, + "cost_per_1m_in": 0.08, + "cost_per_1m_out": 0.28, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 4000, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -2649,16 +2501,35 @@ { "id": "qwen/qwen3-30b-a3b-instruct-2507", "name": "Qwen: Qwen3 30B A3B Instruct 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.33, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} }, + { + "id": "qwen/qwen3-30b-a3b-thinking-2507", + "name": "Qwen: Qwen3 30B A3B Thinking 2507", + "cost_per_1m_in": 0.09, + "cost_per_1m_out": 0.3, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 262144, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", @@ -2678,6 +2549,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "qwen/qwen3-4b:free", + "name": "Qwen: Qwen3 4B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 40960, + "default_max_tokens": 4096, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "qwen/qwen3-8b", "name": "Qwen: Qwen3 8B", @@ -2700,12 +2590,12 @@ { "id": "qwen/qwen3-coder-30b-a3b-instruct", "name": "Qwen: Qwen3 Coder 30B A3B Instruct", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, + "cost_per_1m_in": 0.07, + "cost_per_1m_out": 0.28, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -2713,12 +2603,12 @@ { "id": "qwen/qwen3-coder", "name": "Qwen: Qwen3 Coder 480B A35B", - "cost_per_1m_in": 0.28, - "cost_per_1m_out": 1.2, + "cost_per_1m_in": 0.22, + "cost_per_1m_out": 1.7999999999999998, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 32768, "can_reason": false, "supports_attachments": false, "options": {} @@ -2737,53 +2627,40 @@ "options": {} }, { - "id": "qwen/qwen3-coder-flash", - "name": "Qwen: Qwen3 Coder Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.08, - "context_window": 128000, - "default_max_tokens": 32768, - "can_reason": false, - "supports_attachments": false, - "options": {} - }, - { - "id": "qwen/qwen3-coder-plus", - "name": "Qwen: Qwen3 Coder Plus", - "cost_per_1m_in": 1, - "cost_per_1m_out": 5, + "id": "qwen/qwen3-coder:free", + "name": "Qwen: Qwen3 Coder 480B A35B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 128000, - "default_max_tokens": 32768, + "cost_per_1m_out_cached": 0, + "context_window": 262000, + "default_max_tokens": 131000, "can_reason": false, "supports_attachments": false, "options": {} }, { - "id": "qwen/qwen3-max", - "name": "Qwen: Qwen3 Max", - "cost_per_1m_in": 1.2, - "cost_per_1m_out": 6, + "id": "qwen/qwen3-next-80b-a3b-instruct", + "name": "Qwen: Qwen3 Next 80B A3B Instruct", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 1.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.24, - "context_window": 256000, - "default_max_tokens": 16384, + "cost_per_1m_out_cached": 0, + "context_window": 262144, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} }, { - "id": "qwen/qwen3-next-80b-a3b-instruct", - "name": "Qwen: Qwen3 Next 80B A3B Instruct", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 1.2, + "id": "qwen/qwen3-next-80b-a3b-instruct:free", + "name": "Qwen: Qwen3 Next 80B A3B Instruct (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -2820,6 +2697,25 @@ "supports_attachments": true, "options": {} }, + { + "id": "qwen/qwen3-vl-235b-a22b-thinking", + "name": "Qwen: Qwen3 VL 235B A22B Thinking", + "cost_per_1m_in": 0.44999999999999996, + "cost_per_1m_out": 3.5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 262144, + "default_max_tokens": 131072, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, { "id": "qwen/qwen3-vl-30b-a3b-instruct", "name": "Qwen: Qwen3 VL 30B A3B Instruct", @@ -2836,31 +2732,12 @@ { "id": "qwen/qwen3-vl-30b-a3b-thinking", "name": "Qwen: Qwen3 VL 30B A3B Thinking", - "cost_per_1m_in": 0.19999999999999998, + "cost_per_1m_in": 0.29, "cost_per_1m_out": 1, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 16384, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": true, - "options": {} - }, - { - "id": "qwen/qwen3-vl-8b-thinking", - "name": "Qwen: Qwen3 VL 8B Thinking", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 2.0999999999999996, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 16384, + "context_window": 262144, + "default_max_tokens": 131072, "can_reason": true, "reasoning_levels": [ "low", @@ -2990,7 +2867,7 @@ "id": "alibaba/tongyi-deepresearch-30b-a3b", "name": "Tongyi DeepResearch 30B A3B", "cost_per_1m_in": 0.09, - "cost_per_1m_out": 0.44999999999999996, + "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, @@ -3005,6 +2882,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "xiaomi/mimo-v2-flash", + "name": "Xiaomi: MiMo-V2-Flash", + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.3, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.02, + "context_window": 262144, + "default_max_tokens": 16000, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "xiaomi/mimo-v2-flash:free", "name": "Xiaomi: MiMo-V2-Flash (free)", @@ -3045,7 +2941,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.11, "context_window": 131072, - "default_max_tokens": 48000, + "default_max_tokens": 49152, "can_reason": true, "reasoning_levels": [ "low", @@ -3116,12 +3012,12 @@ { "id": "z-ai/glm-4.6", "name": "Z.AI: GLM 4.6", - "cost_per_1m_in": 0.55, - "cost_per_1m_out": 2.2, + "cost_per_1m_in": 0.39, + "cost_per_1m_out": 1.9, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.11, + "cost_per_1m_out_cached": 0, "context_window": 204800, - "default_max_tokens": 65536, + "default_max_tokens": 102400, "can_reason": true, "reasoning_levels": [ "low", @@ -3173,12 +3069,12 @@ { "id": "z-ai/glm-4.7", "name": "Z.AI: GLM 4.7", - "cost_per_1m_in": 0.54, - "cost_per_1m_out": 1.9800000000000002, + "cost_per_1m_in": 0.42, + "cost_per_1m_out": 2.2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.099, + "cost_per_1m_out_cached": 0, "context_window": 204800, - "default_max_tokens": 65536, + "default_max_tokens": 102400, "can_reason": true, "reasoning_levels": [ "low", @@ -3218,10 +3114,10 @@ { "id": "x-ai/grok-3-mini", "name": "xAI: Grok 3 Mini", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 4, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, + "cost_per_1m_out_cached": 0.15, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true, @@ -3237,10 +3133,10 @@ { "id": "x-ai/grok-3-mini-beta", "name": "xAI: Grok 3 Mini Beta", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 4, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, + "cost_per_1m_out_cached": 0.15, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true, From 60b473cba18b999fb83806ad2d75f37aab420936 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Fri, 16 Jan 2026 09:31:12 -0300 Subject: [PATCH 06/13] chore: add gpt 5.2 codex via github copilot (#153) --- internal/providers/configs/copilot.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/providers/configs/copilot.json b/internal/providers/configs/copilot.json index 93f1e4dbe9533f7a87849e24b7c9fe92b373dac7..ce6691e1f24d646a6fb1d07eb5e12befff3511b6 100644 --- a/internal/providers/configs/copilot.json +++ b/internal/providers/configs/copilot.json @@ -175,6 +175,19 @@ "supports_attachments": false, "options": {} }, + { + "id": "gpt-5.2-codex", + "name": "GPT-5.2-Codex", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 400000, + "default_max_tokens": 128000, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "grok-code-fast-1", "name": "Grok Code Fast 1", @@ -189,4 +202,4 @@ "options": {} } ] -} \ No newline at end of file +} From 44cad6fb51c56068d73a375d98f3cd2142d766fd Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Sat, 17 Jan 2026 02:39:10 +0000 Subject: [PATCH 08/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 366 +++++++++++++++------ 1 file changed, 267 insertions(+), 99 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index fb4c4768cec46253491e347e5079769aac10edf8..b09f19b2e4c984599903c5d91bdd41a9d48ee993 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -148,8 +148,8 @@ "name": "Anthropic: Claude 3.5 Sonnet", "cost_per_1m_in": 6, "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_in_cached": 7.5, + "cost_per_1m_out_cached": 0.6, "context_window": 200000, "default_max_tokens": 4096, "can_reason": false, @@ -164,7 +164,7 @@ "cost_per_1m_in_cached": 3.75, "cost_per_1m_out_cached": 0.3, "context_window": 200000, - "default_max_tokens": 64000, + "default_max_tokens": 32000, "can_reason": true, "reasoning_levels": [ "low", @@ -528,29 +528,23 @@ { "id": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek: DeepSeek V3 0324", - "cost_per_1m_in": 0.77, - "cost_per_1m_out": 0.77, + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 1.5, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 65536, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", + "default_max_tokens": 16384, + "can_reason": false, "supports_attachments": false, "options": {} }, { "id": "deepseek/deepseek-chat-v3.1", "name": "DeepSeek: DeepSeek V3.1", - "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.7899999999999999, + "cost_per_1m_in": 0.56, + "cost_per_1m_out": 1.68, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16799999999999998, + "cost_per_1m_out_cached": 0, "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, @@ -566,12 +560,12 @@ { "id": "deepseek/deepseek-v3.1-terminus", "name": "DeepSeek: DeepSeek V3.1 Terminus", - "cost_per_1m_in": 0.22999999999999998, - "cost_per_1m_out": 0.8999999999999999, + "cost_per_1m_in": 0.27, + "cost_per_1m_out": 1, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 32768, + "default_max_tokens": 81920, "can_reason": true, "reasoning_levels": [ "low", @@ -800,7 +794,7 @@ "cost_per_1m_in_cached": 0.3833, "cost_per_1m_out_cached": 0.075, "context_window": 1048576, - "default_max_tokens": 32768, + "default_max_tokens": 32767, "can_reason": true, "reasoning_levels": [ "low", @@ -906,6 +900,32 @@ "supports_attachments": true, "options": {} }, + { + "id": "google/gemma-3-27b-it", + "name": "Google: Gemma 3 27B", + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.15, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 96000, + "default_max_tokens": 48000, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "google/gemma-3-27b-it:free", + "name": "Google: Gemma 3 27B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 128000, + "default_max_tokens": 12800, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "inception/mercury", "name": "Inception: Mercury", @@ -948,8 +968,8 @@ { "id": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", - "cost_per_1m_in": 0.88, - "cost_per_1m_out": 0.88, + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, @@ -961,12 +981,12 @@ { "id": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 0.75, + "cost_per_1m_in": 0.135, + "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 60000, "can_reason": false, "supports_attachments": false, "options": {} @@ -1295,19 +1315,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "mistralai/mistral-small-3.1-24b-instruct", - "name": "Mistral: Mistral Small 3.1 24B", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.11, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "mistralai/mistral-small-3.1-24b-instruct:free", "name": "Mistral: Mistral Small 3.1 24B (free)", @@ -1373,19 +1380,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "mistralai/pixtral-12b", - "name": "Mistral: Pixtral 12B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "mistralai/pixtral-large-2411", "name": "Mistral: Pixtral Large 2411", @@ -1441,8 +1435,8 @@ { "id": "moonshotai/kimi-k2-0905", "name": "MoonshotAI: Kimi K2 0905", - "cost_per_1m_in": 0.59, - "cost_per_1m_out": 2.99, + "cost_per_1m_in": 0.39, + "cost_per_1m_out": 1.9, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -1470,7 +1464,7 @@ "cost_per_1m_in": 0.6, "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.15, "context_window": 262144, "default_max_tokens": 131072, "can_reason": true, @@ -1689,7 +1683,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.5, "context_window": 1047576, - "default_max_tokens": 104757, + "default_max_tokens": 16384, "can_reason": false, "supports_attachments": true, "options": {} @@ -1726,7 +1720,7 @@ "cost_per_1m_in": 2.5, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 1.25, "context_window": 128000, "default_max_tokens": 8192, "can_reason": false, @@ -1906,9 +1900,9 @@ "cost_per_1m_in": 0.25, "cost_per_1m_out": 2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, + "cost_per_1m_out_cached": 0.03, "context_window": 400000, - "default_max_tokens": 64000, + "default_max_tokens": 40000, "can_reason": true, "reasoning_levels": [ "low", @@ -2073,7 +2067,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.175, "context_window": 128000, - "default_max_tokens": 16000, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": true, "options": {} @@ -2119,12 +2113,12 @@ { "id": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.49, + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.18, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -2138,12 +2132,12 @@ { "id": "openai/gpt-oss-120b:exacto", "name": "OpenAI: gpt-oss-120b (exacto)", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.6, + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.19999999999999998, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 32768, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2415,6 +2409,109 @@ "supports_attachments": false, "options": {} }, + { + "id": "qwen/qwq-32b", + "name": "Qwen: QwQ 32B", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.58, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen-plus-2025-07-28", + "name": "Qwen: Qwen Plus 0728", + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 1.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 1000000, + "default_max_tokens": 16384, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen-plus-2025-07-28:thinking", + "name": "Qwen: Qwen Plus 0728 (thinking)", + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 4, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 1000000, + "default_max_tokens": 16384, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen-vl-max", + "name": "Qwen: Qwen VL Max", + "cost_per_1m_in": 0.7999999999999999, + "cost_per_1m_out": 3.1999999999999997, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 4096, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "qwen/qwen-max", + "name": "Qwen: Qwen-Max ", + "cost_per_1m_in": 1.5999999999999999, + "cost_per_1m_out": 6.3999999999999995, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.64, + "context_window": 32768, + "default_max_tokens": 4096, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen-plus", + "name": "Qwen: Qwen-Plus", + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 1.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.16, + "context_window": 131072, + "default_max_tokens": 4096, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen-turbo", + "name": "Qwen: Qwen-Turbo", + "cost_per_1m_in": 0.049999999999999996, + "cost_per_1m_out": 0.19999999999999998, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.02, + "context_window": 1000000, + "default_max_tokens": 4096, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "qwen/qwen-2.5-7b-instruct", "name": "Qwen: Qwen2.5 7B Instruct", @@ -2448,14 +2545,33 @@ "options": {} }, { - "id": "qwen/qwen3-235b-a22b-2507", - "name": "Qwen: Qwen3 235B A22B Instruct 2507", + "id": "qwen/qwen3-235b-a22b", + "name": "Qwen: Qwen3 235B A22B", "cost_per_1m_in": 0.22, "cost_per_1m_out": 0.88, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 13107, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen3-235b-a22b-2507", + "name": "Qwen: Qwen3 235B A22B Instruct 2507", + "cost_per_1m_in": 0.08, + "cost_per_1m_out": 0.55, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 8192, + "default_max_tokens": 32768, "can_reason": false, "supports_attachments": false, "options": {} @@ -2501,12 +2617,12 @@ { "id": "qwen/qwen3-30b-a3b-instruct-2507", "name": "Qwen: Qwen3 30B A3B Instruct 2507", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, + "cost_per_1m_in": 0.08, + "cost_per_1m_out": 0.33, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -2514,12 +2630,12 @@ { "id": "qwen/qwen3-30b-a3b-thinking-2507", "name": "Qwen: Qwen3 30B A3B Thinking 2507", - "cost_per_1m_in": 0.09, + "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 65536, + "default_max_tokens": 26214, "can_reason": true, "reasoning_levels": [ "low", @@ -2533,12 +2649,12 @@ { "id": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 4000, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2604,11 +2720,11 @@ "id": "qwen/qwen3-coder", "name": "Qwen: Qwen3 Coder 480B A35B", "cost_per_1m_in": 0.22, - "cost_per_1m_out": 1.7999999999999998, + "cost_per_1m_out": 0.95, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 32768, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -2639,15 +2755,54 @@ "supports_attachments": false, "options": {} }, + { + "id": "qwen/qwen3-coder-flash", + "name": "Qwen: Qwen3 Coder Flash", + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 1.5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.08, + "context_window": 128000, + "default_max_tokens": 32768, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen3-coder-plus", + "name": "Qwen: Qwen3 Coder Plus", + "cost_per_1m_in": 1, + "cost_per_1m_out": 5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.09999999999999999, + "context_window": 128000, + "default_max_tokens": 32768, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen/qwen3-max", + "name": "Qwen: Qwen3 Max", + "cost_per_1m_in": 1.2, + "cost_per_1m_out": 6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.24, + "context_window": 256000, + "default_max_tokens": 16384, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", "cost_per_1m_in": 0.15, - "cost_per_1m_out": 1.5, + "cost_per_1m_out": 1.2, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -2668,8 +2823,8 @@ { "id": "qwen/qwen3-next-80b-a3b-thinking", "name": "Qwen: Qwen3 Next 80B A3B Thinking", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 1.2, + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -2698,14 +2853,27 @@ "options": {} }, { - "id": "qwen/qwen3-vl-235b-a22b-thinking", - "name": "Qwen: Qwen3 VL 235B A22B Thinking", - "cost_per_1m_in": 0.44999999999999996, - "cost_per_1m_out": 3.5, + "id": "qwen/qwen3-vl-30b-a3b-instruct", + "name": "Qwen: Qwen3 VL 30B A3B Instruct", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "qwen/qwen3-vl-30b-a3b-thinking", + "name": "Qwen: Qwen3 VL 30B A3B Thinking", + "cost_per_1m_in": 0.19999999999999998, + "cost_per_1m_out": 1, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2717,27 +2885,27 @@ "options": {} }, { - "id": "qwen/qwen3-vl-30b-a3b-instruct", - "name": "Qwen: Qwen3 VL 30B A3B Instruct", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.6, + "id": "qwen/qwen3-vl-8b-instruct", + "name": "Qwen: Qwen3 VL 8B Instruct", + "cost_per_1m_in": 0.25, + "cost_per_1m_out": 0.75, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": true, "options": {} }, { - "id": "qwen/qwen3-vl-30b-a3b-thinking", - "name": "Qwen: Qwen3 VL 30B A3B Thinking", - "cost_per_1m_in": 0.29, - "cost_per_1m_out": 1, + "id": "qwen/qwen3-vl-8b-thinking", + "name": "Qwen: Qwen3 VL 8B Thinking", + "cost_per_1m_in": 0.18, + "cost_per_1m_out": 2.0999999999999996, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, + "context_window": 256000, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2867,7 +3035,7 @@ "id": "alibaba/tongyi-deepresearch-30b-a3b", "name": "Tongyi DeepResearch 30B A3B", "cost_per_1m_in": 0.09, - "cost_per_1m_out": 0.39999999999999997, + "cost_per_1m_out": 0.44999999999999996, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, From ee9a8ed99d2d5839e2450d1220dcf5c5ad2643ca Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Sun, 18 Jan 2026 02:50:57 +0000 Subject: [PATCH 09/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 213 ++++++++------------- 1 file changed, 81 insertions(+), 132 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index b09f19b2e4c984599903c5d91bdd41a9d48ee993..022eb59a51b2c1defd16e664f8471e4f2d6e87c4 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -148,8 +148,8 @@ "name": "Anthropic: Claude 3.5 Sonnet", "cost_per_1m_in": 6, "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 7.5, - "cost_per_1m_out_cached": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, "context_window": 200000, "default_max_tokens": 4096, "can_reason": false, @@ -528,13 +528,19 @@ { "id": "deepseek/deepseek-chat-v3-0324", "name": "DeepSeek: DeepSeek V3 0324", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 1.5, + "cost_per_1m_in": 0.77, + "cost_per_1m_out": 0.77, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": false, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", "supports_attachments": false, "options": {} }, @@ -580,10 +586,10 @@ "id": "deepseek/deepseek-v3.1-terminus:exacto", "name": "DeepSeek: DeepSeek V3.1 Terminus (exacto)", "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.7899999999999999, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16799999999999998, - "context_window": 163840, + "cost_per_1m_out_cached": 0, + "context_window": 131072, "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ @@ -599,11 +605,11 @@ "id": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", "cost_per_1m_in": 0.26, - "cost_per_1m_out": 0.39, + "cost_per_1m_out": 0.38, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.13, + "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -655,31 +661,12 @@ { "id": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 2.4, + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 1.75, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, - { - "id": "deepseek/deepseek-r1-distill-llama-70b", - "name": "DeepSeek: R1 Distill Llama 70B", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.11, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -695,7 +682,7 @@ "name": "Google: Gemini 2.0 Flash", "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0.18330000000000002, + "cost_per_1m_in_cached": 0.0833, "cost_per_1m_out_cached": 0.024999999999999998, "context_window": 1048576, "default_max_tokens": 4096, @@ -734,7 +721,7 @@ "name": "Google: Gemini 2.5 Flash", "cost_per_1m_in": 0.3, "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, + "cost_per_1m_in_cached": 0.08333333333333334, "cost_per_1m_out_cached": 0.03, "context_window": 1048576, "default_max_tokens": 32767, @@ -753,7 +740,7 @@ "name": "Google: Gemini 2.5 Flash Lite", "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0.18330000000000002, + "cost_per_1m_in_cached": 0.0833, "cost_per_1m_out_cached": 0.01, "context_window": 1048576, "default_max_tokens": 32767, @@ -772,7 +759,7 @@ "name": "Google: Gemini 2.5 Flash Lite Preview 09-2025", "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 1, + "cost_per_1m_in_cached": 0.0833, "cost_per_1m_out_cached": 0.01, "context_window": 1048576, "default_max_tokens": 32767, @@ -791,7 +778,7 @@ "name": "Google: Gemini 2.5 Flash Preview 09-2025", "cost_per_1m_in": 0.3, "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, + "cost_per_1m_in_cached": 0.0833, "cost_per_1m_out_cached": 0.075, "context_window": 1048576, "default_max_tokens": 32767, @@ -810,7 +797,7 @@ "name": "Google: Gemini 2.5 Pro", "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, + "cost_per_1m_in_cached": 0.375, "cost_per_1m_out_cached": 0.125, "context_window": 1048576, "default_max_tokens": 32768, @@ -829,7 +816,7 @@ "name": "Google: Gemini 2.5 Pro Preview 05-06", "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, + "cost_per_1m_in_cached": 0.375, "cost_per_1m_out_cached": 0.125, "context_window": 1048576, "default_max_tokens": 32768, @@ -848,7 +835,7 @@ "name": "Google: Gemini 2.5 Pro Preview 06-05", "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, + "cost_per_1m_in_cached": 0.375, "cost_per_1m_out_cached": 0.125, "context_window": 1048576, "default_max_tokens": 32768, @@ -886,7 +873,7 @@ "name": "Google: Gemini 3 Pro Preview", "cost_per_1m_in": 2, "cost_per_1m_out": 12, - "cost_per_1m_in_cached": 2.375, + "cost_per_1m_in_cached": 0.375, "cost_per_1m_out_cached": 0.19999999999999998, "context_window": 1048576, "default_max_tokens": 32768, @@ -913,19 +900,6 @@ "supports_attachments": true, "options": {} }, - { - "id": "google/gemma-3-27b-it:free", - "name": "Google: Gemma 3 27B (free)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "inception/mercury", "name": "Inception: Mercury", @@ -973,7 +947,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": false, "options": {} @@ -981,12 +955,12 @@ { "id": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", - "cost_per_1m_in": 0.135, + "cost_per_1m_in": 0.13, "cost_per_1m_out": 0.39999999999999997, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 60000, + "default_max_tokens": 13107, "can_reason": false, "supports_attachments": false, "options": {} @@ -1380,6 +1354,19 @@ "supports_attachments": false, "options": {} }, + { + "id": "mistralai/pixtral-12b", + "name": "Mistral: Pixtral 12B", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.15, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 13107, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "mistralai/pixtral-large-2411", "name": "Mistral: Pixtral Large 2411", @@ -1422,12 +1409,12 @@ { "id": "moonshotai/kimi-k2", "name": "MoonshotAI: Kimi K2 0711", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 2.4, + "cost_per_1m_in": 0.7, + "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 32768, "can_reason": false, "supports_attachments": false, "options": {} @@ -1448,12 +1435,12 @@ { "id": "moonshotai/kimi-k2-0905:exacto", "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 1, - "cost_per_1m_out": 3, + "cost_per_1m_in": 1.15, + "cost_per_1m_out": 8, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.15, "context_window": 262144, - "default_max_tokens": 8192, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -1683,7 +1670,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.5, "context_window": 1047576, - "default_max_tokens": 16384, + "default_max_tokens": 104757, "can_reason": false, "supports_attachments": true, "options": {} @@ -2113,12 +2100,12 @@ { "id": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.18, + "cost_per_1m_in": 0.039, + "cost_per_1m_out": 0.19, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 32768, + "default_max_tokens": 13107, "can_reason": true, "reasoning_levels": [ "low", @@ -2132,12 +2119,12 @@ { "id": "openai/gpt-oss-120b:exacto", "name": "OpenAI: gpt-oss-120b (exacto)", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.19999999999999998, + "cost_per_1m_in": 0.039, + "cost_per_1m_out": 0.19, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 16384, + "default_max_tokens": 13107, "can_reason": true, "reasoning_levels": [ "low", @@ -2409,25 +2396,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwq-32b", - "name": "Qwen: QwQ 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.58, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen-plus-2025-07-28", "name": "Qwen: Qwen Plus 0728", @@ -2566,12 +2534,12 @@ { "id": "qwen/qwen3-235b-a22b-2507", "name": "Qwen: Qwen3 235B A22B Instruct 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.55, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.09999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 32768, + "default_max_tokens": 131072, "can_reason": false, "supports_attachments": false, "options": {} @@ -2627,25 +2595,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "qwen/qwen3-30b-a3b-thinking-2507", - "name": "Qwen: Qwen3 30B A3B Thinking 2507", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": true, - "reasoning_levels": [ - "low", - "medium", - "high" - ], - "default_reasoning_effort": "medium", - "supports_attachments": false, - "options": {} - }, { "id": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", @@ -2687,11 +2636,11 @@ { "id": "qwen/qwen3-8b", "name": "Qwen: Qwen3 8B", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 0.2, + "cost_per_1m_in": 0.049999999999999996, + "cost_per_1m_out": 0.25, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 40960, + "context_window": 32000, "default_max_tokens": 4096, "can_reason": true, "reasoning_levels": [ @@ -2797,8 +2746,8 @@ { "id": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 1.2, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -3056,9 +3005,9 @@ "cost_per_1m_in": 0.09999999999999999, "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.02, + "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 16000, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -3109,7 +3058,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.11, "context_window": 131072, - "default_max_tokens": 49152, + "default_max_tokens": 48000, "can_reason": true, "reasoning_levels": [ "low", @@ -3180,12 +3129,12 @@ { "id": "z-ai/glm-4.6", "name": "Z.AI: GLM 4.6", - "cost_per_1m_in": 0.39, - "cost_per_1m_out": 1.9, + "cost_per_1m_in": 0.55, + "cost_per_1m_out": 2.2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.11, "context_window": 204800, - "default_max_tokens": 102400, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -3282,10 +3231,10 @@ { "id": "x-ai/grok-3-mini", "name": "xAI: Grok 3 Mini", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 4, + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 0.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.15, + "cost_per_1m_out_cached": 0.075, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true, @@ -3301,10 +3250,10 @@ { "id": "x-ai/grok-3-mini-beta", "name": "xAI: Grok 3 Mini Beta", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 4, + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 0.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.15, + "cost_per_1m_out_cached": 0.075, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true, From 86d2b7f2c8dc6a6945a1c0b2ab059056a4ca40de Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Mon, 19 Jan 2026 02:50:25 +0000 Subject: [PATCH 10/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 111 +++++++++------------ 1 file changed, 49 insertions(+), 62 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index 022eb59a51b2c1defd16e664f8471e4f2d6e87c4..8cd8916dc41449618088f43eda4f5ecf4cfe1176 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -547,12 +547,12 @@ { "id": "deepseek/deepseek-chat-v3.1", "name": "DeepSeek: DeepSeek V3.1", - "cost_per_1m_in": 0.56, - "cost_per_1m_out": 1.68, + "cost_per_1m_in": 0.19999999999999998, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 16384, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -586,10 +586,10 @@ "id": "deepseek/deepseek-v3.1-terminus:exacto", "name": "DeepSeek: DeepSeek V3.1 Terminus (exacto)", "cost_per_1m_in": 0.21, - "cost_per_1m_out": 0.7999999999999999, + "cost_per_1m_out": 0.7899999999999999, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, + "cost_per_1m_out_cached": 0.16799999999999998, + "context_window": 163840, "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ @@ -661,12 +661,12 @@ { "id": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.75, + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 2.1799999999999997, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, - "default_max_tokens": 32768, + "default_max_tokens": 81920, "can_reason": true, "reasoning_levels": [ "low", @@ -947,7 +947,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 8192, + "default_max_tokens": 13107, "can_reason": false, "supports_attachments": false, "options": {} @@ -955,8 +955,8 @@ { "id": "meta-llama/llama-3.3-70b-instruct", "name": "Meta: Llama 3.3 70B Instruct", - "cost_per_1m_in": 0.13, - "cost_per_1m_out": 0.39999999999999997, + "cost_per_1m_in": 0.25, + "cost_per_1m_out": 0.75, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, @@ -1354,19 +1354,6 @@ "supports_attachments": false, "options": {} }, - { - "id": "mistralai/pixtral-12b", - "name": "Mistral: Pixtral 12B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "supports_attachments": true, - "options": {} - }, { "id": "mistralai/pixtral-large-2411", "name": "Mistral: Pixtral Large 2411", @@ -1409,12 +1396,12 @@ { "id": "moonshotai/kimi-k2", "name": "MoonshotAI: Kimi K2 0711", - "cost_per_1m_in": 0.7, - "cost_per_1m_out": 2.5, + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 2.4, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 32768, + "default_max_tokens": 13107, "can_reason": false, "supports_attachments": false, "options": {} @@ -1435,12 +1422,12 @@ { "id": "moonshotai/kimi-k2-0905:exacto", "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 1.15, - "cost_per_1m_out": 8, + "cost_per_1m_in": 1, + "cost_per_1m_out": 3, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.15, + "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": false, "options": {} @@ -1504,7 +1491,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 26214, + "default_max_tokens": 131072, "can_reason": true, "reasoning_levels": [ "low", @@ -1707,7 +1694,7 @@ "cost_per_1m_in": 2.5, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, + "cost_per_1m_out_cached": 0, "context_window": 128000, "default_max_tokens": 8192, "can_reason": false, @@ -2157,12 +2144,12 @@ { "id": "openai/gpt-oss-20b", "name": "OpenAI: gpt-oss-20b", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.09999999999999999, + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.15, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 65536, + "default_max_tokens": 13107, "can_reason": true, "reasoning_levels": [ "low", @@ -2386,12 +2373,12 @@ { "id": "qwen/qwen-2.5-72b-instruct", "name": "Qwen2.5 72B Instruct", - "cost_per_1m_in": 0.12, - "cost_per_1m_out": 0.39, + "cost_per_1m_in": 0.13, + "cost_per_1m_out": 0.52, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 32768, - "default_max_tokens": 8192, + "default_max_tokens": 16384, "can_reason": false, "supports_attachments": false, "options": {} @@ -2598,12 +2585,12 @@ { "id": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.7999999999999999, + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.5, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 16384, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -2636,11 +2623,11 @@ { "id": "qwen/qwen3-8b", "name": "Qwen: Qwen3 8B", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.25, + "cost_per_1m_in": 0.2, + "cost_per_1m_out": 0.2, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 32000, + "context_window": 40960, "default_max_tokens": 4096, "can_reason": true, "reasoning_levels": [ @@ -2655,12 +2642,12 @@ { "id": "qwen/qwen3-coder-30b-a3b-instruct", "name": "Qwen: Qwen3 Coder 30B A3B Instruct", - "cost_per_1m_in": 0.07, - "cost_per_1m_out": 0.28, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -2746,8 +2733,8 @@ { "id": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.7999999999999999, + "cost_per_1m_in": 0.14, + "cost_per_1m_out": 1.4, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -3002,12 +2989,12 @@ { "id": "xiaomi/mimo-v2-flash", "name": "Xiaomi: MiMo-V2-Flash", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, + "cost_per_1m_in": 0.09, + "cost_per_1m_out": 0.29, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 32768, + "default_max_tokens": 26214, "can_reason": true, "reasoning_levels": [ "low", @@ -3129,12 +3116,12 @@ { "id": "z-ai/glm-4.6", "name": "Z.AI: GLM 4.6", - "cost_per_1m_in": 0.55, - "cost_per_1m_out": 2.2, + "cost_per_1m_in": 0.39, + "cost_per_1m_out": 1.9, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.11, + "cost_per_1m_out_cached": 0, "context_window": 204800, - "default_max_tokens": 65536, + "default_max_tokens": 102400, "can_reason": true, "reasoning_levels": [ "low", @@ -3186,12 +3173,12 @@ { "id": "z-ai/glm-4.7", "name": "Z.AI: GLM 4.7", - "cost_per_1m_in": 0.42, - "cost_per_1m_out": 2.2, + "cost_per_1m_in": 0.54, + "cost_per_1m_out": 1.9800000000000002, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.099, "context_window": 204800, - "default_max_tokens": 102400, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", From 82617535bebeb767c2ca28a90630032f2433c567 Mon Sep 17 00:00:00 2001 From: Seb Duerr Date: Mon, 19 Jan 2026 06:05:35 -0800 Subject: [PATCH 11/13] chore(cerebras): add zai-glm-4.7 and remove zai-glm-4.6 (#157) --- internal/providers/configs/cerebras.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/providers/configs/cerebras.json b/internal/providers/configs/cerebras.json index e81057846766d36596beb97ee19bdb4b1a5c2137..09b5cca46bc948f1e7464690f2fb737f5d1ae67b 100644 --- a/internal/providers/configs/cerebras.json +++ b/internal/providers/configs/cerebras.json @@ -57,8 +57,8 @@ "supports_attachments": false }, { - "id": "zai-glm-4.6", - "name": "Z.ai GLM 4.6", + "id": "zai-glm-4.7", + "name": "Z.ai GLM 4.7", "cost_per_1m_in": 2.25, "cost_per_1m_out": 2.75, "context_window": 131072, From e96358f6cbca5addd7f1a0e866f39e14b3b5df92 Mon Sep 17 00:00:00 2001 From: Charm <124303983+charmcli@users.noreply.github.com> Date: Tue, 20 Jan 2026 02:46:07 +0000 Subject: [PATCH 13/13] chore: auto-update generated files --- internal/providers/configs/openrouter.json | 186 ++++++++++++++------- 1 file changed, 128 insertions(+), 58 deletions(-) diff --git a/internal/providers/configs/openrouter.json b/internal/providers/configs/openrouter.json index 8cd8916dc41449618088f43eda4f5ecf4cfe1176..a8f6de2e653ce1367f3e2e450a0cb3b02fc133e7 100644 --- a/internal/providers/configs/openrouter.json +++ b/internal/providers/configs/openrouter.json @@ -164,7 +164,7 @@ "cost_per_1m_in_cached": 3.75, "cost_per_1m_out_cached": 0.3, "context_window": 200000, - "default_max_tokens": 32000, + "default_max_tokens": 64000, "can_reason": true, "reasoning_levels": [ "low", @@ -604,8 +604,8 @@ { "id": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2", - "cost_per_1m_in": 0.26, - "cost_per_1m_out": 0.38, + "cost_per_1m_in": 0.56, + "cost_per_1m_out": 1.68, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 163840, @@ -661,12 +661,31 @@ { "id": "deepseek/deepseek-r1-0528", "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 2.1799999999999997, + "cost_per_1m_in": 0.7, + "cost_per_1m_out": 2.5, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.35, "context_window": 163840, - "default_max_tokens": 81920, + "default_max_tokens": 16384, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "deepseek/deepseek-r1-distill-llama-70b", + "name": "DeepSeek: R1 Distill Llama 70B", + "cost_per_1m_in": 0.03, + "cost_per_1m_out": 0.11, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -900,6 +919,19 @@ "supports_attachments": true, "options": {} }, + { + "id": "google/gemma-3-27b-it:free", + "name": "Google: Gemma 3 27B (free)", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 128000, + "default_max_tokens": 12800, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "inception/mercury", "name": "Inception: Mercury", @@ -942,8 +974,8 @@ { "id": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.39999999999999997, + "cost_per_1m_in": 0.88, + "cost_per_1m_out": 0.88, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, @@ -981,12 +1013,12 @@ { "id": "meta-llama/llama-4-maverick", "name": "Meta: Llama 4 Maverick", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, + "cost_per_1m_in": 0.19999999999999998, + "cost_per_1m_out": 0.6, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 104857, + "context_window": 131072, + "default_max_tokens": 4096, "can_reason": false, "supports_attachments": true, "options": {} @@ -1305,12 +1337,12 @@ { "id": "mistralai/mistral-small-3.2-24b-instruct", "name": "Mistral: Mistral Small 3.2 24B", - "cost_per_1m_in": 0.06, - "cost_per_1m_out": 0.18, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.3, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 65536, + "default_max_tokens": 13107, "can_reason": false, "supports_attachments": true, "options": {} @@ -1422,12 +1454,12 @@ { "id": "moonshotai/kimi-k2-0905:exacto", "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 1, - "cost_per_1m_out": 3, + "cost_per_1m_in": 1.15, + "cost_per_1m_out": 8, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 0.15, "context_window": 262144, - "default_max_tokens": 8192, + "default_max_tokens": 26214, "can_reason": false, "supports_attachments": false, "options": {} @@ -1491,7 +1523,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, - "default_max_tokens": 131072, + "default_max_tokens": 26214, "can_reason": true, "reasoning_levels": [ "low", @@ -1694,7 +1726,7 @@ "cost_per_1m_in": 2.5, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, + "cost_per_1m_out_cached": 1.25, "context_window": 128000, "default_max_tokens": 8192, "can_reason": false, @@ -2087,12 +2119,12 @@ { "id": "openai/gpt-oss-120b", "name": "OpenAI: gpt-oss-120b", - "cost_per_1m_in": 0.039, - "cost_per_1m_out": 0.19, + "cost_per_1m_in": 0.04, + "cost_per_1m_out": 0.18, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 32768, "can_reason": true, "reasoning_levels": [ "low", @@ -2144,12 +2176,12 @@ { "id": "openai/gpt-oss-20b", "name": "OpenAI: gpt-oss-20b", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.15, + "cost_per_1m_in": 0.02, + "cost_per_1m_out": 0.09999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 13107, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -2373,16 +2405,35 @@ { "id": "qwen/qwen-2.5-72b-instruct", "name": "Qwen2.5 72B Instruct", - "cost_per_1m_in": 0.13, - "cost_per_1m_out": 0.52, + "cost_per_1m_in": 0.12, + "cost_per_1m_out": 0.39, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 32768, - "default_max_tokens": 16384, + "default_max_tokens": 8192, "can_reason": false, "supports_attachments": false, "options": {} }, + { + "id": "qwen/qwq-32b", + "name": "Qwen: QwQ 32B", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.58, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "qwen/qwen-plus-2025-07-28", "name": "Qwen: Qwen Plus 0728", @@ -2553,8 +2604,8 @@ { "id": "qwen/qwen3-30b-a3b", "name": "Qwen: Qwen3 30B A3B", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.28, + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, @@ -2585,12 +2636,12 @@ { "id": "qwen/qwen3-32b", "name": "Qwen: Qwen3 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.39999999999999997, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 65536, + "default_max_tokens": 16384, "can_reason": true, "reasoning_levels": [ "low", @@ -2733,8 +2784,8 @@ { "id": "qwen/qwen3-next-80b-a3b-instruct", "name": "Qwen: Qwen3 Next 80B A3B Instruct", - "cost_per_1m_in": 0.14, - "cost_per_1m_out": 1.4, + "cost_per_1m_in": 0.09999999999999999, + "cost_per_1m_out": 0.7999999999999999, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 262144, @@ -3045,7 +3096,7 @@ "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0.11, "context_window": 131072, - "default_max_tokens": 48000, + "default_max_tokens": 49152, "can_reason": true, "reasoning_levels": [ "low", @@ -3059,12 +3110,12 @@ { "id": "z-ai/glm-4.5-air", "name": "Z.AI: GLM 4.5 Air", - "cost_per_1m_in": 0.13, - "cost_per_1m_out": 0.85, + "cost_per_1m_in": 0.14, + "cost_per_1m_out": 0.86, "cost_per_1m_in_cached": 0, "cost_per_1m_out_cached": 0, "context_window": 131072, - "default_max_tokens": 49152, + "default_max_tokens": 65536, "can_reason": true, "reasoning_levels": [ "low", @@ -3173,12 +3224,31 @@ { "id": "z-ai/glm-4.7", "name": "Z.AI: GLM 4.7", - "cost_per_1m_in": 0.54, - "cost_per_1m_out": 1.9800000000000002, + "cost_per_1m_in": 0.42, + "cost_per_1m_out": 2.2, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.099, + "cost_per_1m_out_cached": 0, "context_window": 204800, - "default_max_tokens": 65536, + "default_max_tokens": 102400, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "z-ai/glm-4.7-flash", + "name": "Z.AI: GLM 4.7 Flash", + "cost_per_1m_in": 0.07, + "cost_per_1m_out": 0.43, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.006, + "context_window": 200000, + "default_max_tokens": 64000, "can_reason": true, "reasoning_levels": [ "low", @@ -3192,10 +3262,10 @@ { "id": "x-ai/grok-3", "name": "xAI: Grok 3", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, + "cost_per_1m_in": 5, + "cost_per_1m_out": 25, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.75, + "cost_per_1m_out_cached": 1.25, "context_window": 131072, "default_max_tokens": 13107, "can_reason": false, @@ -3205,10 +3275,10 @@ { "id": "x-ai/grok-3-beta", "name": "xAI: Grok 3 Beta", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, + "cost_per_1m_in": 5, + "cost_per_1m_out": 25, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.75, + "cost_per_1m_out_cached": 1.25, "context_window": 131072, "default_max_tokens": 13107, "can_reason": false, @@ -3218,10 +3288,10 @@ { "id": "x-ai/grok-3-mini", "name": "xAI: Grok 3 Mini", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 4, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, + "cost_per_1m_out_cached": 0.15, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true, @@ -3237,10 +3307,10 @@ { "id": "x-ai/grok-3-mini-beta", "name": "xAI: Grok 3 Mini Beta", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 4, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, + "cost_per_1m_out_cached": 0.15, "context_window": 131072, "default_max_tokens": 13107, "can_reason": true,