fix(model_prices): consolidate nine open registry audits into one changeset

Combines the model-cost-map data from #35911, #36017, #36080, #36113, #36188, #36444, #37029, #37252 and #37632 onto current litellm_internal_staging, merged per entry field so older branches no longer revert fields the base has gained since they were opened. Drops the Gemini deprecation dates from #36188 and the text-embedding-004 date from #36080 that the official docs contradict.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Devin AI 2026-08-20 18:13:39 +00:00
parent 7ac95b1cee
commit b7017a7949
4 changed files with 979 additions and 88 deletions

View file

@ -12401,8 +12401,8 @@
"input_cost_per_token": 3e-06,
"litellm_provider": "anthropic",
"max_input_tokens": 1000000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.5e-05,
"search_context_cost_per_query": {
@ -12787,7 +12787,8 @@
"us": 1.1
},
"supports_output_config": true,
"prompt_cache_min_tokens": 512
"prompt_cache_min_tokens": 512,
"supports_native_structured_output": true
},
"claude-opus-5": {
"deprecation_date": "2027-07-24",
@ -13350,7 +13351,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "completion",
"output_cost_per_token": 2e-06
"output_cost_per_token": 2e-06,
"deprecation_date": "2025-09-15"
},
"command-a-03-2025": {
"input_cost_per_token": 2.5e-06,
@ -13371,7 +13373,8 @@
"max_tokens": 4096,
"mode": "chat",
"output_cost_per_token": 6e-07,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-nightly": {
"input_cost_per_token": 1e-06,
@ -13391,7 +13394,8 @@
"mode": "chat",
"output_cost_per_token": 6e-07,
"supports_function_calling": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-r-08-2024": {
"input_cost_per_token": 1.5e-07,
@ -13413,7 +13417,8 @@
"mode": "chat",
"output_cost_per_token": 1e-05,
"supports_function_calling": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-r-plus-08-2024": {
"input_cost_per_token": 2.5e-06,
@ -18893,6 +18898,106 @@
},
"web_search_billing_unit": "per_query"
},
"gemini-3.1-flash-lite-image": {
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "vertex_ai-language-models",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": false,
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"gemini/gemini-3.1-flash-lite-image": {
"rpm": 1000,
"tpm": 4000000,
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"input_cost_per_token_batches": 1.25e-07,
"litellm_provider": "gemini",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"output_cost_per_token_batches": 7.5e-07,
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-3.1-flash-lite-image",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": true,
"supports_prompt_caching": false,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"vertex_ai/gemini-3.1-flash-lite-image": {
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "vertex_ai-language-models",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": false,
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"gemini-3.1-flash-image": {
"deprecation_date": "2027-05-28",
"input_cost_per_image": 0.00056,
@ -24142,7 +24247,8 @@
"supports_response_schema": false,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": false
"supports_vision": false,
"deprecation_date": "2027-01-20"
},
"gpt-4o-mini": {
"cache_read_input_token_cost": 7.5e-08,
@ -25567,6 +25673,154 @@
"supports_web_search": true,
"supports_xhigh_reasoning_effort": true
},
"gpt-5.6-cyber": {
"cache_creation_input_token_cost": 1.5625e-05,
"cache_creation_input_token_cost_above_272k_tokens": 3.125e-05,
"cache_read_input_token_cost": 1.25e-06,
"cache_read_input_token_cost_above_272k_tokens": 2.5e-06,
"input_cost_per_token": 1.25e-05,
"input_cost_per_token_above_272k_tokens": 2.5e-05,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 7.5e-05,
"output_cost_per_token_above_272k_tokens": 0.0001125,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/gpt-5.6-cyber",
"supports_computer_use": true,
"supports_parallel_function_calling": true
},
"daybreak-red-latest": {
"cache_creation_input_token_cost": 1.5625e-05,
"cache_creation_input_token_cost_above_272k_tokens": 3.125e-05,
"cache_read_input_token_cost": 1.25e-06,
"cache_read_input_token_cost_above_272k_tokens": 2.5e-06,
"input_cost_per_token": 1.25e-05,
"input_cost_per_token_above_272k_tokens": 2.5e-05,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 7.5e-05,
"output_cost_per_token_above_272k_tokens": 0.0001125,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/daybreak-red-latest",
"supports_computer_use": true,
"supports_parallel_function_calling": true
},
"daybreak-blue-latest": {
"cache_creation_input_token_cost": 6.25e-06,
"cache_creation_input_token_cost_above_272k_tokens": 1.25e-05,
"cache_read_input_token_cost": 5e-07,
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
"input_cost_per_token": 5e-06,
"input_cost_per_token_above_272k_tokens": 1e-05,
"litellm_provider": "openai",
"max_input_tokens": 1050000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-05,
"output_cost_per_token_above_272k_tokens": 4.5e-05,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/daybreak-blue-latest",
"supports_parallel_function_calling": true
},
"chat-latest": {
"cache_read_input_token_cost": 5e-07,
"input_cost_per_token": 5e-06,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-05,
"source": "https://platform.openai.com/docs/models/chat-latest",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true
},
"gpt-5.5": {
"cache_read_input_token_cost": 5e-07,
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
@ -29330,28 +29584,30 @@
"mistral/codestral-2508": {
"input_cost_per_token": 3e-07,
"litellm_provider": "mistral",
"max_input_tokens": 256000,
"max_output_tokens": 256000,
"max_tokens": 256000,
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 9e-07,
"source": "https://mistral.ai/news/codestral-25-08",
"source": "https://docs.mistral.ai/models/model-cards/codestral-25-08",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"mistral/codestral-latest": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 3e-07,
"litellm_provider": "mistral",
"max_input_tokens": 32000,
"max_output_tokens": 8191,
"max_tokens": 8191,
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-06,
"output_cost_per_token": 9e-07,
"supports_assistant_prefill": true,
"supports_response_schema": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"source": "https://docs.mistral.ai/models/model-cards/codestral-25-08",
"supports_function_calling": true
},
"mistral/codestral-mamba-latest": {
"input_cost_per_token": 2.5e-07,
@ -29550,6 +29806,16 @@
],
"source": "https://mistral.ai/pricing#api-pricing"
},
"mistral/mistral-ocr-4-1": {
"annotation_cost_per_page": 0.005,
"litellm_provider": "mistral",
"mode": "ocr",
"ocr_cost_per_page": 0.004,
"source": "https://docs.mistral.ai/models/model-cards/ocr-4-1",
"supported_endpoints": [
"/v1/ocr"
]
},
"mistral/mistral-ocr-2505-completion": {
"deprecation_date": "2026-05-31",
"litellm_provider": "mistral",
@ -29874,19 +30140,19 @@
"supports_tool_choice": true
},
"mistral/mistral-small-latest": {
"input_cost_per_token": 6e-08,
"input_cost_per_token": 1.5e-07,
"litellm_provider": "mistral",
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"max_tokens": 131072,
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 1.8e-07,
"source": "https://mistral.ai/pricing",
"output_cost_per_token": 6e-07,
"source": "https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_response_schema": true,
"supports_tool_choice": true,
"supports_vision": true
"supports_reasoning": true
},
"mistral/mistral-small-3-2-2506": {
"deprecation_date": "2026-07-31",
@ -32708,6 +32974,31 @@
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
},
"openrouter/anthropic/claude-opus-5": {
"prompt_cache_min_tokens": 512,
"supports_adaptive_thinking": true,
"cache_creation_input_token_cost": 6.25e-06,
"cache_read_input_token_cost": 5e-07,
"input_cost_per_token": 5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 2.5e-05,
"source": "https://openrouter.ai/anthropic/claude-opus-5",
"supports_assistant_prefill": false,
"supports_computer_use": true,
"supports_function_calling": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_max_reasoning_effort": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
},
"openrouter/bytedance/ui-tars-1.5-7b": {
"input_cost_per_token": 1e-07,
"litellm_provider": "openrouter",
@ -32816,6 +33107,38 @@
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v4-pro": {
"input_cost_per_token": 1.32e-06,
"input_cost_per_token_cache_hit": 4.4e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.96e-06,
"source": "https://openrouter.ai/deepseek/deepseek-v4-pro",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v4-pro-0813": {
"input_cost_per_token": 1.32e-06,
"input_cost_per_token_cache_hit": 4.4e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.96e-06,
"source": "https://openrouter.ai/deepseek/deepseek-v4-pro-0813",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"openrouter/google/gemini-2.0-flash-001": {
"deprecation_date": "2026-06-01",
"input_cost_per_audio_token": 7e-07,
@ -35341,7 +35664,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "rerank",
"output_cost_per_token": 0.0
"output_cost_per_token": 0.0,
"deprecation_date": "2025-04-30"
},
"rerank-english-v3.0": {
"input_cost_per_query": 0.002,
@ -35361,7 +35685,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "rerank",
"output_cost_per_token": 0.0
"output_cost_per_token": 0.0,
"deprecation_date": "2025-04-30"
},
"rerank-multilingual-v3.0": {
"input_cost_per_query": 0.002,
@ -39813,13 +40138,13 @@
"supports_tool_choice": true
},
"vertex_ai/deepseek-ai/deepseek-v3.1-maas": {
"input_cost_per_token": 1.35e-06,
"input_cost_per_token": 6e-07,
"litellm_provider": "vertex_ai-deepseek_models",
"max_input_tokens": 163840,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 5.4e-06,
"output_cost_per_token": 1.7e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models",
"supported_regions": [
"us-central1"
@ -40653,13 +40978,13 @@
"supports_vision": true
},
"vertex_ai/openai/gpt-oss-120b-maas": {
"input_cost_per_token": 1.5e-07,
"input_cost_per_token": 9e-08,
"litellm_provider": "vertex_ai-openai_models",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 3.6e-07,
"source": "https://console.cloud.google.com/vertex-ai/publishers/openai/model-garden/gpt-oss-120b-maas",
"supports_reasoning": true
},
@ -40741,13 +41066,13 @@
"supports_web_search": true
},
"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas": {
"input_cost_per_token": 2.5e-07,
"input_cost_per_token": 2.2e-07,
"litellm_provider": "vertex_ai-qwen_models",
"max_input_tokens": 262144,
"max_output_tokens": 16384,
"max_tokens": 16384,
"mode": "chat",
"output_cost_per_token": 1e-06,
"output_cost_per_token": 8.8e-07,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supported_regions": [
"global",
@ -40757,13 +41082,13 @@
"supports_tool_choice": true
},
"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 2.2e-07,
"litellm_provider": "vertex_ai-qwen_models",
"max_input_tokens": 262144,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 4e-06,
"output_cost_per_token": 1.8e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supported_regions": [
"global"
@ -41738,7 +42063,8 @@
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-3-mini": {
"cache_read_input_token_cost": 7.5e-08,
@ -41856,7 +42182,8 @@
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-4-fast-reasoning": {
"cache_read_input_token_cost": 5e-08,
@ -41925,7 +42252,8 @@
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-4-1-fast": {
"cache_read_input_token_cost": 5e-08,
@ -42253,7 +42581,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-code-fast-1": {
"cache_read_input_token_cost": 2e-07,
@ -42273,7 +42602,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-code-fast-1-0825": {
"cache_read_input_token_cost": 2e-07,
@ -42293,7 +42623,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-vision-beta": {
"input_cost_per_image": 5e-06,
@ -46643,7 +46974,8 @@
"supports_function_calling": true,
"supports_parallel_function_calling": true,
"supports_system_messages": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2027-01-20"
},
"gpt-realtime-whisper": {
"input_cost_per_second": 0.0002833333333333333,
@ -48700,7 +49032,8 @@
"supports_sampling_params": false,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
"supports_xhigh_reasoning_effort": true,
"supports_native_structured_output": true
},
"claude-mythos-preview": {
"cache_creation_input_token_cost": 1.25e-05,
@ -48733,7 +49066,8 @@
"supports_sampling_params": false,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
"supports_xhigh_reasoning_effort": true,
"supports_native_structured_output": true
},
"gemini/gemini-robotics-er-2-streaming-preview": {
"input_cost_per_audio_token": 2e-06,
@ -48850,6 +49184,22 @@
],
"supports_audio_output": true
},
"mistral/zai-glm-5-2": {
"cache_read_input_token_cost": 1.4e-07,
"input_cost_per_token": 1.4e-06,
"litellm_provider": "mistral",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 4.4e-06,
"source": "https://docs.mistral.ai/models/model-cards/zai-glm-5-2",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"fallback_generalizations": {
"rules": [
{

View file

@ -12401,8 +12401,8 @@
"input_cost_per_token": 3e-06,
"litellm_provider": "anthropic",
"max_input_tokens": 1000000,
"max_output_tokens": 64000,
"max_tokens": 64000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 1.5e-05,
"search_context_cost_per_query": {
@ -12787,7 +12787,8 @@
"us": 1.1
},
"supports_output_config": true,
"prompt_cache_min_tokens": 512
"prompt_cache_min_tokens": 512,
"supports_native_structured_output": true
},
"claude-opus-5": {
"deprecation_date": "2027-07-24",
@ -13350,7 +13351,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "completion",
"output_cost_per_token": 2e-06
"output_cost_per_token": 2e-06,
"deprecation_date": "2025-09-15"
},
"command-a-03-2025": {
"input_cost_per_token": 2.5e-06,
@ -13371,7 +13373,8 @@
"max_tokens": 4096,
"mode": "chat",
"output_cost_per_token": 6e-07,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-nightly": {
"input_cost_per_token": 1e-06,
@ -13391,7 +13394,8 @@
"mode": "chat",
"output_cost_per_token": 6e-07,
"supports_function_calling": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-r-08-2024": {
"input_cost_per_token": 1.5e-07,
@ -13413,7 +13417,8 @@
"mode": "chat",
"output_cost_per_token": 1e-05,
"supports_function_calling": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2025-09-15"
},
"command-r-plus-08-2024": {
"input_cost_per_token": 2.5e-06,
@ -18893,6 +18898,106 @@
},
"web_search_billing_unit": "per_query"
},
"gemini-3.1-flash-lite-image": {
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "vertex_ai-language-models",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": false,
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"gemini/gemini-3.1-flash-lite-image": {
"rpm": 1000,
"tpm": 4000000,
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"input_cost_per_token_batches": 1.25e-07,
"litellm_provider": "gemini",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"output_cost_per_token_batches": 7.5e-07,
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-3.1-flash-lite-image",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": true,
"supports_prompt_caching": false,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"vertex_ai/gemini-3.1-flash-lite-image": {
"input_cost_per_image": 0.00028,
"input_cost_per_token": 2.5e-07,
"litellm_provider": "vertex_ai-language-models",
"max_input_tokens": 65536,
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "image_generation",
"output_cost_per_image": 0.0336,
"output_cost_per_image_token": 3e-05,
"output_cost_per_token": 1.5e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions",
"/v1/batch"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text",
"image"
],
"supports_function_calling": false,
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_reasoning": true,
"supports_system_messages": true,
"supports_vision": true
},
"gemini-3.1-flash-image": {
"deprecation_date": "2027-05-28",
"input_cost_per_image": 0.00056,
@ -24142,7 +24247,8 @@
"supports_response_schema": false,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": false
"supports_vision": false,
"deprecation_date": "2027-01-20"
},
"gpt-4o-mini": {
"cache_read_input_token_cost": 7.5e-08,
@ -25567,6 +25673,154 @@
"supports_web_search": true,
"supports_xhigh_reasoning_effort": true
},
"gpt-5.6-cyber": {
"cache_creation_input_token_cost": 1.5625e-05,
"cache_creation_input_token_cost_above_272k_tokens": 3.125e-05,
"cache_read_input_token_cost": 1.25e-06,
"cache_read_input_token_cost_above_272k_tokens": 2.5e-06,
"input_cost_per_token": 1.25e-05,
"input_cost_per_token_above_272k_tokens": 2.5e-05,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 7.5e-05,
"output_cost_per_token_above_272k_tokens": 0.0001125,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/gpt-5.6-cyber",
"supports_computer_use": true,
"supports_parallel_function_calling": true
},
"daybreak-red-latest": {
"cache_creation_input_token_cost": 1.5625e-05,
"cache_creation_input_token_cost_above_272k_tokens": 3.125e-05,
"cache_read_input_token_cost": 1.25e-06,
"cache_read_input_token_cost_above_272k_tokens": 2.5e-06,
"input_cost_per_token": 1.25e-05,
"input_cost_per_token_above_272k_tokens": 2.5e-05,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 7.5e-05,
"output_cost_per_token_above_272k_tokens": 0.0001125,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/daybreak-red-latest",
"supports_computer_use": true,
"supports_parallel_function_calling": true
},
"daybreak-blue-latest": {
"cache_creation_input_token_cost": 6.25e-06,
"cache_creation_input_token_cost_above_272k_tokens": 1.25e-05,
"cache_read_input_token_cost": 5e-07,
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
"input_cost_per_token": 5e-06,
"input_cost_per_token_above_272k_tokens": 1e-05,
"litellm_provider": "openai",
"max_input_tokens": 1050000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-05,
"output_cost_per_token_above_272k_tokens": 4.5e-05,
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true,
"source": "https://platform.openai.com/docs/models/daybreak-blue-latest",
"supports_parallel_function_calling": true
},
"chat-latest": {
"cache_read_input_token_cost": 5e-07,
"input_cost_per_token": 5e-06,
"litellm_provider": "openai",
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-05,
"source": "https://platform.openai.com/docs/models/chat-latest",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"supported_modalities": [
"text",
"image"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_web_search": true
},
"gpt-5.5": {
"cache_read_input_token_cost": 5e-07,
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
@ -29330,28 +29584,30 @@
"mistral/codestral-2508": {
"input_cost_per_token": 3e-07,
"litellm_provider": "mistral",
"max_input_tokens": 256000,
"max_output_tokens": 256000,
"max_tokens": 256000,
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 9e-07,
"source": "https://mistral.ai/news/codestral-25-08",
"source": "https://docs.mistral.ai/models/model-cards/codestral-25-08",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"mistral/codestral-latest": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 3e-07,
"litellm_provider": "mistral",
"max_input_tokens": 32000,
"max_output_tokens": 8191,
"max_tokens": 8191,
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 3e-06,
"output_cost_per_token": 9e-07,
"supports_assistant_prefill": true,
"supports_response_schema": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"source": "https://docs.mistral.ai/models/model-cards/codestral-25-08",
"supports_function_calling": true
},
"mistral/codestral-mamba-latest": {
"input_cost_per_token": 2.5e-07,
@ -29550,6 +29806,16 @@
],
"source": "https://mistral.ai/pricing#api-pricing"
},
"mistral/mistral-ocr-4-1": {
"annotation_cost_per_page": 0.005,
"litellm_provider": "mistral",
"mode": "ocr",
"ocr_cost_per_page": 0.004,
"source": "https://docs.mistral.ai/models/model-cards/ocr-4-1",
"supported_endpoints": [
"/v1/ocr"
]
},
"mistral/mistral-ocr-2505-completion": {
"deprecation_date": "2026-05-31",
"litellm_provider": "mistral",
@ -29874,19 +30140,19 @@
"supports_tool_choice": true
},
"mistral/mistral-small-latest": {
"input_cost_per_token": 6e-08,
"input_cost_per_token": 1.5e-07,
"litellm_provider": "mistral",
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"max_tokens": 131072,
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"max_tokens": 262144,
"mode": "chat",
"output_cost_per_token": 1.8e-07,
"source": "https://mistral.ai/pricing",
"output_cost_per_token": 6e-07,
"source": "https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_response_schema": true,
"supports_tool_choice": true,
"supports_vision": true
"supports_reasoning": true
},
"mistral/mistral-small-3-2-2506": {
"deprecation_date": "2026-07-31",
@ -32708,6 +32974,31 @@
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
},
"openrouter/anthropic/claude-opus-5": {
"prompt_cache_min_tokens": 512,
"supports_adaptive_thinking": true,
"cache_creation_input_token_cost": 6.25e-06,
"cache_read_input_token_cost": 5e-07,
"input_cost_per_token": 5e-06,
"litellm_provider": "openrouter",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"max_tokens": 128000,
"mode": "chat",
"output_cost_per_token": 2.5e-05,
"source": "https://openrouter.ai/anthropic/claude-opus-5",
"supports_assistant_prefill": false,
"supports_computer_use": true,
"supports_function_calling": true,
"supports_pdf_input": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_max_reasoning_effort": true,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
},
"openrouter/bytedance/ui-tars-1.5-7b": {
"input_cost_per_token": 1e-07,
"litellm_provider": "openrouter",
@ -32816,6 +33107,38 @@
"supports_reasoning": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v4-pro": {
"input_cost_per_token": 1.32e-06,
"input_cost_per_token_cache_hit": 4.4e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.96e-06,
"source": "https://openrouter.ai/deepseek/deepseek-v4-pro",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"openrouter/deepseek/deepseek-v4-pro-0813": {
"input_cost_per_token": 1.32e-06,
"input_cost_per_token_cache_hit": 4.4e-08,
"litellm_provider": "openrouter",
"max_input_tokens": 1048576,
"max_output_tokens": 384000,
"max_tokens": 384000,
"mode": "chat",
"output_cost_per_token": 3.96e-06,
"source": "https://openrouter.ai/deepseek/deepseek-v4-pro-0813",
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"openrouter/google/gemini-2.0-flash-001": {
"deprecation_date": "2026-06-01",
"input_cost_per_audio_token": 7e-07,
@ -35341,7 +35664,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "rerank",
"output_cost_per_token": 0.0
"output_cost_per_token": 0.0,
"deprecation_date": "2025-04-30"
},
"rerank-english-v3.0": {
"input_cost_per_query": 0.002,
@ -35361,7 +35685,8 @@
"max_output_tokens": 4096,
"max_tokens": 4096,
"mode": "rerank",
"output_cost_per_token": 0.0
"output_cost_per_token": 0.0,
"deprecation_date": "2025-04-30"
},
"rerank-multilingual-v3.0": {
"input_cost_per_query": 0.002,
@ -39813,13 +40138,13 @@
"supports_tool_choice": true
},
"vertex_ai/deepseek-ai/deepseek-v3.1-maas": {
"input_cost_per_token": 1.35e-06,
"input_cost_per_token": 6e-07,
"litellm_provider": "vertex_ai-deepseek_models",
"max_input_tokens": 163840,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 5.4e-06,
"output_cost_per_token": 1.7e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models",
"supported_regions": [
"us-central1"
@ -40653,13 +40978,13 @@
"supports_vision": true
},
"vertex_ai/openai/gpt-oss-120b-maas": {
"input_cost_per_token": 1.5e-07,
"input_cost_per_token": 9e-08,
"litellm_provider": "vertex_ai-openai_models",
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 6e-07,
"output_cost_per_token": 3.6e-07,
"source": "https://console.cloud.google.com/vertex-ai/publishers/openai/model-garden/gpt-oss-120b-maas",
"supports_reasoning": true
},
@ -40741,13 +41066,13 @@
"supports_web_search": true
},
"vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas": {
"input_cost_per_token": 2.5e-07,
"input_cost_per_token": 2.2e-07,
"litellm_provider": "vertex_ai-qwen_models",
"max_input_tokens": 262144,
"max_output_tokens": 16384,
"max_tokens": 16384,
"mode": "chat",
"output_cost_per_token": 1e-06,
"output_cost_per_token": 8.8e-07,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supported_regions": [
"global",
@ -40757,13 +41082,13 @@
"supports_tool_choice": true
},
"vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas": {
"input_cost_per_token": 1e-06,
"input_cost_per_token": 2.2e-07,
"litellm_provider": "vertex_ai-qwen_models",
"max_input_tokens": 262144,
"max_output_tokens": 32768,
"max_tokens": 32768,
"mode": "chat",
"output_cost_per_token": 4e-06,
"output_cost_per_token": 1.8e-06,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supported_regions": [
"global"
@ -41738,7 +42063,8 @@
"supports_prompt_caching": true,
"supports_response_schema": false,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-3-mini": {
"cache_read_input_token_cost": 7.5e-08,
@ -41856,7 +42182,8 @@
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-4-fast-reasoning": {
"cache_read_input_token_cost": 5e-08,
@ -41925,7 +42252,8 @@
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-4-1-fast": {
"cache_read_input_token_cost": 5e-08,
@ -42253,7 +42581,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-code-fast-1": {
"cache_read_input_token_cost": 2e-07,
@ -42273,7 +42602,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-code-fast-1-0825": {
"cache_read_input_token_cost": 2e-07,
@ -42293,7 +42623,8 @@
"output_cost_per_token_above_200k_tokens": 4e-06,
"cache_read_input_token_cost_above_200k_tokens": 4e-07,
"supports_response_schema": true,
"supports_vision": true
"supports_vision": true,
"deprecation_date": "2026-05-15"
},
"xai/grok-vision-beta": {
"input_cost_per_image": 5e-06,
@ -46643,7 +46974,8 @@
"supports_function_calling": true,
"supports_parallel_function_calling": true,
"supports_system_messages": true,
"supports_tool_choice": true
"supports_tool_choice": true,
"deprecation_date": "2027-01-20"
},
"gpt-realtime-whisper": {
"input_cost_per_second": 0.0002833333333333333,
@ -48700,7 +49032,8 @@
"supports_sampling_params": false,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
"supports_xhigh_reasoning_effort": true,
"supports_native_structured_output": true
},
"claude-mythos-preview": {
"cache_creation_input_token_cost": 1.25e-05,
@ -48733,7 +49066,8 @@
"supports_sampling_params": false,
"supports_tool_choice": true,
"supports_vision": true,
"supports_xhigh_reasoning_effort": true
"supports_xhigh_reasoning_effort": true,
"supports_native_structured_output": true
},
"gemini/gemini-robotics-er-2-streaming-preview": {
"input_cost_per_audio_token": 2e-06,
@ -48850,6 +49184,22 @@
],
"supports_audio_output": true
},
"mistral/zai-glm-5-2": {
"cache_read_input_token_cost": 1.4e-07,
"input_cost_per_token": 1.4e-06,
"litellm_provider": "mistral",
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"max_tokens": 131072,
"mode": "chat",
"output_cost_per_token": 4.4e-06,
"source": "https://docs.mistral.ai/models/model-cards/zai-glm-5-2",
"supports_assistant_prefill": true,
"supports_function_calling": true,
"supports_prompt_caching": true,
"supports_response_schema": true,
"supports_tool_choice": true
},
"fallback_generalizations": {
"rules": [
{

View file

@ -1056,6 +1056,47 @@ def test_generic_cost_per_token_gpt56_terra_cache_costs_by_tier_and_context(
assert prompt_cost == pytest.approx(expected_prompt_cost)
@pytest.mark.parametrize("model", ["gpt-5.6-cyber", "daybreak-red-latest"])
@pytest.mark.parametrize(
"prompt_tokens,input_rate,cache_write_rate,cache_read_rate,output_rate",
[
(100000, 1.25e-5, 1.5625e-5, 1.25e-6, 7.5e-5),
(300000, 2.5e-5, 3.125e-5, 2.5e-6, 1.125e-4),
],
)
def test_generic_cost_per_token_gpt56_cyber(
model, prompt_tokens, input_rate, cache_write_rate, cache_read_rate, output_rate
):
os.environ["LITELLM_LOCAL_MODEL_COST_MAP"] = "True"
litellm.model_cost = litellm.get_model_cost_map(url="")
cached_tokens = 50000
cache_write_tokens = 40000
text_tokens = prompt_tokens - cached_tokens - cache_write_tokens
completion_tokens = 1000
usage = Usage(
prompt_tokens=prompt_tokens,
completion_tokens=completion_tokens,
total_tokens=prompt_tokens + completion_tokens,
prompt_tokens_details=PromptTokensDetailsWrapper(
cached_tokens=cached_tokens, cache_write_tokens=cache_write_tokens
),
)
prompt_cost, completion_cost = generic_cost_per_token(
model=model,
usage=usage,
custom_llm_provider="openai",
)
assert prompt_cost == pytest.approx(
text_tokens * input_rate
+ cached_tokens * cache_read_rate
+ cache_write_tokens * cache_write_rate
)
assert completion_cost == pytest.approx(completion_tokens * output_rate)
@pytest.mark.parametrize(
"model,input_cost,output_cost,cache_read_cost",
[

View file

@ -0,0 +1,150 @@
"""Pricing entry for ``gemini-3.1-flash-lite-image`` (Google's Nano Banana 2 Lite).
Google publishes: $0.25/1M input, $1.50/1M text output, and $30/1M image-output
tokens for the Lite image model (https://cloud.google.com/vertex-ai/generative-ai/pricing).
A 1K image is ~1120 output image tokens => ~$0.0336 / image.
Without this entry, ``completion_cost`` raises "model isn't mapped yet" and Vertex
generateContent pass-through cost tracking silently logs $0. These tests pin the
values in both the primary price map and the ``litellm/`` backup, and verify
``get_model_info`` / ``completion_cost`` surface them.
"""
import json
import os
import sys
sys.path.insert(0, os.path.abspath("../.."))
import litellm
from litellm import completion_cost
from litellm.types.utils import CompletionTokensDetailsWrapper, ModelResponse, Usage
VARIANTS = [
"gemini-3.1-flash-lite-image",
"gemini/gemini-3.1-flash-lite-image",
"vertex_ai/gemini-3.1-flash-lite-image",
]
EXPECTED = {
"input_cost_per_token": 2.5e-07,
"output_cost_per_token": 1.5e-06,
"output_cost_per_image_token": 3e-05,
"mode": "image_generation",
}
EXPECTED_CAPABILITIES = {
"max_output_tokens": 4096,
"max_tokens": 4096,
"supports_response_schema": False,
"supports_reasoning": True,
}
EXPECTED_PER_ROUTE = {
"gemini-3.1-flash-lite-image": {
"supports_prompt_caching": True,
"supports_function_calling": False,
},
"vertex_ai/gemini-3.1-flash-lite-image": {
"supports_prompt_caching": True,
"supports_function_calling": False,
},
"gemini/gemini-3.1-flash-lite-image": {
"supports_prompt_caching": False,
"supports_function_calling": True,
"input_cost_per_token_batches": 1.25e-07,
"output_cost_per_token_batches": 7.5e-07,
},
}
def _load_json(path: str) -> dict:
with open(path, encoding="utf-8") as f:
return json.load(f)
def _backup_path() -> str:
return os.path.join(
os.path.dirname(litellm.__file__),
"model_prices_and_context_window_backup.json",
)
def _main_path() -> str:
return os.path.join(
os.path.dirname(__file__), "..", "..", "model_prices_and_context_window.json"
)
class TestGeminiFlashLiteImagePricingData:
"""Both price maps must carry Google's published Nano Banana 2 Lite costs."""
def test_present_in_both_maps(self):
main = _load_json(_main_path())
backup = _load_json(_backup_path())
for key in VARIANTS:
for label, data in (("main", main), ("backup", backup)):
assert key in data, f"{key} missing from {label} JSON"
entry = data[key]
for field, value in EXPECTED.items():
assert entry[field] == value, f"{key} {field} in {label}: {entry.get(field)} != {value}"
def test_capabilities_match_model_cards(self):
main = _load_json(_main_path())
backup = _load_json(_backup_path())
for key in VARIANTS:
expected = {**EXPECTED_CAPABILITIES, **EXPECTED_PER_ROUTE[key]}
for label, data in (("main", main), ("backup", backup)):
entry = data[key]
for field, value in expected.items():
assert entry[field] == value, f"{key} {field} in {label}: {entry.get(field)} != {value}"
def test_grounding_fields_absent(self):
"""Grounding with Google Search is unsupported on Lite, so no search pricing."""
for path in (_main_path(), _backup_path()):
data = _load_json(path)
for key in VARIANTS:
for field in (
"supports_web_search",
"search_context_cost_per_query",
"web_search_billing_unit",
):
assert field not in data[key], f"{key} should not define {field}"
def test_image_output_pricing_consistent(self):
"""1120 image-output tokens * output_cost_per_image_token == output_cost_per_image."""
backup = _load_json(_backup_path())
entry = backup["gemini-3.1-flash-lite-image"]
assert round(1120 * entry["output_cost_per_image_token"], 6) == entry["output_cost_per_image"]
class TestGeminiFlashLiteImageModelInfo:
"""``get_model_info`` and ``completion_cost`` must report the new costs."""
def test_get_model_info_and_cost(self):
original = litellm.model_cost
try:
litellm.model_cost = _load_json(_backup_path())
info = litellm.get_model_info("gemini-3.1-flash-lite-image")
assert info["input_cost_per_token"] == EXPECTED["input_cost_per_token"]
assert info["output_cost_per_token"] == EXPECTED["output_cost_per_token"]
resp = ModelResponse()
resp.model = "gemini-3.1-flash-lite-image"
resp.usage = Usage(
prompt_tokens=7,
completion_tokens=1120,
total_tokens=1127,
completion_tokens_details=CompletionTokensDetailsWrapper(
image_tokens=1120, text_tokens=0
),
)
cost = completion_cost(
completion_response=resp,
model="gemini-3.1-flash-lite-image",
custom_llm_provider="vertex_ai",
)
expected_cost = 1120 * 3e-05 + 7 * 2.5e-07
assert abs(cost - expected_cost) < 1e-6, f"unexpected cost {cost}"
finally:
litellm.model_cost = original