From 1ab3dffd0a6d8fc5e0fb5e91a8bfb98a1bf7c27c Mon Sep 17 00:00:00 2001 From: Daiana <276971743+daiana-cybrient@users.noreply.github.com> Date: Tue, 29 Sep 2026 14:23:49 +0300 Subject: [PATCH 1/2] feat(providers): add BoldRouter provider --- litellm/constants.py | 2 + litellm/llms/openai_like/providers.json | 6 + .../provider_endpoints_support_backup.json | 17 ++ .../provider_create_fields.json | 28 ++++ litellm/types/utils.py | 1 + provider_endpoints_support.json | 17 ++ .../openai_like/test_boldrouter_provider.py | 150 ++++++++++++++++++ 7 files changed, 221 insertions(+) create mode 100644 tests/unit/llms/openai_like/test_boldrouter_provider.py diff --git a/litellm/constants.py b/litellm/constants.py index 39c10d71709..3a2857f1fbd 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -950,6 +950,7 @@ openai_compatible_endpoints: Final[list] = [ "https://api.cognition.ai/v1", "https://api.scx.ai/v1", "https://api.prisminference.com/v1", + "https://boldrouter.com/v1", "https://gigachat.devices.sberbank.ru/api/v1", ] @@ -1025,6 +1026,7 @@ openai_compatible_providers: Final[list] = [ "scx-ai", "prism", "sail", + "boldrouter", # BoldRouter - JSON-configured provider ] OPENAI_AUDIO_TRANSCRIPTION_PROVIDERS: Final = frozenset({"openai"} | frozenset(openai_compatible_providers)) diff --git a/litellm/llms/openai_like/providers.json b/litellm/llms/openai_like/providers.json index 440e5490d71..8dc3387de59 100644 --- a/litellm/llms/openai_like/providers.json +++ b/litellm/llms/openai_like/providers.json @@ -212,5 +212,11 @@ "api_key_env": "SAIL_API_KEY", "api_base_env": "SAIL_API_BASE", "supported_endpoints": ["/v1/chat/completions", "/v1/responses", "/v1/messages"] + }, + "boldrouter": { + "base_url": "https://boldrouter.com/v1", + "api_key_env": "BOLDROUTER_API_KEY", + "api_base_env": "BOLDROUTER_API_BASE", + "supported_endpoints": ["/v1/chat/completions"] } } diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index ad6e5857218..e4dda1e6b53 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -1960,6 +1960,23 @@ "a2a": false } }, + "boldrouter": { + "display_name": "BoldRouter (`boldrouter`)", + "url": "https://boldrouter.com/docs", + "endpoints": { + "chat_completions": true, + "messages": false, + "responses": false, + "embeddings": false, + "image_generations": false, + "audio_transcriptions": false, + "audio_speech": false, + "moderations": false, + "batches": false, + "rerank": false, + "a2a": false + } + }, "recraft": { "display_name": "Recraft (`recraft`)", "url": "https://docs.litellm.ai/docs/providers/recraft", diff --git a/litellm/proxy/public_endpoints/provider_create_fields.json b/litellm/proxy/public_endpoints/provider_create_fields.json index 67a8c356a4a..82b27564443 100644 --- a/litellm/proxy/public_endpoints/provider_create_fields.json +++ b/litellm/proxy/public_endpoints/provider_create_fields.json @@ -2883,6 +2883,34 @@ ], "default_model_placeholder": "prism/deepseek-v4.1-flash" }, + { + "provider": "BOLDROUTER", + "provider_display_name": "BoldRouter", + "litellm_provider": "boldrouter", + "credential_fields": [ + { + "key": "api_base", + "label": "API Base", + "placeholder": "https://boldrouter.com/v1", + "tooltip": null, + "required": false, + "field_type": "text", + "options": null, + "default_value": null + }, + { + "key": "api_key", + "label": "API Key", + "placeholder": "sk-bold-...", + "tooltip": null, + "required": true, + "field_type": "password", + "options": null, + "default_value": null + } + ], + "default_model_placeholder": "boldrouter/bold/auto" + }, { "provider": "RECRAFT", "provider_display_name": "Recraft", diff --git a/litellm/types/utils.py b/litellm/types/utils.py index dba15bc99a5..51113e90dc6 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -4147,6 +4147,7 @@ class LlmProviders(str, Enum): DARKBLOOM = "darkbloom" META = "meta" SAIL = "sail" + BOLDROUTER = "boldrouter" LITELLM_AGENT = "litellm_agent" CURSOR = "cursor" BEDROCK_MANTLE = "bedrock_mantle" diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 44ef9363b64..f2d5aff39bd 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2212,6 +2212,23 @@ "a2a": false } }, + "boldrouter": { + "display_name": "BoldRouter (`boldrouter`)", + "url": "https://boldrouter.com/docs", + "endpoints": { + "chat_completions": true, + "messages": false, + "responses": false, + "embeddings": false, + "image_generations": false, + "audio_transcriptions": false, + "audio_speech": false, + "moderations": false, + "batches": false, + "rerank": false, + "a2a": false + } + }, "recraft": { "display_name": "Recraft (`recraft`)", "url": "https://docs.litellm.ai/docs/providers/recraft", diff --git a/tests/unit/llms/openai_like/test_boldrouter_provider.py b/tests/unit/llms/openai_like/test_boldrouter_provider.py new file mode 100644 index 00000000000..2255dcc51e9 --- /dev/null +++ b/tests/unit/llms/openai_like/test_boldrouter_provider.py @@ -0,0 +1,150 @@ +import json +from pathlib import Path +from typing import Final + +import pytest +import respx + +import litellm +from litellm.caching.llm_caching_handler import LLMClientCache + +BOLDROUTER_CHAT_URL: Final = "https://boldrouter.com/v1/chat/completions" + + +def _chat_completion(content: str) -> dict: + return { + "id": "chatcmpl-boldrouter", + "object": "chat.completion", + "created": 1_790_000_000, + "model": "bold/auto", + "choices": [{"index": 0, "message": {"role": "assistant", "content": content}, "finish_reason": "stop"}], + "usage": { + "prompt_tokens": 5, + "completion_tokens": 44, + "total_tokens": 49, + "completion_tokens_details": {"reasoning_tokens": 40}, + }, + } + + +def test_boldrouter_provider_resolution(monkeypatch: pytest.MonkeyPatch): + from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider + + monkeypatch.setenv("BOLDROUTER_API_KEY", "sk-bold-test") + monkeypatch.delenv("BOLDROUTER_API_BASE", raising=False) + + model, provider, api_key, api_base = get_llm_provider( + model="boldrouter/anthropic/claude-sonnet-4.6", + custom_llm_provider=None, + api_base=None, + api_key=None, + ) + + # BoldRouter model IDs are themselves provider-prefixed; only the litellm prefix is stripped. + assert model == "anthropic/claude-sonnet-4.6" + assert provider == "boldrouter" + assert api_key == "sk-bold-test" + assert api_base == "https://boldrouter.com/v1" + + +def test_boldrouter_provider_reads_api_base_from_env(monkeypatch: pytest.MonkeyPatch): + from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider + + monkeypatch.setenv("BOLDROUTER_API_KEY", "sk-bold-test") + monkeypatch.setenv("BOLDROUTER_API_BASE", "https://gateway.internal.example/v1") + + _, provider, _, api_base = get_llm_provider( + model="boldrouter/bold/auto", + custom_llm_provider=None, + api_base=None, + api_key=None, + ) + + assert provider == "boldrouter" + assert api_base == "https://gateway.internal.example/v1" + + +def test_boldrouter_provider_keeps_explicit_credentials(monkeypatch: pytest.MonkeyPatch): + from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider + + monkeypatch.setenv("BOLDROUTER_API_KEY", "sk-bold-env") + + _, provider, api_key, api_base = get_llm_provider( + model="boldrouter/bold/auto", + custom_llm_provider=None, + api_base="https://proxy.internal.example/v1", + api_key="sk-bold-explicit", + ) + + assert provider == "boldrouter" + assert api_key == "sk-bold-explicit" + assert api_base == "https://proxy.internal.example/v1" + + +def test_boldrouter_is_available_in_add_model_form(): + fields_path = Path(litellm.__file__).parent / "proxy" / "public_endpoints" / "provider_create_fields.json" + providers = json.loads(fields_path.read_text()) + boldrouter = next(provider for provider in providers if provider["litellm_provider"] == "boldrouter") + + assert boldrouter["provider"] == "BOLDROUTER" + assert boldrouter["provider_display_name"] == "BoldRouter" + assert boldrouter["default_model_placeholder"] == "boldrouter/bold/auto" + assert {field["key"]: field["required"] for field in boldrouter["credential_fields"]} == { + "api_base": False, + "api_key": True, + } + + +def test_boldrouter_supported_endpoints(): + package_root = Path(litellm.__file__).parent + for matrix_path in ( + package_root / "provider_endpoints_support_backup.json", + package_root.parent / "provider_endpoints_support.json", + ): + endpoints = json.loads(matrix_path.read_text())["providers"]["boldrouter"]["endpoints"] + assert endpoints["chat_completions"] is True + assert [name for name, supported in endpoints.items() if supported] == ["chat_completions"] + + +def test_boldrouter_chat_request_passes_routing_options_through(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setattr(litellm, "in_memory_llm_clients_cache", LLMClientCache()) + with respx.mock() as upstream: + route: Final = upstream.post(BOLDROUTER_CHAT_URL).respond(200, json=_chat_completion("Hello from BoldRouter")) + response: Final = litellm.completion( + model="boldrouter/bold/auto", + messages=[{"role": "user", "content": "Say hello"}], + api_key="sk-bold-test", + extra_headers={"x-bold-routing": "price"}, + extra_body={"models": ["bold/auto", "openai/gpt-5.5"], "reasoning": {"effort": "high"}}, + ) + + request: Final = route.calls.last.request + body: Final = json.loads(request.content) + assert route.call_count == 1 + assert str(request.url) == BOLDROUTER_CHAT_URL + assert request.headers["authorization"] == "Bearer sk-bold-test" + assert request.headers["x-bold-routing"] == "price" + assert body["model"] == "bold/auto" + assert body["messages"] == [{"role": "user", "content": "Say hello"}] + assert body["models"] == ["bold/auto", "openai/gpt-5.5"] + assert body["reasoning"] == {"effort": "high"} + assert response.choices[0].message.content == "Hello from BoldRouter" + assert response.usage.completion_tokens_details.reasoning_tokens == 40 + + +@pytest.mark.asyncio +async def test_boldrouter_async_chat_request(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setattr(litellm, "disable_aiohttp_transport", True) + monkeypatch.setattr(litellm, "in_memory_llm_clients_cache", LLMClientCache()) + with respx.mock() as upstream: + route: Final = upstream.post(BOLDROUTER_CHAT_URL).respond(200, json=_chat_completion("Hi")) + response: Final = await litellm.acompletion( + model="boldrouter/deepseek/deepseek-v4-flash", + messages=[{"role": "user", "content": "Say hi"}], + api_key="sk-bold-test", + ) + + body: Final = json.loads(route.calls.last.request.content) + assert route.call_count == 1 + assert body["model"] == "deepseek/deepseek-v4-flash" + assert response.choices[0].message.content == "Hi" From 1e53db3641b571d868085572156ae5e16ef450d6 Mon Sep 17 00:00:00 2001 From: Daiana <276971743+daiana-cybrient@users.noreply.github.com> Date: Tue, 29 Sep 2026 15:09:37 +0300 Subject: [PATCH 2/2] fix(boldrouter): add model metadata so tools, vision and cost tracking work; keep it off the transcription path --- litellm/constants.py | 2 - ...odel_prices_and_context_window_backup.json | 1338 +++++++++++++++++ model_prices_and_context_window.json | 1338 +++++++++++++++++ .../openai_like/test_boldrouter_provider.py | 149 +- 4 files changed, 2824 insertions(+), 3 deletions(-) diff --git a/litellm/constants.py b/litellm/constants.py index 3a2857f1fbd..39c10d71709 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -950,7 +950,6 @@ openai_compatible_endpoints: Final[list] = [ "https://api.cognition.ai/v1", "https://api.scx.ai/v1", "https://api.prisminference.com/v1", - "https://boldrouter.com/v1", "https://gigachat.devices.sberbank.ru/api/v1", ] @@ -1026,7 +1025,6 @@ openai_compatible_providers: Final[list] = [ "scx-ai", "prism", "sail", - "boldrouter", # BoldRouter - JSON-configured provider ] OPENAI_AUDIO_TRANSCRIPTION_PROVIDERS: Final = frozenset({"openai"} | frozenset(openai_compatible_providers)) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index fc48c17b506..486d0b4e723 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -78773,5 +78773,1343 @@ "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": true + }, + "boldrouter/anthropic/claude-fable-5": { + "input_cost_per_token": 1e-05, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-fable-5-1": { + "input_cost_per_token": 1e-05, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-haiku-4.5": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-opus-4.8": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-opus-5": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-sonnet-4.6": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-sonnet-5": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/arcee/trinity-large-thinking": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/bold/auto": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/bold/fast": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/bold/frontier": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/cohere/command-a": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-a-plus": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/cohere/command-a-reasoning": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-a-vision": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/cohere/command-r": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-r7b": { + "input_cost_per_token": 4e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/deepseek/deepseek-v4-flash": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/deepseek/deepseek-v4-flash-vision-exp": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/deepseek/deepseek-v4-pro": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/google-vertex/gemini-2.5-flash": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-2.5-flash-lite": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-2.5-pro": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3-flash": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3.1-flash-lite": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3.5-flash": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 9e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-flash": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-flash-lite": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-pro": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3-flash": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.1-flash-lite": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.5-flash": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 9e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.5-flash-lite": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.6-flash": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3.75e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.8-flash": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3.75e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/hcompany/holo3-122b": { + "input_cost_per_token": 4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/hcompany/holo3.1-35b": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 1.8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/inceptionlabs/mercury-2": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/minimax/minimax-m2.7": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 204800, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/minimax/minimax-m2.7-highspeed": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 2.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/minimax/minimax-m3": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/mistral/codestral": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 9e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/mistral/mistral-large": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/mistral/mistral-medium": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/mistral/mistral-small": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/moonshot/kimi-k2.6": { + "input_cost_per_token": 9.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/moonshot/kimi-k2.7-code": { + "input_cost_per_token": 9.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/moonshot/kimi-k3": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1048576, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/nvidia/nemotron-3-nano": { + "input_cost_per_token": 5e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 2e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3-super": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3-ultra": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3.5-lightning": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/openai/gpt-4.1": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4.1-mini": { + "input_cost_per_token": 4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1047576, + "mode": "chat", + "output_cost_per_token": 1.6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4.1-nano": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4o": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4o-mini": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4-mini": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 4.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4-nano": { + "input_cost_per_token": 2e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 1.25e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/openai/gpt-5.5": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 3e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-luna": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-sol": { + "input_cost_per_token": 4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 2e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-terra": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 1.2e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/perplexity/sonar": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-deep-research": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-pro": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-reasoning-pro": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.7-max": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 7.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.7-plus": { + "input_cost_per_token": 3.2e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.28e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/qwen/qwen3.8-flash": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.8-max": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/reka/reka-edge": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 1e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/streamlake/kat-coder-air-v2.5": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 5.4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/streamlake/kat-coder-pro-v2.5": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 1.78e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/gpt-oss-120b": { + "input_cost_per_token": 3e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 1.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/gpt-oss-20b": { + "input_cost_per_token": 3e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 1.3e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/llama-3.3-70b": { + "input_cost_per_token": 7.1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.1e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/writer/palmyra-x4": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/writer/palmyra-x5": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1040000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/writer/palmyra-x6": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/x-ai/grok-4.3": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/x-ai/grok-4.6": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 500000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/xiaomi/mimo-v2.5": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/xiaomi/mimo-v2.5-pro": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5-air": { + "input_cost_per_token": 1.3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 8.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5v": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 1.8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/zai/glm-4.6": { + "input_cost_per_token": 4.3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 1.74e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.6v": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 9e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/zai/glm-4.7": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 3.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.1": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.2": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.3": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.3-flash": { + "input_cost_per_token": 8e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false } } diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index fc48c17b506..486d0b4e723 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -78773,5 +78773,1343 @@ "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": true + }, + "boldrouter/anthropic/claude-fable-5": { + "input_cost_per_token": 1e-05, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-fable-5-1": { + "input_cost_per_token": 1e-05, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-haiku-4.5": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-opus-4.8": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-opus-5": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-sonnet-4.6": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/anthropic/claude-sonnet-5": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/arcee/trinity-large-thinking": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/bold/auto": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/bold/fast": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/bold/frontier": { + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/cohere/command-a": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-a-plus": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/cohere/command-a-reasoning": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-a-vision": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/cohere/command-r": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/cohere/command-r7b": { + "input_cost_per_token": 4e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/deepseek/deepseek-v4-flash": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/deepseek/deepseek-v4-flash-vision-exp": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/deepseek/deepseek-v4-pro": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/google-vertex/gemini-2.5-flash": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-2.5-flash-lite": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-2.5-pro": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3-flash": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3.1-flash-lite": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google-vertex/gemini-3.5-flash": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 9e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-flash": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-flash-lite": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-2.5-pro": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3-flash": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.1-flash-lite": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.5-flash": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 9e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.5-flash-lite": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.6-flash": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3.75e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/google/gemini-3.8-flash": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 3.75e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/hcompany/holo3-122b": { + "input_cost_per_token": 4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 3e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/hcompany/holo3.1-35b": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 1.8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/inceptionlabs/mercury-2": { + "input_cost_per_token": 2.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/minimax/minimax-m2.7": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 204800, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/minimax/minimax-m2.7-highspeed": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 2.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/minimax/minimax-m3": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/mistral/codestral": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 9e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/mistral/mistral-large": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/mistral/mistral-medium": { + "input_cost_per_token": 1.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/mistral/mistral-small": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/moonshot/kimi-k2.6": { + "input_cost_per_token": 9.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/moonshot/kimi-k2.7-code": { + "input_cost_per_token": 9.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/moonshot/kimi-k3": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1048576, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/nvidia/nemotron-3-nano": { + "input_cost_per_token": 5e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 2e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3-super": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3-ultra": { + "input_cost_per_token": 5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/nvidia/nemotron-3.5-lightning": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/openai/gpt-4.1": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4.1-mini": { + "input_cost_per_token": 4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1047576, + "mode": "chat", + "output_cost_per_token": 1.6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4.1-nano": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4o": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-4o-mini": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4-mini": { + "input_cost_per_token": 7.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 4.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.4-nano": { + "input_cost_per_token": 2e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 1.25e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/openai/gpt-5.5": { + "input_cost_per_token": 5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 400000, + "mode": "chat", + "output_cost_per_token": 3e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-luna": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-sol": { + "input_cost_per_token": 4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 2e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/openai/gpt-5.6-terra": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1050000, + "mode": "chat", + "output_cost_per_token": 1.2e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/perplexity/sonar": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-deep-research": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-pro": { + "input_cost_per_token": 3e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/perplexity/sonar-reasoning-pro": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.7-max": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 7.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.7-plus": { + "input_cost_per_token": 3.2e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.28e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/qwen/qwen3.8-flash": { + "input_cost_per_token": 1.5e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/qwen/qwen3.8-max": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/reka/reka-edge": { + "input_cost_per_token": 1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 1e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/streamlake/kat-coder-air-v2.5": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 5.4e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/streamlake/kat-coder-pro-v2.5": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 1.78e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/gpt-oss-120b": { + "input_cost_per_token": 3e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 1.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/gpt-oss-20b": { + "input_cost_per_token": 3e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 1.3e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/wandb/llama-3.3-70b": { + "input_cost_per_token": 7.1e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.1e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/writer/palmyra-x4": { + "input_cost_per_token": 2.5e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1e-05, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/writer/palmyra-x5": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1040000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/writer/palmyra-x6": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/x-ai/grok-4.3": { + "input_cost_per_token": 1.25e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 2.5e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/x-ai/grok-4.6": { + "input_cost_per_token": 2e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 500000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/xiaomi/mimo-v2.5": { + "input_cost_per_token": 1.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.8e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "boldrouter/xiaomi/mimo-v2.5-pro": { + "input_cost_per_token": 4.4e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 8.7e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5-air": { + "input_cost_per_token": 1.3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 8.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.5v": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 1.8e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/zai/glm-4.6": { + "input_cost_per_token": 4.3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 1.74e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-4.6v": { + "input_cost_per_token": 3e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 9e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": false, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "boldrouter/zai/glm-4.7": { + "input_cost_per_token": 6e-07, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 2.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5": { + "input_cost_per_token": 1e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 3.2e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.1": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 200000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.2": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.3": { + "input_cost_per_token": 1.4e-06, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "boldrouter/zai/glm-5.3-flash": { + "input_cost_per_token": 8e-08, + "litellm_provider": "boldrouter", + "max_input_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 2.5e-07, + "source": "https://boldrouter.com/models", + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false } } diff --git a/tests/unit/llms/openai_like/test_boldrouter_provider.py b/tests/unit/llms/openai_like/test_boldrouter_provider.py index 2255dcc51e9..dd3e57c6068 100644 --- a/tests/unit/llms/openai_like/test_boldrouter_provider.py +++ b/tests/unit/llms/openai_like/test_boldrouter_provider.py @@ -40,7 +40,6 @@ def test_boldrouter_provider_resolution(monkeypatch: pytest.MonkeyPatch): api_key=None, ) - # BoldRouter model IDs are themselves provider-prefixed; only the litellm prefix is stripped. assert model == "anthropic/claude-sonnet-4.6" assert provider == "boldrouter" assert api_key == "sk-bold-test" @@ -148,3 +147,151 @@ async def test_boldrouter_async_chat_request(monkeypatch: pytest.MonkeyPatch): assert route.call_count == 1 assert body["model"] == "deepseek/deepseek-v4-flash" assert response.choices[0].message.content == "Hi" + + +BOLDROUTER_MODELS: Final = tuple(sorted(name for name in litellm.model_cost if name.startswith("boldrouter/"))) +BOLDROUTER_ROUTERS: Final = ("boldrouter/bold/auto", "boldrouter/bold/fast", "boldrouter/bold/frontier") + + +def test_boldrouter_backup_registry_mirrors_cost_map(): + package_root = Path(litellm.__file__).parent + cost_map = json.loads((package_root.parent / "model_prices_and_context_window.json").read_text()) + backup = json.loads((package_root / "model_prices_and_context_window_backup.json").read_text()) + entries = {name: entry for name, entry in cost_map.items() if name.startswith("boldrouter/")} + + assert tuple(sorted(entries)) == BOLDROUTER_MODELS + assert set(BOLDROUTER_ROUTERS) <= set(entries) + assert entries == {name: backup[name] for name in entries} + + +@pytest.mark.parametrize("model", [m for m in BOLDROUTER_MODELS if m not in BOLDROUTER_ROUTERS]) +def test_boldrouter_model_cost(model: str): + from litellm.cost_calculator import cost_per_token + + prompt_cost, completion_cost = cost_per_token( + model=model, + prompt_tokens=1_000_000, + completion_tokens=1_000_000, + custom_llm_provider="boldrouter", + ) + model_info = litellm.get_model_info(model) + + assert model_info["litellm_provider"] == "boldrouter" + assert model_info["mode"] == "chat" + assert model_info["input_cost_per_token"] > 0 + assert prompt_cost == pytest.approx(model_info["input_cost_per_token"] * 1_000_000) + assert completion_cost == pytest.approx(model_info["output_cost_per_token"] * 1_000_000) + + +@pytest.mark.parametrize("model", BOLDROUTER_ROUTERS) +def test_boldrouter_routers_support_tools_and_vision(model: str): + assert litellm.supports_function_calling(model) is True + assert litellm.supports_vision(model) is True + + +def test_boldrouter_chat_request_sends_tools(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setattr(litellm, "in_memory_llm_clients_cache", LLMClientCache()) + tool: Final = { + "type": "function", + "function": { + "name": "get_weather", + "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}, + }, + } + tool_call_response: Final = _chat_completion("") + tool_call_response["choices"][0]["message"] = { + "role": "assistant", + "content": None, + "tool_calls": [ + { + "id": "call_1", + "type": "function", + "function": {"name": "get_weather", "arguments": '{"city": "Zurich"}'}, + } + ], + } + tool_call_response["choices"][0]["finish_reason"] = "tool_calls" + with respx.mock() as upstream: + route: Final = upstream.post(BOLDROUTER_CHAT_URL).respond(200, json=tool_call_response) + response: Final = litellm.completion( + model="boldrouter/bold/auto", + messages=[{"role": "user", "content": "Weather in Zurich?"}], + api_key="sk-bold-test", + tools=[tool], + tool_choice="auto", + ) + + body: Final = json.loads(route.calls.last.request.content) + assert body["tools"] == [tool] + assert body["tool_choice"] == "auto" + assert response.choices[0].message.tool_calls[0].function.name == "get_weather" + + +def test_boldrouter_streaming_reports_usage(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setattr(litellm, "in_memory_llm_clients_cache", LLMClientCache()) + chunks: Final = [ + {"choices": [{"index": 0, "delta": {"role": "assistant", "content": "Hel"}, "finish_reason": None}]}, + {"choices": [{"index": 0, "delta": {"content": "lo"}, "finish_reason": None}]}, + {"choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}, + { + "choices": [], + "usage": { + "prompt_tokens": 5, + "completion_tokens": 12, + "total_tokens": 17, + "completion_tokens_details": {"reasoning_tokens": 10}, + }, + }, + ] + sse: Final = ( + "".join( + "data: " + + json.dumps( + { + "id": "chatcmpl-boldrouter", + "object": "chat.completion.chunk", + "created": 1, + "model": "bold/fast", + **c, + } + ) + + "\n\n" + for c in chunks + ) + + "data: [DONE]\n\n" + ) + with respx.mock() as upstream: + route: Final = upstream.post(BOLDROUTER_CHAT_URL).respond( + 200, content=sse.encode(), headers={"content-type": "text/event-stream"} + ) + stream: Final = litellm.completion( + model="boldrouter/bold/fast", + messages=[{"role": "user", "content": "Say hello"}], + api_key="sk-bold-test", + stream=True, + stream_options={"include_usage": True}, + ) + text = "" + usage = None + for chunk in stream: + if chunk.choices: + text += chunk.choices[0].delta.content or "" + usage = getattr(chunk, "usage", None) or usage + + body: Final = json.loads(route.calls.last.request.content) + assert body["stream"] is True + assert text == "Hello" + assert usage is not None + assert usage.completion_tokens == 12 + assert usage.completion_tokens_details.reasoning_tokens == 10 + + +def test_boldrouter_transcription_is_rejected_before_any_request(): + with respx.mock() as upstream: + with pytest.raises(Exception, match="Unmapped provider"): + litellm.transcription( + model="boldrouter/whisper-1", + file=("audio.wav", b"RIFF0000WAVE", "audio/wav"), + api_key="sk-bold-test", + ) + assert upstream.calls.call_count == 0