From bef3585d82ac688fe50576fedcf5dd088c72165a Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Fri, 4 Sep 2026 10:03:43 -0700 Subject: [PATCH] feat(pricing): add GovCloud rows for every live but unpriced Bedrock model Every model bedrock list-foundation-models and list-inference-profiles report as live in us-gov-west-1 or us-gov-east-1 now has a priced row: Claude Fable 5.1 (profile plus in-region), Nemotron Nano 9B (profile plus in-region), Grok 4.6 (profile plus Mantle in both regions), the us-gov. Claude 3 Haiku profile in the east, Nova Lite, Micro and the Nova 2 multimodal embeddings in the west, and the Gemma 4 and gpt-oss Mantle SKUs the GovCloud offer files price. Offer-file rates are used where AWS publishes them; Claude rows carry the 1.2x GovCloud premium. --- ...odel_prices_and_context_window_backup.json | 374 ++++++++++++++++++ model_prices_and_context_window.json | 374 ++++++++++++++++++ .../test_bedrock_usgov_pricing.py | 157 +++++++- whitelisted_bedrock_models.txt | 8 +- 4 files changed, 909 insertions(+), 4 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 945653e09ef..4ed5e798679 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -11957,6 +11957,48 @@ "output_cost_per_token": 2.65e-06, "supports_pdf_input": true }, + "bedrock/us-gov-west-1/amazon.nova-2-multimodal-embeddings-v1:0": { + "litellm_provider": "bedrock", + "max_input_tokens": 8172, + "max_tokens": 8172, + "mode": "embedding", + "input_cost_per_token": 1.62e-07, + "input_cost_per_image": 7.2e-05, + "input_cost_per_video_per_second": 0.00084, + "input_cost_per_audio_per_second": 0.000168, + "output_cost_per_token": 0.0, + "output_vector_size": 3072, + "supports_embedding_image_input": true, + "supports_image_input": true, + "supports_video_input": true, + "supports_audio_input": true + }, + "bedrock/us-gov-west-1/amazon.nova-lite-v1:0": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 300000, + "max_output_tokens": 10000, + "max_tokens": 10000, + "mode": "chat", + "output_cost_per_token": 2.88e-07, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_vision": true + }, + "bedrock/us-gov-west-1/amazon.nova-micro-v1:0": { + "input_cost_per_token": 4.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 10000, + "max_tokens": 10000, + "mode": "chat", + "output_cost_per_token": 1.68e-07, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true + }, "bedrock/us-gov-west-1/amazon.nova-pro-v1:0": { "input_cost_per_token": 9.6e-07, "litellm_provider": "bedrock", @@ -42320,6 +42362,23 @@ "input_cost_per_token_batches": 1.65e-06, "output_cost_per_token_batches": 8.25e-06 }, + "us-gov.anthropic.claude-3-haiku-20240307-v1:0": { + "deprecation_date": "2026-09-10", + "input_cost_per_token": 3e-07, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 200000, + "max_output_tokens": 4096, + "max_tokens": 4096, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "cache_read_input_token_cost": 3e-08, + "cache_creation_input_token_cost": 3.75e-07 + }, "us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 4.5e-06, "cache_creation_input_token_cost_above_1hr": 7.2e-06, @@ -42445,6 +42504,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "us-gov.anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "us-gov.nvidia.nemotron-nano-3-30b": { "input_cost_per_token": 7.2e-08, "litellm_provider": "bedrock_converse", @@ -42470,6 +42562,16 @@ "supports_system_messages": true, "supports_vision": true }, + "us-gov.nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "us-gov.nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock_converse", @@ -42510,6 +42612,21 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "us-gov.xai.grok-4.6": { + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supports_function_calling": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "au.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 1.375e-06, "cache_creation_input_token_cost_above_1hr": 2.2e-06, @@ -58210,6 +58327,16 @@ "supports_system_messages": true, "supports_vision": true }, + "bedrock/us-gov-west-1/nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "bedrock/us-gov-west-1/nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock", @@ -58345,6 +58472,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "bedrock/us-gov-west-1/anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "bedrock/us-gov-east-1/nvidia.nemotron-nano-3-30b": { "input_cost_per_token": 7.2e-08, "litellm_provider": "bedrock", @@ -58370,6 +58530,16 @@ "supports_system_messages": true, "supports_vision": true }, + "bedrock/us-gov-east-1/nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "bedrock/us-gov-east-1/nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock", @@ -58505,6 +58675,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "bedrock/us-gov-east-1/anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "bedrock_mantle/us-gov-west-1/openai.gpt-5.6-terra": { "litellm_provider": "bedrock_mantle", "max_input_tokens": 1050000, @@ -58619,6 +58822,120 @@ "output_cost_per_token": 3e-06, "cache_read_input_token_cost": 2.4e-07 }, + "bedrock_mantle/us-gov-west-1/xai.grok-4.6": { + "use_openai_responses_path": true, + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-e2b": { + "input_cost_per_token": 4.8e-08, + "output_cost_per_token": 9.6e-08, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-26b-a4b": { + "input_cost_per_token": 1.56e-07, + "output_cost_per_token": 4.8e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-31b": { + "input_cost_per_token": 1.68e-07, + "output_cost_per_token": 4.8e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-20b": { + "input_cost_per_token": 8.4e-08, + "output_cost_per_token": 3.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-120b": { + "input_cost_per_token": 1.8e-07, + "output_cost_per_token": 7.2e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, "bedrock_mantle/us-gov-east-1/openai.gpt-5.4": { "litellm_provider": "bedrock_mantle", "max_input_tokens": 1050000, @@ -58646,6 +58963,63 @@ "cache_read_input_token_cost": 3.3e-07, "output_cost_per_token": 1.98e-05 }, + "bedrock_mantle/us-gov-east-1/xai.grok-4.6": { + "use_openai_responses_path": true, + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-20b": { + "input_cost_per_token": 8.4e-08, + "output_cost_per_token": 3.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-120b": { + "input_cost_per_token": 1.8e-07, + "output_cost_per_token": 7.2e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, "azure/us-gov/gpt-5.1": { "cache_read_input_token_cost": 1.71875e-07, "default_reasoning_effort": "none", diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 945653e09ef..4ed5e798679 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -11957,6 +11957,48 @@ "output_cost_per_token": 2.65e-06, "supports_pdf_input": true }, + "bedrock/us-gov-west-1/amazon.nova-2-multimodal-embeddings-v1:0": { + "litellm_provider": "bedrock", + "max_input_tokens": 8172, + "max_tokens": 8172, + "mode": "embedding", + "input_cost_per_token": 1.62e-07, + "input_cost_per_image": 7.2e-05, + "input_cost_per_video_per_second": 0.00084, + "input_cost_per_audio_per_second": 0.000168, + "output_cost_per_token": 0.0, + "output_vector_size": 3072, + "supports_embedding_image_input": true, + "supports_image_input": true, + "supports_video_input": true, + "supports_audio_input": true + }, + "bedrock/us-gov-west-1/amazon.nova-lite-v1:0": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 300000, + "max_output_tokens": 10000, + "max_tokens": 10000, + "mode": "chat", + "output_cost_per_token": 2.88e-07, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_vision": true + }, + "bedrock/us-gov-west-1/amazon.nova-micro-v1:0": { + "input_cost_per_token": 4.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 10000, + "max_tokens": 10000, + "mode": "chat", + "output_cost_per_token": 1.68e-07, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true + }, "bedrock/us-gov-west-1/amazon.nova-pro-v1:0": { "input_cost_per_token": 9.6e-07, "litellm_provider": "bedrock", @@ -42320,6 +42362,23 @@ "input_cost_per_token_batches": 1.65e-06, "output_cost_per_token_batches": 8.25e-06 }, + "us-gov.anthropic.claude-3-haiku-20240307-v1:0": { + "deprecation_date": "2026-09-10", + "input_cost_per_token": 3e-07, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 200000, + "max_output_tokens": 4096, + "max_tokens": 4096, + "mode": "chat", + "output_cost_per_token": 1.5e-06, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "cache_read_input_token_cost": 3e-08, + "cache_creation_input_token_cost": 3.75e-07 + }, "us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 4.5e-06, "cache_creation_input_token_cost_above_1hr": 7.2e-06, @@ -42445,6 +42504,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "us-gov.anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "us-gov.nvidia.nemotron-nano-3-30b": { "input_cost_per_token": 7.2e-08, "litellm_provider": "bedrock_converse", @@ -42470,6 +42562,16 @@ "supports_system_messages": true, "supports_vision": true }, + "us-gov.nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "us-gov.nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock_converse", @@ -42510,6 +42612,21 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "us-gov.xai.grok-4.6": { + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supports_function_calling": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "au.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 1.375e-06, "cache_creation_input_token_cost_above_1hr": 2.2e-06, @@ -58210,6 +58327,16 @@ "supports_system_messages": true, "supports_vision": true }, + "bedrock/us-gov-west-1/nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "bedrock/us-gov-west-1/nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock", @@ -58345,6 +58472,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "bedrock/us-gov-west-1/anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "bedrock/us-gov-east-1/nvidia.nemotron-nano-3-30b": { "input_cost_per_token": 7.2e-08, "litellm_provider": "bedrock", @@ -58370,6 +58530,16 @@ "supports_system_messages": true, "supports_vision": true }, + "bedrock/us-gov-east-1/nvidia.nemotron-nano-9b-v2": { + "input_cost_per_token": 7.2e-08, + "litellm_provider": "bedrock", + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.76e-07, + "supports_system_messages": true + }, "bedrock/us-gov-east-1/nvidia.nemotron-super-3-120b": { "input_cost_per_token": 1.8e-07, "litellm_provider": "bedrock", @@ -58505,6 +58675,39 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "bedrock/us-gov-east-1/anthropic.claude-fable-5-1": { + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 1.2e-05, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-05, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 + }, "bedrock_mantle/us-gov-west-1/openai.gpt-5.6-terra": { "litellm_provider": "bedrock_mantle", "max_input_tokens": 1050000, @@ -58619,6 +58822,120 @@ "output_cost_per_token": 3e-06, "cache_read_input_token_cost": 2.4e-07 }, + "bedrock_mantle/us-gov-west-1/xai.grok-4.6": { + "use_openai_responses_path": true, + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-e2b": { + "input_cost_per_token": 4.8e-08, + "output_cost_per_token": 9.6e-08, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-26b-a4b": { + "input_cost_per_token": 1.56e-07, + "output_cost_per_token": 4.8e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/google.gemma-4-31b": { + "input_cost_per_token": 1.68e-07, + "output_cost_per_token": 4.8e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-20b": { + "input_cost_per_token": 8.4e-08, + "output_cost_per_token": 3.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-120b": { + "input_cost_per_token": 1.8e-07, + "output_cost_per_token": 7.2e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, "bedrock_mantle/us-gov-east-1/openai.gpt-5.4": { "litellm_provider": "bedrock_mantle", "max_input_tokens": 1050000, @@ -58646,6 +58963,63 @@ "cache_read_input_token_cost": 3.3e-07, "output_cost_per_token": 1.98e-05 }, + "bedrock_mantle/us-gov-east-1/xai.grok-4.6": { + "use_openai_responses_path": true, + "input_cost_per_token": 2.64e-06, + "output_cost_per_token": 7.92e-06, + "cache_read_input_token_cost": 6.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-20b": { + "input_cost_per_token": 8.4e-08, + "output_cost_per_token": 3.6e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-120b": { + "input_cost_per_token": 1.8e-07, + "output_cost_per_token": 7.2e-07, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, "azure/us-gov/gpt-5.1": { "cache_read_input_token_cost": 1.71875e-07, "default_reasoning_effort": "none", diff --git a/tests/test_litellm/test_bedrock_usgov_pricing.py b/tests/test_litellm/test_bedrock_usgov_pricing.py index 45c867db70b..3576834dd27 100644 --- a/tests/test_litellm/test_bedrock_usgov_pricing.py +++ b/tests/test_litellm/test_bedrock_usgov_pricing.py @@ -139,6 +139,13 @@ CLAUDE_GOV_EXPECTED = { "cache_creation_input_token_cost_above_1hr": 1.2e-05, "cache_read_input_token_cost": 6e-07, }, + "anthropic.claude-fable-5-1": { + "input_cost_per_token": 1.2e-05, + "output_cost_per_token": 6e-05, + "cache_creation_input_token_cost": 1.5e-05, + "cache_creation_input_token_cost_above_1hr": 2.4e-05, + "cache_read_input_token_cost": 3e-07, + }, } @@ -152,9 +159,11 @@ USGOV_CLAUDE_KEY_TEMPLATES = { @pytest.mark.parametrize("base_key", CLAUDE_GOV_EXPECTED) @pytest.mark.parametrize("key_template,expected_provider", USGOV_CLAUDE_KEY_TEMPLATES.items()) def test_usgov_claude_pricing(model_data, key_template, expected_provider, base_key): - """Sonnet 5, Opus 4.8, and Opus 5 gov entries, both in-region keys and the - us-gov. geo inference profile the model cards list for GovCloud, must match - the rates AWS publishes in the GovCloud offer file (1.2x global). + """Sonnet 5, Opus 4.8, Opus 5, and Fable 5.1 gov entries, both in-region keys + and the us-gov. geo inference profile the model cards list for GovCloud, must + carry the 1.2x GovCloud premium over the global anthropic.* rates. No public + AWS source (offer files, pricing page) lists Claude GovCloud rows; the premium + is the one AWS quotes for Opus 4.8 in GovCloud ($6/$30 per million). """ gov_key = key_template.format(base_key=base_key) assert gov_key in model_data, f"Missing model entry: {gov_key}" @@ -169,6 +178,7 @@ def test_usgov_claude_pricing(model_data, key_template, expected_provider, base_ CONVERSE_GOV_EXPECTED = { "nvidia.nemotron-nano-3-30b": (7.2e-08, 2.88e-07), + "nvidia.nemotron-nano-9b-v2": (7.2e-08, 2.76e-07), "nvidia.nemotron-nano-12b-v2": (2.4e-07, 7.2e-07), "nvidia.nemotron-super-3-120b": (1.8e-07, 7.8e-07), "openai.gpt-oss-20b-1:0": (8.4e-08, 3.6e-07), @@ -268,6 +278,147 @@ def test_usgov_mantle_grok_4_3_west_only(model_data): assert "bedrock_mantle/us-gov-east-1/xai.grok-4.3" not in model_data +def test_usgov_east_haiku_profile_mirrors_in_region_row(model_data): + """us-gov-east-1 serves claude-3-haiku through the us-gov. inference profile + only, so the profile row must bill exactly like the in-region gov row. + """ + profile = model_data["us-gov.anthropic.claude-3-haiku-20240307-v1:0"] + in_region = model_data["bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0"] + assert profile["litellm_provider"] == "bedrock_converse" + assert {k: v for k, v in profile.items() if k != "litellm_provider"} == { + k: v for k, v in in_region.items() if k != "litellm_provider" + } + + +GROK_4_6_GOV_KEYS = { + "us-gov.xai.grok-4.6": ("us.xai.grok-4.6", "bedrock_converse"), + "bedrock_mantle/us-gov-west-1/xai.grok-4.6": ("bedrock_mantle/xai.grok-4.6", "bedrock_mantle"), + "bedrock_mantle/us-gov-east-1/xai.grok-4.6": ("bedrock_mantle/xai.grok-4.6", "bedrock_mantle"), +} + + +@pytest.mark.parametrize("gov_key", GROK_4_6_GOV_KEYS) +def test_usgov_grok_4_6_pricing(model_data, gov_key): + """Both GovCloud regions serve grok-4.6 through the us-gov. profile only, and + both offer files price its standard SKU at 1.2x the commercial US rate. + """ + base_key, expected_provider = GROK_4_6_GOV_KEYS[gov_key] + assert gov_key in model_data, f"Missing model entry: {gov_key}" + info = model_data[gov_key] + assert info["litellm_provider"] == expected_provider + assert info["input_cost_per_token"] == 2.64e-06 + assert info["output_cost_per_token"] == 7.92e-06 + assert info["cache_read_input_token_cost"] == 6.6e-07 + for field in ("input_cost_per_token", "output_cost_per_token", "cache_read_input_token_cost"): + assert abs(info[field] / model_data[base_key][field] - 1.2) < 1e-9 + + +NOVA_GOV_WEST_EXPECTED = { + "amazon.nova-lite-v1:0": (7.2e-08, 2.88e-07), + "amazon.nova-micro-v1:0": (4.2e-08, 1.68e-07), +} + + +@pytest.mark.parametrize("base_key", NOVA_GOV_WEST_EXPECTED) +def test_usgov_west_nova_lite_micro_pricing(model_data, base_key): + """Nova Lite and Micro are on-demand in us-gov-west-1 only; the offer file + prices them at 1.2x commercial, like the Nova Pro row that was already there. + """ + gov_key = f"bedrock/us-gov-west-1/{base_key}" + assert gov_key in model_data, f"Missing model entry: {gov_key}" + info = model_data[gov_key] + expected_input, expected_output = NOVA_GOV_WEST_EXPECTED[base_key] + assert info["litellm_provider"] == "bedrock" + assert info["input_cost_per_token"] == expected_input + assert info["output_cost_per_token"] == expected_output + assert abs(info["input_cost_per_token"] / model_data[base_key]["input_cost_per_token"] - 1.2) < 1e-9 + assert abs(info["output_cost_per_token"] / model_data[base_key]["output_cost_per_token"] - 1.2) < 1e-9 + assert f"bedrock/us-gov-east-1/{base_key}" not in model_data + + +def test_usgov_west_nova_2_multimodal_embeddings_pricing(model_data): + """Every meter of the multimodal embedding model (tokens, images, audio and + video seconds) carries the 1.2x uplift the us-gov-west-1 offer file lists. + """ + gov_key = "bedrock/us-gov-west-1/amazon.nova-2-multimodal-embeddings-v1:0" + assert gov_key in model_data, f"Missing model entry: {gov_key}" + info = model_data[gov_key] + assert info["litellm_provider"] == "bedrock" + assert info["mode"] == "embedding" + assert info["input_cost_per_token"] == 1.62e-07 + assert info["input_cost_per_image"] == 7.2e-05 + assert info["input_cost_per_audio_per_second"] == 0.000168 + assert info["input_cost_per_video_per_second"] == 0.00084 + assert "bedrock/us-gov-east-1/amazon.nova-2-multimodal-embeddings-v1:0" not in model_data + + +MANTLE_GOV_FLAT_EXPECTED = { + "google.gemma-4-e2b": (4.8e-08, 9.6e-08, ("us-gov-west-1",)), + "google.gemma-4-26b-a4b": (1.56e-07, 4.8e-07, ("us-gov-west-1",)), + "google.gemma-4-31b": (1.68e-07, 4.8e-07, ("us-gov-west-1",)), + "openai.gpt-oss-20b": (8.4e-08, 3.6e-07, ("us-gov-west-1", "us-gov-east-1")), + "openai.gpt-oss-120b": (1.8e-07, 7.2e-07, ("us-gov-west-1", "us-gov-east-1")), +} + + +@pytest.mark.parametrize("model", MANTLE_GOV_FLAT_EXPECTED) +def test_usgov_mantle_gemma_and_gpt_oss_pricing(model_data, model): + """Gemma 4 is priced in the us-gov-west-1 offer file only and gpt-oss in both; + each Mantle gov row carries the offer file's standard SKU, and no row exists + for a region whose offer file has no SKU. + """ + expected_input, expected_output, regions = MANTLE_GOV_FLAT_EXPECTED[model] + for region in ("us-gov-west-1", "us-gov-east-1"): + gov_key = f"bedrock_mantle/{region}/{model}" + if region not in regions: + assert gov_key not in model_data + continue + assert gov_key in model_data, f"Missing model entry: {gov_key}" + info = model_data[gov_key] + assert info["litellm_provider"] == "bedrock_mantle" + assert info["input_cost_per_token"] == expected_input + assert info["output_cost_per_token"] == expected_output + + +GOV_ROW_SOURCES = { + "us-gov.anthropic.claude-fable-5-1": "anthropic.claude-fable-5-1", + "bedrock/us-gov-west-1/anthropic.claude-fable-5-1": "anthropic.claude-fable-5-1", + "bedrock/us-gov-east-1/anthropic.claude-fable-5-1": "anthropic.claude-fable-5-1", + "us-gov.nvidia.nemotron-nano-9b-v2": "nvidia.nemotron-nano-9b-v2", + "bedrock/us-gov-west-1/nvidia.nemotron-nano-9b-v2": "nvidia.nemotron-nano-9b-v2", + "bedrock/us-gov-east-1/nvidia.nemotron-nano-9b-v2": "nvidia.nemotron-nano-9b-v2", + "us-gov.xai.grok-4.6": "us.xai.grok-4.6", + "bedrock_mantle/us-gov-west-1/xai.grok-4.6": "bedrock_mantle/xai.grok-4.6", + "bedrock_mantle/us-gov-east-1/xai.grok-4.6": "bedrock_mantle/xai.grok-4.6", + "bedrock/us-gov-west-1/amazon.nova-2-multimodal-embeddings-v1:0": "amazon.nova-2-multimodal-embeddings-v1:0", + "bedrock/us-gov-west-1/amazon.nova-lite-v1:0": "amazon.nova-lite-v1:0", + "bedrock/us-gov-west-1/amazon.nova-micro-v1:0": "amazon.nova-micro-v1:0", + "bedrock_mantle/us-gov-west-1/google.gemma-4-e2b": "bedrock_mantle/google.gemma-4-e2b", + "bedrock_mantle/us-gov-west-1/google.gemma-4-26b-a4b": "bedrock_mantle/google.gemma-4-26b-a4b", + "bedrock_mantle/us-gov-west-1/google.gemma-4-31b": "bedrock_mantle/google.gemma-4-31b", + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-20b": "bedrock_mantle/openai.gpt-oss-20b", + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-20b": "bedrock_mantle/openai.gpt-oss-20b", + "bedrock_mantle/us-gov-west-1/openai.gpt-oss-120b": "bedrock_mantle/openai.gpt-oss-120b", + "bedrock_mantle/us-gov-east-1/openai.gpt-oss-120b": "bedrock_mantle/openai.gpt-oss-120b", +} + + +def _non_pricing_fields(info): + return {k: v for k, v in info.items() if "cost" not in k and k not in ("litellm_provider", "source")} + + +@pytest.mark.parametrize("gov_key", GOV_ROW_SOURCES) +def test_usgov_rows_keep_commercial_limits_and_capabilities(model_data, gov_key): + """A gov row differs from the commercial row it mirrors only in price and + provider: context limits, mode, and capability flags stay identical, so a + hand-copied row cannot silently drop tool calling or shrink the context window. + """ + gov = model_data[gov_key] + assert _non_pricing_fields(gov) == _non_pricing_fields(model_data[GOV_ROW_SOURCES[gov_key]]) + assert "search_context_cost_per_query" not in gov + assert "source" not in gov + + AZURE_GOV_EXPECTED = { "azure/us-gov/gpt-5.1": { "input_cost_per_token": 1.71875e-06, diff --git a/whitelisted_bedrock_models.txt b/whitelisted_bedrock_models.txt index 1dc817ffe48..578edddec8d 100644 --- a/whitelisted_bedrock_models.txt +++ b/whitelisted_bedrock_models.txt @@ -138,6 +138,8 @@ bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0 bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0 bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0 bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0 +bedrock/us-gov-west-1/amazon.nova-lite-v1:0 +bedrock/us-gov-west-1/amazon.nova-micro-v1:0 bedrock/us-gov-west-1/amazon.nova-pro-v1:0 bedrock/us-gov-west-1/amazon.titan-text-express-v1 bedrock/us-gov-west-1/amazon.titan-text-lite-v1 @@ -219,17 +221,21 @@ bedrock/us-gov-east-1/anthropic.claude-haiku-4-5-20251001-v1:0 bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0 bedrock/us-gov-west-1/nvidia.nemotron-nano-3-30b bedrock/us-gov-west-1/nvidia.nemotron-nano-12b-v2 +bedrock/us-gov-west-1/nvidia.nemotron-nano-9b-v2 bedrock/us-gov-west-1/nvidia.nemotron-super-3-120b bedrock/us-gov-west-1/openai.gpt-oss-20b-1:0 bedrock/us-gov-west-1/openai.gpt-oss-120b-1:0 bedrock/us-gov-west-1/anthropic.claude-sonnet-5 bedrock/us-gov-west-1/anthropic.claude-opus-4-8 +bedrock/us-gov-west-1/anthropic.claude-opus-5 +bedrock/us-gov-west-1/anthropic.claude-fable-5-1 bedrock/us-gov-east-1/nvidia.nemotron-nano-3-30b bedrock/us-gov-east-1/nvidia.nemotron-nano-12b-v2 +bedrock/us-gov-east-1/nvidia.nemotron-nano-9b-v2 bedrock/us-gov-east-1/nvidia.nemotron-super-3-120b bedrock/us-gov-east-1/openai.gpt-oss-20b-1:0 bedrock/us-gov-east-1/openai.gpt-oss-120b-1:0 bedrock/us-gov-east-1/anthropic.claude-sonnet-5 bedrock/us-gov-east-1/anthropic.claude-opus-4-8 -bedrock/us-gov-west-1/anthropic.claude-opus-5 bedrock/us-gov-east-1/anthropic.claude-opus-5 +bedrock/us-gov-east-1/anthropic.claude-fable-5-1