invoke-ai/InvokeAI · error · ExternalProviderNotConfiguredError
Provider '{request.model.provider_id}' is missing credential
Error message
Provider '{request.model.provider_id}' is missing credentials What it means
ExternalProviderNotConfiguredError raised in generate() when a provider IS registered but its is_configured() check fails, meaning required credentials (API keys, etc.) are missing. The provider exists but cannot authenticate to its external API.
Source
Thrown at invokeai/app/services/external_generation/external_generation_default.py:51
class ExternalGenerationService(ExternalGenerationServiceBase):
def __init__(
self,
providers: dict[str, ExternalProvider],
logger: Logger,
record_store: ModelRecordServiceBase | None = None,
) -> None:
self._providers = providers
self._logger = logger
self._record_store = record_store
def generate(self, request: ExternalGenerationRequest) -> ExternalGenerationResult:
provider = self._providers.get(request.model.provider_id)
if provider is None:
raise ExternalProviderNotFoundError(f"No external provider registered for '{request.model.provider_id}'")
if not provider.is_configured():
raise ExternalProviderNotConfiguredError(f"Provider '{request.model.provider_id}' is missing credentials")
request = self._refresh_model_capabilities(request)
resize_to_original_inpaint_size = _get_resize_target_for_inpaint(request)
request = self._bucket_request(request)
request = self._drop_unsupported_capabilities(request)
self._validate_request(request)
result = self._generate_with_retry(provider, request)
if resize_to_original_inpaint_size is None:
return result
width, height = resize_to_original_inpaint_size
return _resize_result_images(result, width, height)
_MAX_RETRIES = 3
_DEFAULT_RETRY_DELAY = 10.0
_MAX_RETRY_DELAY = 60.0View on GitHub (pinned to 0b6a024f2f)
Solutions
- Set the provider's required credential (API key) in the environment or InvokeAI config and restart
- Verify the exact env var name the provider's is_configured() checks
- Re-run the provider setup/login flow (e.g. OAuth-based providers)
- If credentials are intentionally absent, route the request to a configured provider
Example fix
// before: provider is registered but no key # $ export OPENAI_API_KEY= // after export OPENAI_API_KEY=sk-... # or in invokeai config: provider credentials section filled in, then restart the app
Defensive patterns
Strategy: validation
Validate before calling
statuses = service.get_provider_statuses()
st = statuses.get(request.model.provider_id)
if st is None or not getattr(st, "configured", True):
raise RuntimeError(f"Provider '{request.model.provider_id}' credentials missing; configure before generating") Type guard
def provider_is_configured(service, provider_id: str) -> bool:
st = service.get_provider_statuses().get(provider_id)
return bool(st and getattr(st, "configured", False)) Try / catch
try:
result = service.generate(request)
except ExternalProviderNotConfiguredError:
logger.error("Set the API key env var for provider %s", request.model.provider_id)
raise Prevention
- Check provider status at startup and surface a setup prompt instead of failing at request time
- Document required env vars per provider; validate them in a preflight script
- Ensure secrets are mounted into Docker/CI environments
- Watch for env var renames when upgrading InvokeAI
When it happens
Trigger: generate() called for a registered provider whose is_configured() returns False — typically because the API key environment variable or config value for that provider was never set.
Common situations: Fresh install without setting provider API keys; env var renamed between versions; running in an environment (Docker/CI) that doesn't receive the secret; key stored in a config file the service doesn't read.
Understand the failure class
Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.
Related errors
- No external provider registered for '{request.model.provider
- Alibaba Cloud DashScope API key is not configured
- LoRA '{lora.lora.key}' has conflicting weights on the transf
- Model '{main_config.name}' is not a Krea-2 main model. Selec
- Expected ModelPatchRaw for LoRA '{lora.lora.key}', got {type
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/fbf19285b59b8530.
Report an issue: GitHub.