mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-12 08:42:18 +00:00
feat(openai): bill gov.api.openai.com FedRAMP endpoint with 1.1x uplift (#49951)
* feat(openai): bill gov.api.openai.com FedRAMP endpoint with 1.1x uplift * chore(openai): trim FedRAMP uplift diff * refactor(openai): bill the FedRAMP endpoint through its own fedramp_uplift_multiplier key * fix(ui): regenerate fedramp_uplift_multiplier doc comment in schema.d.ts * style: ruff format utils.py and reorder fedramp_uplift_multiplier in schema.d.ts * fix(openai): infer data_residency from OPENAI_BASE_URL and litellm.api_base when api_base is unset * test(cost): cover get_fedramp_uplift_multiplier fallback paths * fix(cost): apply fedramp_uplift_multiplier in batch_cost_calculator * fix(openai): derive data_residency from a supplied client's base_url * test: type the supplied-client data_residency test params --------- Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
83be155b65
commit
df78b16941
17 changed files with 445 additions and 24 deletions
|
|
@ -50,6 +50,7 @@ from litellm.litellm_core_utils.llm_cost_calc.utils import (
|
|||
get_batch_cost_rates,
|
||||
get_billable_input_tokens,
|
||||
get_cost_per_unit,
|
||||
get_fedramp_uplift_multiplier,
|
||||
get_modality_token_cost_key,
|
||||
get_regional_uplift_multiplier,
|
||||
get_service_tier_cost_key,
|
||||
|
|
@ -3311,7 +3312,9 @@ def batch_cost_calculator(
|
|||
text_tokens: Final = usage.completion_tokens - image_tokens
|
||||
total_completion_cost = text_tokens * text_rate + image_tokens * image_rate
|
||||
|
||||
uplift: Final = get_regional_uplift_multiplier(model_info, data_residency)
|
||||
uplift: Final = get_regional_uplift_multiplier(model_info, data_residency) * get_fedramp_uplift_multiplier(
|
||||
model_info, data_residency
|
||||
)
|
||||
if uplift != 1.0:
|
||||
total_prompt_cost *= uplift
|
||||
total_completion_cost *= uplift
|
||||
|
|
|
|||
|
|
@ -1441,6 +1441,29 @@ def get_regional_uplift_multiplier(model_info: ModelInfo, data_residency: str |
|
|||
_get_regional_uplift_multiplier = get_regional_uplift_multiplier
|
||||
|
||||
|
||||
def get_fedramp_uplift_multiplier(model_info: ModelInfo, data_residency: str | None) -> float:
|
||||
"""
|
||||
Resolve the per-model uplift multiplier for the OpenAI FedRAMP endpoint.
|
||||
|
||||
OpenAI applies a flat percentage uplift (e.g. +10%) on all token costs for
|
||||
requests served from gov.api.openai.com. The multiplier is stored on the
|
||||
model entry as ``fedramp_uplift_multiplier`` (e.g. 1.10).
|
||||
|
||||
Returns 1.0 (no uplift) unless ``data_residency`` is ``"fedramp"`` and the
|
||||
model has a multiplier configured.
|
||||
"""
|
||||
if data_residency is None or data_residency.lower() != DataResidency.FEDRAMP.value:
|
||||
return 1.0
|
||||
multiplier: Final = model_info.get("fedramp_uplift_multiplier")
|
||||
if multiplier is None:
|
||||
return 1.0
|
||||
try:
|
||||
return float(multiplier)
|
||||
except (TypeError, ValueError):
|
||||
verbose_logger.exception("Invalid fedramp_uplift_multiplier for model; defaulting to 1.0")
|
||||
return 1.0
|
||||
|
||||
|
||||
def get_vertex_regional_endpoint_uplift(model_info: ModelInfo, vertex_location: str | None) -> float:
|
||||
"""
|
||||
Resolve the per-model uplift multiplier for Vertex AI non-global (regional and
|
||||
|
|
@ -1550,8 +1573,8 @@ def generic_cost_per_token(
|
|||
Input:
|
||||
- model: str, the model name without provider prefix
|
||||
- usage: LiteLLM Usage block, containing anthropic caching information
|
||||
- data_residency: optional OpenAI data-residency region (e.g. "eu", "us"),
|
||||
used to apply the per-model regional-processing uplift multiplier.
|
||||
- data_residency: optional OpenAI data-residency region (e.g. "eu", "us") or
|
||||
"fedramp", used to apply the per-model regional-processing or FedRAMP uplift multiplier.
|
||||
- vertex_location: optional Vertex AI location the request was served from
|
||||
(e.g. "us-east5", "global"), used to apply the per-model
|
||||
regional-endpoint uplift multiplier when non-global.
|
||||
|
|
@ -1728,10 +1751,9 @@ def generic_cost_per_token(
|
|||
)
|
||||
completion_cost += float(video_tokens) * _output_cost_per_video_token
|
||||
|
||||
## REGIONAL DATA-RESIDENCY UPLIFT
|
||||
# Applied as a flat multiplier across all token costs for the request
|
||||
# when the upstream is a regionalized OpenAI host (eu./us.api.openai.com).
|
||||
uplift: Final = get_regional_uplift_multiplier(resolved_model_info, data_residency)
|
||||
uplift: Final = get_regional_uplift_multiplier(resolved_model_info, data_residency) * get_fedramp_uplift_multiplier(
|
||||
resolved_model_info, data_residency
|
||||
)
|
||||
if uplift != 1.0:
|
||||
prompt_cost *= uplift
|
||||
completion_cost *= uplift
|
||||
|
|
@ -1874,6 +1896,7 @@ def _cost_map_billed_rates(
|
|||
)
|
||||
multiplier: Final = (
|
||||
get_regional_uplift_multiplier(model_info, data_residency)
|
||||
* get_fedramp_uplift_multiplier(model_info, data_residency)
|
||||
* get_vertex_regional_endpoint_uplift(model_info, vertex_location)
|
||||
* get_provider_specific_geo_multiplier(model_info=model_info, usage=usage)
|
||||
* get_provider_specific_speed_multiplier(model_info=model_info, usage=usage)
|
||||
|
|
@ -2059,8 +2082,10 @@ def calculate_prompt_caching_savings(
|
|||
{ttl: rate - prompt_base_cost for ttl, rate in base_costs.cache_creation_rates_by_ttl.items()}
|
||||
),
|
||||
)
|
||||
uplift: Final = get_regional_uplift_multiplier(model_info, data_residency) * get_vertex_regional_endpoint_uplift(
|
||||
model_info, vertex_location
|
||||
uplift: Final = (
|
||||
get_regional_uplift_multiplier(model_info, data_residency)
|
||||
* get_fedramp_uplift_multiplier(model_info, data_residency)
|
||||
* get_vertex_regional_endpoint_uplift(model_info, vertex_location)
|
||||
)
|
||||
return (read_discount - write_premium) * uplift
|
||||
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@ def cost_per_token(
|
|||
Input:
|
||||
- model: str, the model name without provider prefix
|
||||
- usage: LiteLLM Usage block, containing anthropic caching information
|
||||
- data_residency: optional OpenAI data-residency region (e.g. "eu", "us"),
|
||||
inferred from api_base. Applies the model's regional-processing
|
||||
uplift multiplier when set.
|
||||
- data_residency: optional OpenAI data-residency mode (e.g. "eu", "us", "fedramp"),
|
||||
inferred from api_base, including gov.api.openai.com. Applies the
|
||||
model's regional-processing uplift multiplier when set.
|
||||
|
||||
Returns:
|
||||
Tuple[float, float] - prompt_cost_in_usd, completion_cost_in_usd
|
||||
|
|
|
|||
|
|
@ -7,9 +7,12 @@ enabled and rejects requests sent to the wrong host, so the api_base hostname
|
|||
is the authoritative signal of which region a request was processed in.
|
||||
"""
|
||||
|
||||
import os
|
||||
from typing import Final
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import litellm
|
||||
|
||||
# Mapping of OpenAI regional hostnames to the corresponding data-residency
|
||||
# value used by the cost calculator. See
|
||||
# https://developers.openai.com/api/docs/pricing for the regional-processing
|
||||
|
|
@ -17,6 +20,7 @@ from urllib.parse import urlparse
|
|||
_OPENAI_REGIONAL_HOSTS: Final[dict[str, str]] = {
|
||||
"eu.api.openai.com": "eu",
|
||||
"us.api.openai.com": "us",
|
||||
"gov.api.openai.com": "fedramp",
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -25,13 +29,22 @@ def infer_openai_data_residency(custom_llm_provider: str | None, api_base: str |
|
|||
Derive the OpenAI data-residency region from an api_base URL.
|
||||
|
||||
Returns ``"eu"`` for the EU regional host, ``"us"`` for the US regional
|
||||
host, and ``None`` for the default global host, any non-OpenAI provider,
|
||||
or any non-OpenAI URL.
|
||||
host, ``"fedramp"`` for ``gov.api.openai.com``, and ``None`` for the
|
||||
default global host, any non-OpenAI provider, or any non-OpenAI URL.
|
||||
|
||||
When ``api_base`` is unset, falls back to the same defaults the OpenAI
|
||||
handler uses (``litellm.api_base``, ``OPENAI_BASE_URL``, ``OPENAI_API_BASE``)
|
||||
so env-configured regional endpoints are billed with their uplift.
|
||||
"""
|
||||
if custom_llm_provider != "openai" or not api_base:
|
||||
if custom_llm_provider != "openai":
|
||||
return None
|
||||
resolved_api_base: Final = (
|
||||
api_base or litellm.api_base or os.getenv("OPENAI_BASE_URL") or os.getenv("OPENAI_API_BASE")
|
||||
)
|
||||
if not resolved_api_base:
|
||||
return None
|
||||
try:
|
||||
host: Final = urlparse(api_base).hostname
|
||||
host: Final = urlparse(resolved_api_base).hostname
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
if not host:
|
||||
|
|
|
|||
|
|
@ -6111,6 +6111,11 @@ def completion(
|
|||
messages if readable_messages is None else list(readable_messages)
|
||||
)
|
||||
|
||||
supplied_client_api_base: Final = (
|
||||
str(client.base_url)
|
||||
if custom_llm_provider == "openai" and isinstance(client, openai.OpenAI | openai.AsyncOpenAI)
|
||||
else None
|
||||
)
|
||||
# For logging - save the values of the litellm-specific params passed in
|
||||
requested_litellm_params: Final = get_litellm_params(
|
||||
acompletion=acompletion,
|
||||
|
|
@ -6119,7 +6124,7 @@ def completion(
|
|||
logger_fn=logger_fn,
|
||||
verbose=verbose,
|
||||
custom_llm_provider=custom_llm_provider,
|
||||
api_base=api_base,
|
||||
api_base=supplied_client_api_base or api_base,
|
||||
litellm_call_id=kwargs.get("litellm_call_id", None),
|
||||
model_alias_map=litellm.model_alias_map,
|
||||
completion_call_id=id,
|
||||
|
|
|
|||
|
|
@ -17799,6 +17799,7 @@
|
|||
"max_output_tokens": 1024,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
],
|
||||
|
|
@ -17830,6 +17831,7 @@
|
|||
"max_output_tokens": 1024,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
],
|
||||
|
|
@ -29263,6 +29265,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -29278,6 +29281,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29291,6 +29295,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29304,6 +29309,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29317,6 +29323,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "OpenAI needs to add pricing for this ft model, will be updated when added by OpenAI. Defaulting to base model pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -29335,6 +29342,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.25e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29357,6 +29365,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_pdf_input": true,
|
||||
|
|
@ -29378,6 +29387,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29401,6 +29411,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29423,6 +29434,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3.2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.6e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29445,6 +29457,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29467,6 +29480,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35122,6 +35136,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
|
|
@ -35139,6 +35154,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 7.5e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35158,6 +35174,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35175,6 +35192,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_prompt_caching": true,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
|
|
@ -35209,6 +35227,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -35225,6 +35244,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35242,6 +35262,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
|
|
@ -35258,6 +35279,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_pdf_input": true,
|
||||
|
|
@ -35277,6 +35299,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.5e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35301,6 +35324,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35346,6 +35370,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35391,6 +35416,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8e-07,
|
||||
"output_cost_per_token_priority": 2.8e-06,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35436,6 +35462,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-06,
|
||||
"output_cost_per_token_batches": 8e-07,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35481,6 +35508,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_priority": 8e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35520,6 +35548,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 8e-07,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35559,6 +35588,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35583,6 +35613,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 7.5e-06,
|
||||
"output_cost_per_token_priority": 2.625e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35608,6 +35639,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35634,6 +35666,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35926,6 +35959,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"output_cost_per_token_priority": 1e-06,
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35957,6 +35991,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1e-06,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -36021,6 +36056,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36049,6 +36085,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36136,6 +36173,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36164,6 +36202,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36786,6 +36825,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_flex": 5e-06,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
|
|
@ -36840,6 +36880,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36874,6 +36915,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -36934,6 +36976,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex-mini",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36966,6 +37009,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex-max",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36999,6 +37043,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -37032,6 +37077,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -37069,6 +37115,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37127,6 +37174,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37186,6 +37234,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.2-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -37219,6 +37268,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.2-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -37253,6 +37303,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37309,6 +37360,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.000168,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8.4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37357,6 +37409,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.000168,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8.4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37463,6 +37516,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37556,6 +37610,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37657,6 +37712,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37749,6 +37805,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37839,6 +37896,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37931,6 +37989,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38022,6 +38081,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38070,6 +38130,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38108,6 +38169,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38146,6 +38208,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -38183,6 +38246,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 3e-05,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38221,6 +38285,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 3e-05,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -38254,6 +38319,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"reasoning_effort_levels": [
|
||||
"medium"
|
||||
],
|
||||
|
|
@ -38322,6 +38388,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38392,6 +38459,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38454,6 +38522,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38513,6 +38582,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38580,6 +38650,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -38645,6 +38716,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -38702,6 +38774,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38762,6 +38835,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38824,6 +38898,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38886,6 +38961,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38945,6 +39021,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -39009,6 +39086,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -39054,6 +39132,7 @@
|
|||
"max_output_tokens": 272000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.00012,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39105,6 +39184,7 @@
|
|||
"max_output_tokens": 272000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.00012,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39162,6 +39242,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_flex": 5e-06,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
|
|
@ -39216,6 +39297,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -39253,6 +39335,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -39285,6 +39368,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39339,6 +39423,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.3-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -39378,6 +39463,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1e-06,
|
||||
"output_cost_per_token_flex": 1e-06,
|
||||
"output_cost_per_token_priority": 3.6e-06,
|
||||
|
|
@ -39438,6 +39524,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1e-06,
|
||||
"output_cost_per_token_flex": 1e-06,
|
||||
"output_cost_per_token_priority": 3.6e-06,
|
||||
|
|
@ -39496,6 +39583,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_flex": 2e-07,
|
||||
"reasoning_contexts": [
|
||||
|
|
@ -39553,6 +39641,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_flex": 2e-07,
|
||||
"reasoning_contexts": [
|
||||
|
|
@ -45472,6 +45561,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45496,6 +45586,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45519,6 +45610,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.0006,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 0.0003,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -45554,6 +45646,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.0006,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 0.0003,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -45593,6 +45686,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_flex": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
|
|
@ -45640,6 +45734,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o3-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45676,6 +45771,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o3-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45714,6 +45810,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_flex": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
|
|
@ -45765,6 +45862,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45787,6 +45885,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45808,6 +45907,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -45854,6 +45954,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -45905,6 +46006,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"output_cost_per_token_flex": 2.2e-06,
|
||||
"output_cost_per_token_priority": 8e-06,
|
||||
|
|
@ -45932,6 +46034,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o4-mini-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45968,6 +46071,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o4-mini-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -46006,6 +46110,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"output_cost_per_token_flex": 2.2e-06,
|
||||
"output_cost_per_token_priority": 8e-06,
|
||||
|
|
@ -59584,6 +59689,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -59611,6 +59717,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -70793,6 +70900,7 @@
|
|||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
|
|
@ -70802,6 +70910,7 @@
|
|||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
|
|
@ -76155,6 +76264,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -79685,6 +79795,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {"search_context_size_high":0.01,"search_context_size_low":0.01,"search_context_size_medium":0.01},
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -82379,6 +82490,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {"search_context_size_high":0.01,"search_context_size_low":0.01,"search_context_size_medium":0.01},
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
|
|||
|
|
@ -431,6 +431,9 @@ class ModelInfoBase(ProviderSpecificModelInfo, total=False):
|
|||
regional_processing_uplift_multiplier_us: (
|
||||
float | None
|
||||
) # OpenAI US data-residency uplift multiplier applied to all token costs (e.g. 1.10 = +10%)
|
||||
fedramp_uplift_multiplier: ReadOnly[
|
||||
float | None
|
||||
] # OpenAI FedRAMP endpoint (gov.api.openai.com) uplift multiplier applied to all token costs (e.g. 1.10 = +10%)
|
||||
regional_endpoint_uplift_multiplier: ReadOnly[
|
||||
float | None
|
||||
] # Vertex AI non-global (regional) endpoint uplift multiplier applied to all token costs (e.g. 1.10 = +10%)
|
||||
|
|
@ -4258,6 +4261,7 @@ class CustomPricingLiteLLMParams(MirroredPricingParams):
|
|||
annotation_cost_per_page_batches: float | None = None
|
||||
regional_processing_uplift_multiplier_eu: float | None = None
|
||||
regional_processing_uplift_multiplier_us: float | None = None
|
||||
fedramp_uplift_multiplier: float | None = None
|
||||
regional_endpoint_uplift_multiplier: float | None = None
|
||||
|
||||
@classmethod
|
||||
|
|
@ -5260,11 +5264,13 @@ class DataResidency(Enum):
|
|||
Inferred from the OpenAI api_base host (eu.api.openai.com -> EU,
|
||||
us.api.openai.com -> US). Used to apply the regional-processing
|
||||
cost uplift (see ``regional_processing_uplift_multiplier_<region>``
|
||||
on ModelInfo).
|
||||
on ModelInfo). gov.api.openai.com maps to FEDRAMP, which applies
|
||||
``fedramp_uplift_multiplier`` instead.
|
||||
"""
|
||||
|
||||
US = "us"
|
||||
EU = "eu"
|
||||
FEDRAMP = "fedramp"
|
||||
|
||||
|
||||
LLMResponseTypes = (
|
||||
|
|
|
|||
|
|
@ -7504,6 +7504,7 @@ def get_model_info_helper(
|
|||
regional_processing_uplift_multiplier_us=_model_info.get(
|
||||
"regional_processing_uplift_multiplier_us", None
|
||||
),
|
||||
fedramp_uplift_multiplier=_model_info.get("fedramp_uplift_multiplier", None),
|
||||
regional_endpoint_uplift_multiplier=_model_info.get("regional_endpoint_uplift_multiplier", None),
|
||||
output_cost_per_audio_token=_model_info.get("output_cost_per_audio_token", None),
|
||||
output_cost_per_character=_model_info.get("output_cost_per_character", None),
|
||||
|
|
|
|||
|
|
@ -17799,6 +17799,7 @@
|
|||
"max_output_tokens": 1024,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
],
|
||||
|
|
@ -17830,6 +17831,7 @@
|
|||
"max_output_tokens": 1024,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
],
|
||||
|
|
@ -29263,6 +29265,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -29278,6 +29281,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29291,6 +29295,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29304,6 +29309,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29317,6 +29323,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "OpenAI needs to add pricing for this ft model, will be updated when added by OpenAI. Defaulting to base model pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -29335,6 +29342,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.25e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29357,6 +29365,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_pdf_input": true,
|
||||
|
|
@ -29378,6 +29387,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29401,6 +29411,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29423,6 +29434,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3.2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.6e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29445,6 +29457,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -29467,6 +29480,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35122,6 +35136,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
|
|
@ -35139,6 +35154,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 7.5e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35158,6 +35174,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35175,6 +35192,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_prompt_caching": true,
|
||||
"supports_system_messages": true,
|
||||
"supports_tool_choice": true
|
||||
|
|
@ -35209,6 +35227,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
"supports_system_messages": true,
|
||||
|
|
@ -35225,6 +35244,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35242,6 +35262,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_prompt_caching": true,
|
||||
|
|
@ -35258,6 +35279,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supports_function_calling": true,
|
||||
"supports_parallel_function_calling": true,
|
||||
"supports_pdf_input": true,
|
||||
|
|
@ -35277,6 +35299,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1.5e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35301,6 +35324,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35346,6 +35370,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35391,6 +35416,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8e-07,
|
||||
"output_cost_per_token_priority": 2.8e-06,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35436,6 +35462,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.6e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-06,
|
||||
"output_cost_per_token_batches": 8e-07,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -35481,6 +35508,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_priority": 8e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35520,6 +35548,7 @@
|
|||
"max_output_tokens": 32768,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 8e-07,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35559,6 +35588,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35583,6 +35613,7 @@
|
|||
"max_output_tokens": 4096,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 7.5e-06,
|
||||
"output_cost_per_token_priority": 2.625e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35608,6 +35639,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35634,6 +35666,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1.7e-05,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
|
|
@ -35926,6 +35959,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"output_cost_per_token_priority": 1e-06,
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -35957,6 +35991,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 1e-06,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
|
|
@ -36021,6 +36056,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36049,6 +36085,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-07,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36136,6 +36173,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36164,6 +36202,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.025,
|
||||
|
|
@ -36786,6 +36825,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_flex": 5e-06,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
|
|
@ -36840,6 +36880,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36874,6 +36915,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -36934,6 +36976,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex-mini",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36966,6 +37009,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex-max",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -36999,6 +37043,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -37032,6 +37077,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.1-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -37069,6 +37115,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37127,6 +37174,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37186,6 +37234,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.2-codex",
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -37219,6 +37268,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.2-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -37253,6 +37303,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37309,6 +37360,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.000168,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8.4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37357,6 +37409,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.000168,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 8.4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -37463,6 +37516,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37556,6 +37610,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37657,6 +37712,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37749,6 +37805,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37839,6 +37896,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -37931,6 +37989,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38022,6 +38081,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38070,6 +38130,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38108,6 +38169,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38146,6 +38208,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 0.0001125,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -38183,6 +38246,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 3e-05,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -38221,6 +38285,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 2e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_above_272k_tokens": 3e-05,
|
||||
"supported_endpoints": [
|
||||
"/v1/responses"
|
||||
|
|
@ -38254,6 +38319,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 3e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"reasoning_effort_levels": [
|
||||
"medium"
|
||||
],
|
||||
|
|
@ -38322,6 +38388,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38392,6 +38459,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38454,6 +38522,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38513,6 +38582,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38580,6 +38650,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -38645,6 +38716,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -38702,6 +38774,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38762,6 +38835,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38824,6 +38898,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38886,6 +38961,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -38945,6 +39021,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -39009,6 +39086,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -39054,6 +39132,7 @@
|
|||
"max_output_tokens": 272000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.00012,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39105,6 +39184,7 @@
|
|||
"max_output_tokens": 272000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.00012,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 6e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39162,6 +39242,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 5e-06,
|
||||
"output_cost_per_token_flex": 5e-06,
|
||||
"output_cost_per_token_priority": 2e-05,
|
||||
|
|
@ -39216,6 +39297,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
"/v1/batch",
|
||||
|
|
@ -39253,6 +39335,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -39285,6 +39368,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_priority": 2.8e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -39339,6 +39423,7 @@
|
|||
"max_output_tokens": 16384,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1.4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/gpt-5.3-chat-latest",
|
||||
"supported_endpoints": [
|
||||
"/v1/chat/completions",
|
||||
|
|
@ -39378,6 +39463,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1e-06,
|
||||
"output_cost_per_token_flex": 1e-06,
|
||||
"output_cost_per_token_priority": 3.6e-06,
|
||||
|
|
@ -39438,6 +39524,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 2e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 1e-06,
|
||||
"output_cost_per_token_flex": 1e-06,
|
||||
"output_cost_per_token_priority": 3.6e-06,
|
||||
|
|
@ -39496,6 +39583,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_flex": 2e-07,
|
||||
"reasoning_contexts": [
|
||||
|
|
@ -39553,6 +39641,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4e-07,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2e-07,
|
||||
"output_cost_per_token_flex": 2e-07,
|
||||
"reasoning_contexts": [
|
||||
|
|
@ -45472,6 +45561,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45496,6 +45586,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 6e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 3e-05,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45519,6 +45610,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.0006,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 0.0003,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -45554,6 +45646,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 0.0006,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 0.0003,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -45593,6 +45686,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_flex": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
|
|
@ -45640,6 +45734,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o3-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45676,6 +45771,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 4e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o3-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45714,6 +45810,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-06,
|
||||
"output_cost_per_token_flex": 4e-06,
|
||||
"output_cost_per_token_priority": 1.4e-05,
|
||||
|
|
@ -45765,6 +45862,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45787,6 +45885,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_function_calling": true,
|
||||
|
|
@ -45808,6 +45907,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -45854,6 +45954,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 4e-05,
|
||||
"reasoning_contexts": [
|
||||
"auto",
|
||||
|
|
@ -45905,6 +46006,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"output_cost_per_token_flex": 2.2e-06,
|
||||
"output_cost_per_token_priority": 8e-06,
|
||||
|
|
@ -45932,6 +46034,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o4-mini-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -45968,6 +46071,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "responses",
|
||||
"output_cost_per_token": 8e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/models/o4-mini-deep-research",
|
||||
"supported_endpoints": [
|
||||
"/v1/batch",
|
||||
|
|
@ -46006,6 +46110,7 @@
|
|||
"max_output_tokens": 100000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 4.4e-06,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"output_cost_per_token_batches": 2.2e-06,
|
||||
"output_cost_per_token_flex": 2.2e-06,
|
||||
"output_cost_per_token_priority": 8e-06,
|
||||
|
|
@ -59584,6 +59689,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -59611,6 +59717,7 @@
|
|||
"max_output_tokens": 128000,
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 1e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -70793,6 +70900,7 @@
|
|||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
|
|
@ -70802,6 +70910,7 @@
|
|||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
"output_cost_per_token": 7.5e-05,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
|
|
@ -76155,6 +76264,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {
|
||||
"search_context_size_high": 0.01,
|
||||
"search_context_size_low": 0.01,
|
||||
|
|
@ -79685,6 +79795,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {"search_context_size_high":0.01,"search_context_size_low":0.01,"search_context_size_medium":0.01},
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
@ -82379,6 +82490,7 @@
|
|||
],
|
||||
"regional_processing_uplift_multiplier_eu": 1.1,
|
||||
"regional_processing_uplift_multiplier_us": 1.1,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
"search_context_cost_per_query": {"search_context_size_high":0.01,"search_context_size_low":0.01,"search_context_size_medium":0.01},
|
||||
"source": "https://developers.openai.com/api/docs/pricing",
|
||||
"supported_endpoints": [
|
||||
|
|
|
|||
|
|
@ -2766,9 +2766,9 @@ def test_aggregate_batch_cost_uses_custom_model_info():
|
|||
assert result.cost == pytest.approx(expected), f"Expected total cost {expected}, got {result.cost}"
|
||||
|
||||
@pytest.mark.usefixtures("_vcr_outcome_gate", "setup_and_teardown")
|
||||
@pytest.mark.parametrize("data_residency", ["eu", "us"])
|
||||
@pytest.mark.parametrize("data_residency", ["eu", "us", "fedramp"])
|
||||
def test_batch_cost_calculator_applies_data_residency_uplift(data_residency, monkeypatch):
|
||||
"""batch_cost_calculator should apply the regional uplift multiplier when
|
||||
"""batch_cost_calculator should apply the regional or FedRAMP uplift multiplier when
|
||||
data_residency is set and the model carries a configured multiplier."""
|
||||
monkeypatch.setenv("LITELLM_LOCAL_MODEL_COST_MAP", "True")
|
||||
prev_model_cost = litellm.model_cost
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ from litellm.types.llms.base import CachedTokensDetails
|
|||
from litellm.types.utils import (
|
||||
CacheCreationTokenDetails,
|
||||
CompletionTokensDetailsWrapper,
|
||||
DataResidency,
|
||||
ImageObject,
|
||||
ImageResponse,
|
||||
ImageUsage,
|
||||
|
|
@ -2579,6 +2580,51 @@ def test_data_residency_applies_uplift(data_residency, model, _local_model_cost_
|
|||
assert regional[1] == pytest.approx(base[1] * 1.10, rel=1e-9)
|
||||
|
||||
|
||||
def test_fedramp_data_residency_applies_configured_uplift() -> None:
|
||||
usage: Final = Usage(prompt_tokens=1000, completion_tokens=500, total_tokens=1500)
|
||||
model_info: Final[ModelInfo] = {
|
||||
"key": "fedramp-fixture",
|
||||
"max_tokens": None,
|
||||
"max_input_tokens": None,
|
||||
"max_output_tokens": None,
|
||||
"input_cost_per_token": 1e-6,
|
||||
"output_cost_per_token": 2e-6,
|
||||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
"supported_openai_params": None,
|
||||
"regional_processing_uplift_multiplier_us": 1.5,
|
||||
"fedramp_uplift_multiplier": 1.1,
|
||||
}
|
||||
|
||||
base: Final = generic_cost_per_token(
|
||||
model="fedramp-fixture",
|
||||
usage=usage,
|
||||
custom_llm_provider="openai",
|
||||
model_info=model_info,
|
||||
)
|
||||
fedramp: Final = generic_cost_per_token(
|
||||
model="fedramp-fixture",
|
||||
usage=usage,
|
||||
custom_llm_provider="openai",
|
||||
data_residency=DataResidency.FEDRAMP.value,
|
||||
model_info=model_info,
|
||||
)
|
||||
|
||||
us: Final = generic_cost_per_token(
|
||||
model="fedramp-fixture",
|
||||
usage=usage,
|
||||
custom_llm_provider="openai",
|
||||
data_residency=DataResidency.US.value,
|
||||
model_info=model_info,
|
||||
)
|
||||
|
||||
assert sum(base) > 0
|
||||
assert fedramp[0] == pytest.approx(base[0] * 1.1)
|
||||
assert fedramp[1] == pytest.approx(base[1] * 1.1)
|
||||
assert us[0] == pytest.approx(base[0] * 1.5)
|
||||
assert us[1] == pytest.approx(base[1] * 1.5)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("model", ["gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-5-pro", "gpt-4o", "gpt-4.1"])
|
||||
def test_data_residency_no_uplift_for_pre_march_2026_models(model, _local_model_cost_map):
|
||||
"""Models released before 2026-03-05 must not have the regional uplift."""
|
||||
|
|
@ -2719,6 +2765,22 @@ def test_vertex_uplift_invalid_multiplier_defaults_to_one():
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"model_info, data_residency",
|
||||
[
|
||||
({"fedramp_uplift_multiplier": "not-a-number"}, "fedramp"),
|
||||
({}, "fedramp"),
|
||||
({"fedramp_uplift_multiplier": 1.1}, "us"),
|
||||
({"fedramp_uplift_multiplier": 1.1}, None),
|
||||
],
|
||||
)
|
||||
def test_fedramp_uplift_defaults_to_one(model_info: ModelInfo, data_residency: str | None):
|
||||
"""A malformed or missing FedRAMP multiplier, or a non-FedRAMP host, bills base pricing and never raises."""
|
||||
from litellm.litellm_core_utils.llm_cost_calc.utils import get_fedramp_uplift_multiplier
|
||||
|
||||
assert get_fedramp_uplift_multiplier(model_info, data_residency) == 1.0
|
||||
|
||||
|
||||
def test_service_tier_suffixes_constant_in_sync_with_enum():
|
||||
from litellm.litellm_core_utils.llm_cost_calc.utils import _SERVICE_TIER_SUFFIXES
|
||||
from litellm.types.utils import ServiceTier
|
||||
|
|
|
|||
|
|
@ -340,6 +340,13 @@ class TestGetLitellmParamsDataResidency:
|
|||
)
|
||||
assert result["data_residency"] == "us"
|
||||
|
||||
def test_fedramp_host_resolves_to_fedramp(self):
|
||||
result = get_litellm_params(
|
||||
custom_llm_provider="openai",
|
||||
api_base="https://gov.api.openai.com/v1",
|
||||
)
|
||||
assert result["data_residency"] == "fedramp"
|
||||
|
||||
def test_global_host_resolves_to_none(self):
|
||||
result = get_litellm_params(
|
||||
custom_llm_provider="openai",
|
||||
|
|
|
|||
|
|
@ -112,6 +112,28 @@ def test_responses_us_api_base_sets_data_residency():
|
|||
assert logging_obj.litellm_params.get("data_residency") == "us"
|
||||
|
||||
|
||||
def test_responses_fedramp_api_base_sets_data_residency():
|
||||
mock_client = _make_mock_http_client(_make_responses_api_response_body())
|
||||
captured, init_spy = _capture_logging_obj()
|
||||
|
||||
with (
|
||||
patch(
|
||||
"litellm.llms.custom_httpx.llm_http_handler.get_httpx_client",
|
||||
return_value=mock_client,
|
||||
),
|
||||
patch.object(litellm.Logging, "__init__", init_spy),
|
||||
):
|
||||
litellm.responses(
|
||||
model="gpt-4.1",
|
||||
input="hi",
|
||||
api_base="https://gov.api.openai.com/v1",
|
||||
api_key="test-key",
|
||||
)
|
||||
|
||||
logging_obj = captured["logging_obj"]
|
||||
assert logging_obj.litellm_params.get("data_residency") == "fedramp"
|
||||
|
||||
|
||||
def test_responses_global_api_base_leaves_data_residency_none():
|
||||
mock_client = _make_mock_http_client(_make_responses_api_response_body())
|
||||
captured, init_spy = _capture_logging_obj()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
import pytest
|
||||
|
||||
import litellm
|
||||
from litellm.llms.openai.data_residency import infer_openai_data_residency
|
||||
from litellm.types.utils import DataResidency
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
@ -13,6 +15,8 @@ from litellm.llms.openai.data_residency import infer_openai_data_residency
|
|||
("https://us.api.openai.com/v1", "us"),
|
||||
("https://us.api.openai.com", "us"),
|
||||
("https://EU.api.openai.com/v1", "eu"),
|
||||
("https://gov.api.openai.com/v1", DataResidency.FEDRAMP.value),
|
||||
("https://GOV.api.openai.com/v1", DataResidency.FEDRAMP.value),
|
||||
("https://api.openai.com/v1", None),
|
||||
("https://api.openai.com", None),
|
||||
("https://example.com/v1", None),
|
||||
|
|
@ -28,7 +32,26 @@ def test_infer_openai_data_residency(api_base, expected):
|
|||
|
||||
@pytest.mark.parametrize("custom_llm_provider", [None, "anthropic", "azure", "bedrock"])
|
||||
def test_infer_openai_data_residency_non_openai_provider(custom_llm_provider):
|
||||
assert (
|
||||
infer_openai_data_residency(custom_llm_provider, "https://eu.api.openai.com/v1")
|
||||
is None
|
||||
)
|
||||
assert infer_openai_data_residency(custom_llm_provider, "https://eu.api.openai.com/v1") is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize("env_var", ["OPENAI_BASE_URL", "OPENAI_API_BASE"])
|
||||
def test_infer_openai_data_residency_from_env_when_api_base_unset(monkeypatch, env_var):
|
||||
monkeypatch.setattr(litellm, "api_base", None)
|
||||
monkeypatch.delenv("OPENAI_BASE_URL", raising=False)
|
||||
monkeypatch.delenv("OPENAI_API_BASE", raising=False)
|
||||
monkeypatch.setenv(env_var, "https://gov.api.openai.com/v1")
|
||||
assert infer_openai_data_residency("openai", None) == DataResidency.FEDRAMP.value
|
||||
|
||||
|
||||
def test_infer_openai_data_residency_explicit_api_base_wins_over_env(monkeypatch):
|
||||
monkeypatch.setattr(litellm, "api_base", None)
|
||||
monkeypatch.setenv("OPENAI_BASE_URL", "https://gov.api.openai.com/v1")
|
||||
assert infer_openai_data_residency("openai", "https://eu.api.openai.com/v1") == "eu"
|
||||
|
||||
|
||||
def test_infer_openai_data_residency_from_litellm_api_base(monkeypatch):
|
||||
monkeypatch.delenv("OPENAI_BASE_URL", raising=False)
|
||||
monkeypatch.delenv("OPENAI_API_BASE", raising=False)
|
||||
monkeypatch.setattr(litellm, "api_base", "https://us.api.openai.com/v1")
|
||||
assert infer_openai_data_residency("openai", None) == "us"
|
||||
|
|
|
|||
|
|
@ -11547,3 +11547,28 @@ async def test_bedrock_strict_tools_limit_rejection_is_not_sent_again_when_no_to
|
|||
|
||||
assert error is not None and "Too many strict tools" in str(error)
|
||||
assert len(sent) == 1
|
||||
|
||||
|
||||
def test_supplied_openai_client_base_url_decides_data_residency(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
"""A caller-supplied OpenAI client sends the request to its own base_url, so billing must use that
|
||||
host and not an env-configured FedRAMP or regional base."""
|
||||
import openai
|
||||
|
||||
monkeypatch.setattr(litellm, "api_base", None)
|
||||
monkeypatch.setenv("OPENAI_BASE_URL", "https://gov.api.openai.com/v1")
|
||||
captured = {}
|
||||
real_init = litellm.Logging.__init__
|
||||
|
||||
def init_spy(self, *args, **kwargs):
|
||||
real_init(self, *args, **kwargs)
|
||||
captured["logging_obj"] = self
|
||||
|
||||
with patch.object(litellm.Logging, "__init__", init_spy):
|
||||
litellm.completion(
|
||||
model="gpt-4.1",
|
||||
messages=[{"role": "user", "content": "hi"}],
|
||||
client=openai.OpenAI(api_key="test-key", base_url="https://api.openai.com/v1"),
|
||||
mock_response="ok",
|
||||
)
|
||||
|
||||
assert captured["logging_obj"].litellm_params.get("data_residency") is None
|
||||
|
|
|
|||
|
|
@ -1079,6 +1079,7 @@ _COST_MAP_ROW_SCHEMA: Final = {
|
|||
"regional_endpoint_uplift_multiplier": {"type": "number"},
|
||||
"regional_processing_uplift_multiplier_eu": {"type": "number"},
|
||||
"regional_processing_uplift_multiplier_us": {"type": "number"},
|
||||
"fedramp_uplift_multiplier": {"type": "number"},
|
||||
"input_cost_per_pixel": {"type": "number"},
|
||||
"input_cost_per_query": {"type": "number"},
|
||||
"input_cost_per_request": {"type": "number"},
|
||||
|
|
|
|||
4
ui/litellm-dashboard/src/lib/http/schema.d.ts
generated
vendored
4
ui/litellm-dashboard/src/lib/http/schema.d.ts
generated
vendored
|
|
@ -35973,6 +35973,8 @@ export interface components {
|
|||
drop_params?: boolean | string | null;
|
||||
/** Explicit Cache Read Input Token Cost */
|
||||
explicit_cache_read_input_token_cost?: number | null;
|
||||
/** Fedramp Uplift Multiplier */
|
||||
fedramp_uplift_multiplier?: number | null;
|
||||
/**
|
||||
* Fireworks Forward User Id
|
||||
* @description Send the LiteLLM user id of the calling key as the `user` field on Fireworks AI chat, responses and messages requests.
|
||||
|
|
@ -51677,6 +51679,8 @@ export interface components {
|
|||
drop_params?: boolean | string | null;
|
||||
/** Explicit Cache Read Input Token Cost */
|
||||
explicit_cache_read_input_token_cost?: number | null;
|
||||
/** Fedramp Uplift Multiplier */
|
||||
fedramp_uplift_multiplier?: number | null;
|
||||
/**
|
||||
* Fireworks Forward User Id
|
||||
* @description Send the LiteLLM user id of the calling key as the `user` field on Fireworks AI chat, responses and messages requests.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue