BerriAI/litellm · warning · Exception
Unable to health check wildcard model for provider {custom_l
Error message
Unable to health check wildcard model for provider {custom_llm_provider}. Add a model on your config.yaml or contribute here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json What it means
Raised when the proxy health check (or a caller of _run_health_check for a wildcard model) tries to health-check a wildcard deployment such as 'openai/*'. LiteLLM attempts to substitute a concrete cheap model from the known model list (model_prices_and_context_window.json / config.yaml); if the provider has zero known chat models, it cannot pick anything and raises this Exception telling you to add a model.
Source
Thrown at litellm/litellm_core_utils/health_check_helpers.py:33
class HealthCheckHelpers:
@staticmethod
async def ahealth_check_wildcard_models(
model: str,
custom_llm_provider: str,
model_params: dict,
litellm_logging_obj: "Logging",
) -> dict:
from litellm import acompletion
from litellm.litellm_core_utils.llm_request_utils import (
pick_cheapest_chat_models_from_llm_provider,
)
# this is a wildcard model, we need to pick a random model from the provider
cheapest_models = pick_cheapest_chat_models_from_llm_provider(custom_llm_provider=custom_llm_provider, n=3)
if len(cheapest_models) == 0:
raise Exception(
f"Unable to health check wildcard model for provider {custom_llm_provider}. Add a model on your config.yaml or contribute here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json"
)
if len(cheapest_models) > 1:
fallback_models = cheapest_models[1:] # Pick the last 2 models from the shuffled list
else:
fallback_models = None
model_params["model"] = cheapest_models[0]
model_params["litellm_logging_obj"] = litellm_logging_obj
model_params["fallbacks"] = fallback_models
model_params["max_tokens"] = model_params.get("max_tokens", 16) # GPT-5 models require max_output_tokens >= 16
await acompletion(**model_params)
return {}
@staticmethod
def _update_model_params_with_health_check_tracking_information(
model_params: dict,
) -> dict:
"""View on GitHub (pinned to 6c2dcb801b)
Solutions
- Add at least one concrete model with model_info for that provider to your config.yaml deployments so the health check has a model to pick
- Update LiteLLM so the bundled model_prices_and_context_window.json includes chat models for the provider (pip install -U litellm)
- Contribute missing model entries to model_prices_and_context_window.json upstream (the error links the file)
- Health-check a concrete model name instead of the wildcard deployment
Example fix
# before (config.yaml)
model_list:
- model_name: "my-wildcard"
litellm_params:
model: "newprovider/*"
api_key: os.environ/NEWPROVIDER_API_KEY
# after: give the health check a concrete model to sample
model_list:
- model_name: "my-wildcard"
litellm_params:
model: "newprovider/*"
api_key: os.environ/NEWPROVIDER_API_KEY
- model_name: "my-concrete"
litellm_params:
model: "newprovider/known-chat-model"
api_key: os.environ/NEWPROVIDER_API_KEY Defensive patterns
Strategy: try-catch
Validate before calling
from litellm.litellm_core_utils.llm_request_utils import pick_cheapest_chat_models_from_llm_provider
if not pick_cheapest_chat_models_from_llm_provider(custom_llm_provider=provider, n=1):
print(f'No known chat models for {provider}; add one to config.yaml before health checks') Try / catch
try:
router.health_check()
except Exception as e:
if 'Unable to health check wildcard model' in str(e):
# non-fatal: health endpoint only; log and continue
logging.warning('Wildcard health check unavailable: %s', e)
else:
raise Prevention
- Always declare at least one concrete model per provider alongside wildcard deployments
- Keep litellm updated so model_prices_and_context_window.json is current
- Treat wildcard health-check failures as warnings in monitoring, not outages
When it happens
Trigger: Hitting the proxy /health or /health/liveliness endpoints (or calling the health-check helper) with a wildcard model deployment like 'vertex_ai/*', 'groq/*' for a provider that has no chat entries in the bundled model_prices_and_context_window.json and no matching model_info entries in your config.yaml.
Common situations: Using a niche or new provider with wildcard routing; running an older LiteLLM whose model_prices file lacks entries for your provider; config.yaml that only declares the wildcard model without model_info pricing entries.
Related errors
- Either a2a_client or api_base is required for standard A2A f
- 'username' is required in litellm_params when auth_mode='cp4
- Callback param '{param}' (from {source}) contains an 'os.env
- Internal Error: Cache cannot be empty - internal_usage_cache
- Failed to parse DashScope response as JSON: {e}
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/fd1488fe3883a529.
Report an issue: GitHub.