BerriAI/litellm · error · ValueError
API base is required for OpenAI image variations
Error message
API base is required for OpenAI image variations
What it means
OpenAI image variations additionally require an explicit API base; provider_config.get_api_base() returned None (litellm/images/main.py:662) and litellm raises ValueError instead of guessing a URL. Unlike chat completions, this path does not default to https://api.openai.com/v1.
Source
Thrown at litellm/images/main.py:662
provider_config: Final = ProviderConfigManager.get_provider_model_info(
model=model or "", # openai defaults to dall-e-2
provider=llm_provider,
)
if provider_config is None:
raise ValueError(
f"image variation provider has no known model info config - required for getting api keys, etc.: {custom_llm_provider}. Supported providers are: {LITELLM_IMAGE_VARIATION_PROVIDERS}"
)
api_key: Final = provider_config.get_api_key(litellm_params.get("api_key", None))
api_base = provider_config.get_api_base(litellm_params.get("api_base", None))
if image_variation_provider == LITELLM_IMAGE_VARIATION_PROVIDERS.OPENAI:
if api_key is None:
raise ValueError("API key is required for OpenAI image variations")
if api_base is None:
raise ValueError("API base is required for OpenAI image variations")
response = openai_image_variations.image_variations(
model_response=model_response,
api_key=api_key,
api_base=api_base,
model=model,
image=image,
timeout=litellm_params.get("timeout", None),
custom_llm_provider=custom_llm_provider,
logging_obj=litellm_logging_obj,
optional_params={},
litellm_params=litellm_params,
)
elif image_variation_provider == LITELLM_IMAGE_VARIATION_PROVIDERS.TOPAZ:
if api_key is None:
raise ValueError("API key is required for Topaz image variations")
if api_base is None:
raise ValueError("API base is required for Topaz image variations")View on GitHub (pinned to 6c2dcb801b)
Solutions
- Pass api_base explicitly: api_base='https://api.openai.com/v1'
- Or set OPENAI_API_BASE environment variable to your endpoint
- Or set litellm.api_base globally before the call
- For Azure-style proxies, point api_base at your gateway URL
Example fix
# before litellm.image_variations(model="dall-e-2", image=image_file, api_key=key) # after litellm.image_variations(model="dall-e-2", image=image_file, api_key=key, api_base="https://api.openai.com/v1")
Defensive patterns
Strategy: validation
Validate before calling
import os
def variation_base(explicit: str | None = None) -> str:
return explicit or os.getenv("OPENAI_API_BASE") or getattr(litellm, "api_base", None) or "https://api.openai.com/v1" Try / catch
try:
r = litellm.image_variations(model="dall-e-2", image=img, api_key=k)
except ValueError as e:
if "API base is required" in str(e):
return litellm.image_variations(model="dall-e-2", image=img, api_key=k, api_base="https://api.openai.com/v1")
raise Prevention
- Always pass api_base explicitly for OpenAI image endpoints
- Centralize endpoint configuration (key + base) in one settings object
- Set OPENAI_API_BASE in environments using proxies or gateways
When it happens
Trigger: Calling litellm.image_variations(model='dall-e-2', ...) with api_key set but no api_base argument and no resolvable OPENAI_API_BASE / litellm.api_base.
Common situations: Developer supplies only the key assuming the OpenAI default base applies; env var OPENAI_API_BASE unset in containers.
Related errors
- API base is required for Topaz image variations
- api_base is required for Azure AI Studio. Please set the api
- api_base is required for Azure OpenAI calls
- api_base is required for Azure WebSocket
- Unclassified keys in {PRICES_PATH.name}: {', '.join(unclassi
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/11138e45da5e75d5.
Report an issue: GitHub.