This commit is contained in:
Stellan 2026-10-20 17:43:45 +00:00 • committed by GitHub
commit 7f8381b97a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 1036 additions and 0 deletions

View file

@ -1047,6 +1047,7 @@ openai_compatible_endpoints: Final[list[str]] = [
"https://inference.coralbricks.ai/v1",
"https://api.cortecs.ai/v1",
"https://api.scx.ai/v1",
"https://bettertoken.ai/v1",
"https://api.prisminference.com/v1",
"https://api.reka.ai/v1",
"https://gigachat.devices.sberbank.ru/api/v1",
@ -1126,6 +1127,7 @@ openai_compatible_providers: Final[list[str]] = [
"coralbricks",
"cortecs",
"scx-ai",
"bettertoken",
"prism",
"sail",
"reka",

View file

@ -249,5 +249,11 @@
"/v1/responses",
"/v1/messages"
]
},
"bettertoken": {
"base_url": "https://bettertoken.ai/v1",
"api_key_env": "BETTERTOKEN_API_KEY",
"api_base_env": "BETTERTOKEN_API_BASE",
"supported_endpoints": ["/v1/chat/completions", "/v1/responses", "/v1/messages"]
}
}

View file

@ -284,6 +284,459 @@
"output_cost_per_image": 0.06,
"supports_nova_canvas_image_edit": true
},
"bettertoken/MiniMax-M3": {
"cache_read_input_token_cost": 3.48e-08,
"cache_read_input_token_cost_above_512k_tokens": 6.96e-08,
"input_cost_per_token": 1.74e-07,
"input_cost_per_token_above_512k_tokens": 3.48e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1048576,
"max_output_tokens": 512000,
"max_tokens": 512000,
"mode": "chat",
"output_cost_per_token": 6.96e-07,
"output_cost_per_token_above_512k_tokens": 1.392e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-fable-5": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_read_input_token_cost": 6.8e-07,
"input_cost_per_token": 6.8e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-fable-5-1": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_read_input_token_cost": 1.7e-07,
"input_cost_per_token": 6.8e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-haiku-4-5-20251001": {
"cache_creation_input_token_cost": 8.5e-07,
"cache_read_input_token_cost": 6.8e-08,
"input_cost_per_token": 6.8e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"mode": "chat",
"output_cost_per_token": 3.4e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-haiku-5-5": {
"cache_creation_input_token_cost": 8.5e-08,
"cache_creation_input_token_cost_above_100k_tokens": 4.25e-07,
"cache_read_input_token_cost": 6.8e-09,
"cache_read_input_token_cost_above_100k_tokens": 3.4e-08,
"input_cost_per_token": 6.8e-08,
"input_cost_per_token_above_100k_tokens": 3.4e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-07,
"output_cost_per_token_above_100k_tokens": 1.7e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-4-8": {
"cache_creation_input_token_cost": 4.25e-06,
"cache_read_input_token_cost": 3.4e-07,
"input_cost_per_token": 3.4e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.7e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-5": {
"cache_creation_input_token_cost": 4.25e-06,
"cache_read_input_token_cost": 3.4e-07,
"input_cost_per_token": 3.4e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.7e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-5-5": {
"cache_creation_input_token_cost": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"input_cost_per_token": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.36e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-sonnet-5": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_read_input_token_cost": 1.36e-07,
"input_cost_per_token": 1.36e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-sonnet-5-5": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_read_input_token_cost": 6.8e-08,
"input_cost_per_token": 1.36e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/deepseek-flash": {
"cache_read_input_token_cost": 4.68e-09,
"input_cost_per_token": 2.34e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 9.36e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/deepseek-pro": {
"cache_read_input_token_cost": 3.432e-08,
"input_cost_per_token": 1.03e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.089e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/deepseek-v4-pro-0813": {
"cache_read_input_token_cost": 3.432e-08,
"input_cost_per_token": 1.03e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.089e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.2": {
"cache_read_input_token_cost": 1.95e-07,
"input_cost_per_token": 1.05e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.3e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.3": {
"cache_read_input_token_cost": 1.95e-07,
"input_cost_per_token": 1.05e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.3e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.3-flash": {
"cache_read_input_token_cost": 2.25e-08,
"input_cost_per_token": 1.125e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.75e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-luna": {
"cache_creation_input_token_cost": 1.7e-07,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-07,
"cache_read_input_token_cost": 1.36e-08,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-08,
"input_cost_per_token": 1.36e-07,
"input_cost_per_token_above_272k_tokens": 2.72e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 8.16e-07,
"output_cost_per_token_above_272k_tokens": 1.224e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-sol": {
"cache_creation_input_token_cost": 3.4e-06,
"cache_creation_input_token_cost_above_272k_tokens": 6.8e-06,
"cache_read_input_token_cost": 2.72e-07,
"cache_read_input_token_cost_above_272k_tokens": 5.44e-07,
"input_cost_per_token": 2.72e-06,
"input_cost_per_token_above_272k_tokens": 5.44e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.36e-05,
"output_cost_per_token_above_272k_tokens": 2.04e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-terra": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 8.16e-06,
"output_cost_per_token_above_272k_tokens": 1.224e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-astra": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_creation_input_token_cost_above_272k_tokens": 1.7e-05,
"cache_read_input_token_cost": 6.8e-07,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-06,
"input_cost_per_token": 6.8e-06,
"input_cost_per_token_above_272k_tokens": 1.36e-05,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"output_cost_per_token_above_272k_tokens": 5.1e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-luna": {
"cache_creation_input_token_cost": 8.5e-08,
"cache_creation_input_token_cost_above_272k_tokens": 1.7e-07,
"cache_read_input_token_cost": 6.8e-09,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-08,
"input_cost_per_token": 6.8e-08,
"input_cost_per_token_above_272k_tokens": 1.36e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-07,
"output_cost_per_token_above_272k_tokens": 5.1e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-sol": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"output_cost_per_token_above_272k_tokens": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6.1-sol": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 6.8e-08,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"output_cost_per_token_above_272k_tokens": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/kimi-k3": {
"cache_creation_input_token_cost": 2.04e-06,
"cache_read_input_token_cost": 2.04e-07,
"input_cost_per_token": 2.04e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1048576,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/qwen3.8-max": {
"cache_creation_input_token_cost": 1.8e-06,
"cache_read_input_token_cost": 1.8e-07,
"input_cost_per_token": 1.44e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 4.32e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"us.amazon.nova-canvas-v1:0": {
"deprecation_date": "2026-09-30",
"litellm_provider": "bedrock",

View file

@ -1,6 +1,24 @@
{
"_comment": "This file defines which endpoints are supported by each LiteLLM provider",
"_schema": {
"bettertoken": {
"display_name": "BetterToken (`bettertoken`)",
"url": "https://docs.litellm.ai/docs/providers/bettertoken",
"endpoints": {
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false,
"interactions": false
}
},
"provider_slug": {
"display_name": "Display name shown in README (e.g., 'OpenAI (`openai`)')",
"url": "Link to provider documentation",

View file

@ -1,4 +1,32 @@
[
{
"provider": "BETTERTOKEN",
"provider_display_name": "BetterToken",
"litellm_provider": "bettertoken",
"credential_fields": [
{
"key": "api_base",
"label": "API Base",
"placeholder": "https://bettertoken.ai/v1",
"tooltip": null,
"required": false,
"field_type": "text",
"options": null,
"default_value": null
},
{
"key": "api_key",
"label": "API Key",
"placeholder": null,
"tooltip": null,
"required": true,
"field_type": "password",
"options": null,
"default_value": null
}
],
"default_model_placeholder": "bettertoken/claude-sonnet-5-5"
},
{
"provider": "SCALEDOWN",
"provider_display_name": "ScaleDown",

View file

@ -4531,6 +4531,7 @@ class LlmProviders(str, Enum):
CORALBRICKS = "coralbricks"
CORTECS = "cortecs"
SCX_AI = "scx-ai"
BETTERTOKEN = "bettertoken"
PRISM = "prism"
OPENINFER = "openinfer"
INFERENCEAPIS = "inferenceapis"

View file

@ -284,6 +284,459 @@
"output_cost_per_image": 0.06,
"supports_nova_canvas_image_edit": true
},
"bettertoken/MiniMax-M3": {
"cache_read_input_token_cost": 3.48e-08,
"cache_read_input_token_cost_above_512k_tokens": 6.96e-08,
"input_cost_per_token": 1.74e-07,
"input_cost_per_token_above_512k_tokens": 3.48e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1048576,
"max_output_tokens": 512000,
"max_tokens": 512000,
"mode": "chat",
"output_cost_per_token": 6.96e-07,
"output_cost_per_token_above_512k_tokens": 1.392e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-fable-5": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_read_input_token_cost": 6.8e-07,
"input_cost_per_token": 6.8e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-fable-5-1": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_read_input_token_cost": 1.7e-07,
"input_cost_per_token": 6.8e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-haiku-4-5-20251001": {
"cache_creation_input_token_cost": 8.5e-07,
"cache_read_input_token_cost": 6.8e-08,
"input_cost_per_token": 6.8e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"mode": "chat",
"output_cost_per_token": 3.4e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-haiku-5-5": {
"cache_creation_input_token_cost": 8.5e-08,
"cache_creation_input_token_cost_above_100k_tokens": 4.25e-07,
"cache_read_input_token_cost": 6.8e-09,
"cache_read_input_token_cost_above_100k_tokens": 3.4e-08,
"input_cost_per_token": 6.8e-08,
"input_cost_per_token_above_100k_tokens": 3.4e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-07,
"output_cost_per_token_above_100k_tokens": 1.7e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-4-8": {
"cache_creation_input_token_cost": 4.25e-06,
"cache_read_input_token_cost": 3.4e-07,
"input_cost_per_token": 3.4e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.7e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-5": {
"cache_creation_input_token_cost": 4.25e-06,
"cache_read_input_token_cost": 3.4e-07,
"input_cost_per_token": 3.4e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.7e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-opus-5-5": {
"cache_creation_input_token_cost": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"input_cost_per_token": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.36e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-sonnet-5": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_read_input_token_cost": 1.36e-07,
"input_cost_per_token": 1.36e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/claude-sonnet-5-5": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_read_input_token_cost": 6.8e-08,
"input_cost_per_token": 1.36e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/deepseek-flash": {
"cache_read_input_token_cost": 4.68e-09,
"input_cost_per_token": 2.34e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 9.36e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/deepseek-pro": {
"cache_read_input_token_cost": 3.432e-08,
"input_cost_per_token": 1.03e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.089e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/deepseek-v4-pro-0813": {
"cache_read_input_token_cost": 3.432e-08,
"input_cost_per_token": 1.03e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.089e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.2": {
"cache_read_input_token_cost": 1.95e-07,
"input_cost_per_token": 1.05e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.3e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.3": {
"cache_read_input_token_cost": 1.95e-07,
"input_cost_per_token": 1.05e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.3e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": false
},
"bettertoken/glm-5.3-flash": {
"cache_read_input_token_cost": 2.25e-08,
"input_cost_per_token": 1.125e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 3.75e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-luna": {
"cache_creation_input_token_cost": 1.7e-07,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-07,
"cache_read_input_token_cost": 1.36e-08,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-08,
"input_cost_per_token": 1.36e-07,
"input_cost_per_token_above_272k_tokens": 2.72e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 8.16e-07,
"output_cost_per_token_above_272k_tokens": 1.224e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-sol": {
"cache_creation_input_token_cost": 3.4e-06,
"cache_creation_input_token_cost_above_272k_tokens": 6.8e-06,
"cache_read_input_token_cost": 2.72e-07,
"cache_read_input_token_cost_above_272k_tokens": 5.44e-07,
"input_cost_per_token": 2.72e-06,
"input_cost_per_token_above_272k_tokens": 5.44e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.36e-05,
"output_cost_per_token_above_272k_tokens": 2.04e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-5.6-terra": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 8.16e-06,
"output_cost_per_token_above_272k_tokens": 1.224e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-astra": {
"cache_creation_input_token_cost": 8.5e-06,
"cache_creation_input_token_cost_above_272k_tokens": 1.7e-05,
"cache_read_input_token_cost": 6.8e-07,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-06,
"input_cost_per_token": 6.8e-06,
"input_cost_per_token_above_272k_tokens": 1.36e-05,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-05,
"output_cost_per_token_above_272k_tokens": 5.1e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-luna": {
"cache_creation_input_token_cost": 8.5e-08,
"cache_creation_input_token_cost_above_272k_tokens": 1.7e-07,
"cache_read_input_token_cost": 6.8e-09,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-08,
"input_cost_per_token": 6.8e-08,
"input_cost_per_token_above_272k_tokens": 1.36e-07,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3.4e-07,
"output_cost_per_token_above_272k_tokens": 5.1e-07,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6-sol": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 1.36e-07,
"cache_read_input_token_cost_above_272k_tokens": 2.72e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"output_cost_per_token_above_272k_tokens": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/gpt-6.1-sol": {
"cache_creation_input_token_cost": 1.7e-06,
"cache_creation_input_token_cost_above_272k_tokens": 3.4e-06,
"cache_read_input_token_cost": 6.8e-08,
"cache_read_input_token_cost_above_272k_tokens": 1.36e-07,
"input_cost_per_token": 1.36e-06,
"input_cost_per_token_above_272k_tokens": 2.72e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 922000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 6.8e-06,
"output_cost_per_token_above_272k_tokens": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/kimi-k3": {
"cache_creation_input_token_cost": 2.04e-06,
"cache_read_input_token_cost": 2.04e-07,
"input_cost_per_token": 2.04e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1048576,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 1.02e-05,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"bettertoken/qwen3.8-max": {
"cache_creation_input_token_cost": 1.8e-06,
"cache_read_input_token_cost": 1.8e-07,
"input_cost_per_token": 1.44e-06,
"litellm_provider": "bettertoken",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 4.32e-06,
"source": "https://bettertoken.ai/api/pricing",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_tool_choice": true,
"supports_vision": true
},
"us.amazon.nova-canvas-v1:0": {
"deprecation_date": "2026-09-30",
"litellm_provider": "bedrock",

View file

@ -1,6 +1,24 @@
{
"_comment": "This file defines which endpoints are supported by each LiteLLM provider",
"_schema": {
"bettertoken": {
"display_name": "BetterToken (`bettertoken`)",
"url": "https://docs.litellm.ai/docs/providers/bettertoken",
"endpoints": {
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false,
"interactions": false
}
},
"provider_slug": {
"display_name": "Display name shown in README (e.g., 'OpenAI (`openai`)')",
"url": "Link to provider documentation",

View file

@ -0,0 +1,57 @@
import json
from pathlib import Path
import pytest
import litellm
def test_bettertoken_provider_resolution(monkeypatch: pytest.MonkeyPatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("BETTERTOKEN_API_KEY", "bt-test-key")
model, provider, api_key, api_base = get_llm_provider(
model="bettertoken/claude-sonnet-5-5",
custom_llm_provider=None,
api_base=None,
api_key=None,
)
assert model == "claude-sonnet-5-5"
assert provider == "bettertoken"
assert api_key == "bt-test-key"
assert api_base == "https://bettertoken.ai/v1"
def test_bettertoken_provider_keeps_explicit_credentials(monkeypatch: pytest.MonkeyPatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("BETTERTOKEN_API_KEY", "bt-env-key")
_, provider, api_key, api_base = get_llm_provider(
model="bettertoken/claude-sonnet-5-5",
custom_llm_provider=None,
api_base="https://bettertoken.internal.example/v1",
api_key="bt-explicit-key",
)
assert provider == "bettertoken"
assert api_key == "bt-explicit-key"
assert api_base == "https://bettertoken.internal.example/v1"
def test_bettertoken_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())
bt = next(p for p in providers if p["litellm_provider"] == "bettertoken")
assert bt["provider_display_name"] == "BetterToken"
assert bt["default_model_placeholder"] == "bettertoken/claude-sonnet-5-5"
assert {f["key"]: f["required"] for f in bt["credential_fields"]} == {"api_base": False, "api_key": True}
def test_bettertoken_cost_map_entries_exist():
entry = litellm.model_cost["bettertoken/claude-sonnet-5-5"]
assert entry["litellm_provider"] == "bettertoken"
assert entry["input_cost_per_token"] > 0