BerriAI/litellm · error · ValueError

api_base is required for provider {provider.slug}

Error message

api_base is required for provider {provider.slug}

What it means

Configuration guard in the dynamic OpenAI-like provider's get_complete_url: neither the request api_base nor provider.base_url is set, so the complete endpoint URL for this registered provider slug cannot be composed.

Source

Thrown at litellm/llms/openai_like/dynamic_config.py:85

            resolved_key: Final = api_key or get_secret_str(provider.api_key_env)

            return resolved_base, resolved_key

        def get_complete_url(
            self,
            api_base: str | None,
            api_key: str | None,
            model: str,
            optional_params: dict,
            litellm_params: dict,
            stream: bool | None = None,
        ) -> str:
            """Build complete URL for the API endpoint"""
            if not api_base:
                api_base = provider.base_url

            if api_base is None:
                raise ValueError(f"api_base is required for provider {provider.slug}")

            if not api_base.endswith("/chat/completions"):
                api_base = f"{api_base}/chat/completions"

            return api_base

        def get_supported_openai_params(self, model: str) -> list:
            """Get supported OpenAI params, excluding tool-related params for models
            that don't support function calling."""
            from litellm.utils import supports_function_calling, supports_reasoning

            supported_params: Final = super().get_supported_openai_params(model=model)

            _supports_fc: Final = supports_function_calling(model=model, custom_llm_provider=provider.slug)

            if not _supports_fc:
                tool_params: Final = [
                    "tools",

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Configure api_base for the provider slug shown in the message, via params or its environment variable.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/llms/openai_like/dynamic_config.py:85 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/251aa3e1389e0c8d. Report an issue: GitHub.