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

  1. Pass api_base explicitly: api_base='https://api.openai.com/v1'
  2. Or set OPENAI_API_BASE environment variable to your endpoint
  3. Or set litellm.api_base globally before the call
  4. 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

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


AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15). Data as JSON: /api/errors/11138e45da5e75d5. Report an issue: GitHub.