BerriAI/litellm · error · ValueError

OPENROUTER_API_KEY is not set

Error message

OPENROUTER_API_KEY is not set

What it means

Credential guard in the OpenRouter image-edit config: the api_key fallback chain (argument, litellm.api_key, OPENROUTER_API_KEY secret) produced nothing, so the image-edit request would be unauthorized and is rejected before dispatch.

Source

Thrown at litellm/llms/openrouter/image_edit/transformation.py:122

                        if "image_config" not in mapped_params:
                            mapped_params["image_config"] = {}
                        mapped_params["image_config"]["image_size"] = image_size
                else:
                    mapped_params[key] = value

        return mapped_params

    def validate_environment(
        self,
        headers: dict,
        model: str,
        api_key: str | None = None,
        litellm_params: dict | None = None,
        api_base: str | None = None,
    ) -> dict:
        api_key = api_key or litellm.api_key or get_secret_str("OPENROUTER_API_KEY")
        if not api_key:
            raise ValueError("OPENROUTER_API_KEY is not set")
        headers.update(
            {
                "Authorization": f"Bearer {api_key}",
            }
        )
        return headers

    def use_multipart_form_data(self) -> bool:
        """OpenRouter uses JSON requests, not multipart/form-data."""
        return False

    def get_complete_url(
        self,
        model: str,
        api_base: str | None,
        litellm_params: dict,
    ) -> str:
        base_url = api_base or get_secret_str("OPENROUTER_API_BASE") or "https://openrouter.ai/api/v1"

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Export OPENROUTER_API_KEY, or pass api_key='...' to the image edit call.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/llms/openrouter/image_edit/transformation.py:122 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/d917ed61b65b671c. Report an issue: GitHub.