diff --git a/ci_cd/generate_model_prices_schema.py b/ci_cd/generate_model_prices_schema.py index 8eec07dadda..6cef9d7ab68 100644 --- a/ci_cd/generate_model_prices_schema.py +++ b/ci_cd/generate_model_prices_schema.py @@ -222,6 +222,7 @@ COST_DESCRIPTIONS: dict[str, str] = { "cache_read_input_token_cost": "USD per prompt token served from the provider's prompt cache.", "input_cost_per_token_batches": "USD per prompt token via the provider's batch API.", "output_cost_per_token_batches": "USD per generated token via the provider's batch API.", + "input_cost_per_reference_pixel": "USD per pixel of each reference image sent with an image edit.", } diff --git a/litellm-rust/crates/model-catalog/src/model_info.rs b/litellm-rust/crates/model-catalog/src/model_info.rs index 77a8b768e38..bf01db55c27 100644 --- a/litellm-rust/crates/model-catalog/src/model_info.rs +++ b/litellm-rust/crates/model-catalog/src/model_info.rs @@ -345,6 +345,8 @@ pub struct ModelInfo { #[serde(default, skip_serializing_if = "Option::is_none")] pub input_cost_per_pixel: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub input_cost_per_reference_pixel: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub input_cost_per_query: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub input_cost_per_request: Option, diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 74f52a488de..b33162465ec 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -10964,6 +10964,7 @@ }, "azure_ai/FLUX.2-flex": { "input_cost_per_pixel": 4.76837158203125e-08, + "input_cost_per_reference_pixel": 4.76837158203125e-08, "litellm_provider": "azure_ai", "max_input_tokens": 32000, "max_tokens": 32000, diff --git a/litellm/types/utils.py b/litellm/types/utils.py index 3f8471cbde1..3e7682583a5 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -3702,6 +3702,7 @@ class CustomPricingLiteLLMParams(MirroredPricingParams): output_cost_per_image_1024: float | None = None output_cost_per_image_1536: float | None = None input_cost_per_pixel: float | None = None + input_cost_per_reference_pixel: float | None = None output_cost_per_pixel: float | None = None # Include all ModelInfoBase fields as optional diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 74f52a488de..b33162465ec 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -10964,6 +10964,7 @@ }, "azure_ai/FLUX.2-flex": { "input_cost_per_pixel": 4.76837158203125e-08, + "input_cost_per_reference_pixel": 4.76837158203125e-08, "litellm_provider": "azure_ai", "max_input_tokens": 32000, "max_tokens": 32000, diff --git a/model_prices_and_context_window.schema.json b/model_prices_and_context_window.schema.json index 737a9b7fa60..8afbdf077fd 100644 --- a/model_prices_and_context_window.schema.json +++ b/model_prices_and_context_window.schema.json @@ -318,6 +318,11 @@ "type": "number", "minimum": 0 }, + "input_cost_per_reference_pixel": { + "type": "number", + "minimum": 0, + "description": "USD per pixel of each reference image sent with an image edit." + }, "input_cost_per_request": { "type": "number", "minimum": 0 diff --git a/terraform/provider/docs/resources/model.md b/terraform/provider/docs/resources/model.md index 0409b48b391..834ed05d5bb 100644 --- a/terraform/provider/docs/resources/model.md +++ b/terraform/provider/docs/resources/model.md @@ -157,6 +157,8 @@ The following arguments are supported: * `input_cost_per_pixel` - (Optional) float. Cost applied per input pixel for models that charge by image size. +* `input_cost_per_reference_pixel` - (Optional) float. Cost applied per pixel of each reference image sent with an image edit, for models that meter reference images separately. + * `output_cost_per_pixel` - (Optional) float. Cost applied per output pixel for image-generation models. * `input_cost_per_second` - (Optional) float. Cost applied per input second for audio/transcription models. diff --git a/terraform/provider/litellm/resource_model.go b/terraform/provider/litellm/resource_model.go index b0a7304718b..88f4bbe36f3 100644 --- a/terraform/provider/litellm/resource_model.go +++ b/terraform/provider/litellm/resource_model.go @@ -119,6 +119,10 @@ func resourceLiteLLMModel() *schema.Resource { Type: schema.TypeFloat, Optional: true, }, + "input_cost_per_reference_pixel": { + Type: schema.TypeFloat, + Optional: true, + }, "output_cost_per_pixel": { Type: schema.TypeFloat, Optional: true, diff --git a/terraform/provider/litellm/resource_model_crud.go b/terraform/provider/litellm/resource_model_crud.go index fc5d5b09dd5..d97a6e7c4a9 100644 --- a/terraform/provider/litellm/resource_model_crud.go +++ b/terraform/provider/litellm/resource_model_crud.go @@ -124,6 +124,9 @@ func createOrUpdateModel(d *schema.ResourceData, m interface{}, isUpdate bool) e if inputCostPerPixel := d.Get("input_cost_per_pixel").(float64); inputCostPerPixel > 0 { litellmParams["input_cost_per_pixel"] = inputCostPerPixel } + if inputCostPerReferencePixel := d.Get("input_cost_per_reference_pixel").(float64); inputCostPerReferencePixel > 0 { + litellmParams["input_cost_per_reference_pixel"] = inputCostPerReferencePixel + } if outputCostPerPixel := d.Get("output_cost_per_pixel").(float64); outputCostPerPixel > 0 { litellmParams["output_cost_per_pixel"] = outputCostPerPixel } diff --git a/terraform/provider/litellm/types.go b/terraform/provider/litellm/types.go index 8bcf7dc4fe3..33797dddf99 100644 --- a/terraform/provider/litellm/types.go +++ b/terraform/provider/litellm/types.go @@ -93,6 +93,7 @@ type LiteLLMParams struct { InputCostPerToken float64 `json:"input_cost_per_token,omitempty"` OutputCostPerToken float64 `json:"output_cost_per_token,omitempty"` InputCostPerPixel float64 `json:"input_cost_per_pixel,omitempty"` + InputCostPerReferencePixel float64 `json:"input_cost_per_reference_pixel,omitempty"` OutputCostPerPixel float64 `json:"output_cost_per_pixel,omitempty"` InputCostPerSecond float64 `json:"input_cost_per_second,omitempty"` OutputCostPerSecond float64 `json:"output_cost_per_second,omitempty"` diff --git a/tests/test_litellm/test_utils.py b/tests/test_litellm/test_utils.py index 2a8b31c12cc..6a0af3fd099 100644 --- a/tests/test_litellm/test_utils.py +++ b/tests/test_litellm/test_utils.py @@ -643,6 +643,7 @@ def validate_model_cost_values(model_data, exceptions=None): "output_cost_per_image_1024", "output_cost_per_image_1536", "input_cost_per_pixel", + "input_cost_per_reference_pixel", "output_cost_per_pixel", "input_cost_per_second", "output_cost_per_second", @@ -814,6 +815,7 @@ def test_aaamodel_prices_and_context_window_json_is_valid(): "regional_processing_uplift_multiplier_eu": {"type": "number"}, "regional_processing_uplift_multiplier_us": {"type": "number"}, "input_cost_per_pixel": {"type": "number"}, + "input_cost_per_reference_pixel": {"type": "number"}, "input_cost_per_query": {"type": "number"}, "input_cost_per_request": {"type": "number"}, "input_cost_per_second": {"type": "number"}, diff --git a/ui/litellm-dashboard/src/lib/http/schema.d.ts b/ui/litellm-dashboard/src/lib/http/schema.d.ts index bdfd4aec316..c42a66925c5 100644 --- a/ui/litellm-dashboard/src/lib/http/schema.d.ts +++ b/ui/litellm-dashboard/src/lib/http/schema.d.ts @@ -31409,6 +31409,8 @@ export interface components { input_cost_per_pixel?: number | null; /** Input Cost Per Query */ input_cost_per_query?: number | null; + /** Input Cost Per Reference Pixel */ + input_cost_per_reference_pixel?: number | null; /** Input Cost Per Second */ input_cost_per_second?: number | null; /** Input Cost Per Token */ @@ -42304,6 +42306,8 @@ export interface components { input_cost_per_pixel?: number | null; /** Input Cost Per Query */ input_cost_per_query?: number | null; + /** Input Cost Per Reference Pixel */ + input_cost_per_reference_pixel?: number | null; /** Input Cost Per Second */ input_cost_per_second?: number | null; /** Input Cost Per Token */