Add pricing for 23 fal_ai image generation models (nano-banana, flux, gemini,
seedream, kling, iclight). Display generated images inline in the log details
drawer instead of raw JSON for image generation responses.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FAL-specific params (image_urls, loras, etc.) must NOT be listed in
get_supported_openai_params(). LiteLLM's _get_non_default_params() only
processes keys matching default_params (n, quality, size, style, user).
Params listed in get_supported_openai_params but not in default_params
are excluded from BOTH the standard path AND the provider-specific
safety net (add_provider_specific_params_to_optional_params), causing
them to be silently dropped.
By keeping only standard OpenAI params, FAL-specific params flow through
the provider-specific safety net and reach the request body correctly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LiteLLM's image_generation() path doesn't extract extra_body from kwargs
(unlike image_edit), so params like image_urls, loras, enable_safety_checker
arrive as a nested dict in optional_params. Flatten extra_body in both
map_openai_params() and transform_image_generation_request() so FAL-specific
params appear at the top level of the request body.
Adds comprehensive test coverage (35 tests):
- URL construction for all model types
- Param passthrough (loras, guidance_scale, etc.)
- extra_body flattening (the bug scenario)
- End-to-end request validation with mocked HTTP
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Generic FAL models (nano-banana-2, flux-2/klein, etc.) were getting
incorrect URLs (just https://fal.run without model path) and having
FAL-specific params (loras, image_urls, guidance_scale, etc.) silently
dropped by the supported params filter. This broke cost tracking since
all generic FAL requests failed through the proxy.
Also adds FAL image edit config and k8s dev ConfigMap.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pin all GitHub Actions to commit SHAs and add top-level permissions
block to address security scanner findings (zizmor + CodeQL).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Builds the LiteLLM Docker image on push to main and fix/* branches,
then pushes to Azure Container Registry with commit SHA and latest tags.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes#24621
The Gemini API supports `imageConfig.imageSize` to control output
resolution (e.g., "2K", "4K"), but LiteLLM had no way to pass this
through. The `extra_body` approach doesn't work because
`generationConfig` is rebuilt from scratch in the transformation layer.
Changes:
- Vertex AI Gemini image edit: add `imageSize` to `SUPPORTED_PARAMS`
and include it in `generationConfig.image_config.image_size`
- Google AI Studio image gen: same support for Gemini models
- Both: accept `size` param as either OpenAI format ("1024x1024" ->
aspect_ratio) or Gemini format ("2K" -> image_size)
- Both: map OpenAI `quality="hd"` to `imageSize="2K"` as a convenient
alternative
- Add tests for imageSize, combined aspect_ratio+imageSize, size="2K",
and quality="hd" mappings
Unit Tests: Proxy DB Operations / proxy-db (auth-checks, tests/proxy_unit_tests/test_auth_checks.py tests/proxy_unit_tests/test_user_api_key_auth.py, 20, 8) (push) Waiting to run
Unit Tests: Proxy DB Operations / proxy-db (remaining, tests/proxy_unit_tests --ignore=tests/proxy_unit_tests/test_key_generate_prisma.py --ignore=tests/proxy_unit_tests/test_auth_checks.py --ignore=tests/proxy_unit_tests/test_user_api_key_auth.py, 20, 8) (push) Waiting to run
Unit Tests: Proxy DB Operations / proxy-db (auth-checks, tests/proxy_unit_tests/test_auth_checks.py tests/proxy_unit_tests/test_user_api_key_auth.py, 20, 8) (push) Waiting to run
Unit Tests: Proxy DB Operations / proxy-db (remaining, tests/proxy_unit_tests --ignore=tests/proxy_unit_tests/test_key_generate_prisma.py --ignore=tests/proxy_unit_tests/test_auth_checks.py --ignore=tests/proxy_unit_tests/test_user_api_key_auth.py, 20, 8) (push) Waiting to run
Avoid module-level cyclic import between llm_passthrough_endpoints and
pass_through_endpoints; CodeQL and partial init order no longer risk
undefined LITELLM_PASS_THROUGH_CUSTOM_BODY_STATE_KEY.
Made-with: Cursor
Restores Windows-style line endings to match main/origin main for this
file, removing the full-file noise diff from an accidental LF-only
normalization.
Made-with: Cursor
- Add _verify_org_access to deprecated POST /organization/info endpoint
- Move get_user_object to module-level import in organization_endpoints.py
- Add tests for _verify_team_access 403 denial path
- Introduced a new method in `FileContentStreamingHandler` to resolve streaming request parameters, enhancing the routing logic based on credentials.
- Updated the `should_stream_file_content` method to check against supported providers.
- Cleaned up type hints and imports across multiple files for better organization and clarity.
- Added comprehensive tests to validate the new routing behavior and ensure original data integrity during streaming requests.