langflow-ai/langflow · error · HTTPException
Provider '{provider}' is not configured. Available providers
Error message
Provider '{provider}' is not configured. Available providers: {enabled_providers} What it means
When a request explicitly names a provider (request.provider) that is not in the user's enabled-provider list, the assistant router raises HTTP 400 listing the offending provider and the providers that ARE available. Enabled means the user has the provider's API-key variable configured. The message doubles as a discovery aid: it returns the valid set.
Source
Thrown at src/backend/base/langflow/agentic/api/router.py:85
enabled_providers, _ = await get_enabled_providers_for_user(user_id, session)
if not enabled_providers:
raise HTTPException(
status_code=400,
detail="No model provider is configured. Please configure at least one model provider in Settings.",
)
provider = request.provider
if not provider:
for preferred in PREFERRED_PROVIDERS:
if preferred in enabled_providers:
provider = preferred
break
if not provider:
provider = enabled_providers[0]
if provider not in enabled_providers:
raise HTTPException(
status_code=400,
detail=f"Provider '{provider}' is not configured. Available providers: {enabled_providers}",
)
api_key_name = provider_variable_map.get(provider)
if not api_key_name:
raise HTTPException(status_code=400, detail=f"Unknown provider: {provider}")
model_name = request.model_name or get_default_model(provider, user_id=user_id) or ""
# Get all configured variables for the provider
provider_vars = get_all_variables_for_provider(user_id, provider)
# Validate all required variables are present
required_keys = get_provider_required_variable_keys(provider)
missing_keys = [key for key in required_keys if not provider_vars.get(key)]
if missing_keys:View on GitHub (pinned to 976ec789d2)
Solutions
- Omit provider from the request to let the server auto-pick (PREFERRED_PROVIDERS order, else first enabled).
- Or set provider to one of the names listed in the error's 'Available providers' array.
- Configure the wanted provider's API key for the user, then retry with the original provider name.
Example fix
# before
POST /api/v1/agentic/chat {"provider": "openai"} # 400 Provider 'openai' is not configured. Available providers: ['anthropic']
# after
POST /api/v1/agentic/chat {"provider": "anthropic"} Defensive patterns
Strategy: validation
Validate before calling
import requests
probe = requests.get("http://host/api/v1/agentic/check-config", headers=headers).json()
enabled = set(probe.get("providers") or [])
if request_provider and request_provider not in enabled:
request_provider = next(iter(enabled)) or None # or omit to let the server choose Type guard
def is_enabled_provider(name: str, enabled: list[str]) -> bool:
return name in enabled Try / catch
if resp.status_code == 400 and "Available providers" in resp.text:
available = parse_providers_from_detail(resp.json()["detail"])
retry_with(available[0]) # or re-prompt the user to pick Prevention
- Populate provider pickers from the check-config response, not a hardcoded list.
- Omit provider when you have no preference — the server auto-picks sensibly.
- Normalize provider names/casing against the enabled list before sending.
When it happens
Trigger: POST /api/v1/agentic/... with body {"provider": "openai"} when only 'anthropic' is enabled for the user; provider name typo or casing mismatch.
Common situations: Frontend defaults to a provider the user never configured; switching providers per-request in scripts; provider renamed between versions.
Related errors
- Invalid path
- No model provider is configured. Please configure at least o
- Could not extract class name from code
- Inputs and outputs have overlapping names: {overlap}
- Failed to install MCP
AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14).
Data as JSON: /api/errors/ec7b6afb8585098f.
Report an issue: GitHub.