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

  1. Omit provider from the request to let the server auto-pick (PREFERRED_PROVIDERS order, else first enabled).
  2. Or set provider to one of the names listed in the error's 'Available providers' array.
  3. 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

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


AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14). Data as JSON: /api/errors/ec7b6afb8585098f. Report an issue: GitHub.