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.0

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Set the provider's required credential (API key) in the environment or InvokeAI config and restart
  2. Verify the exact env var name the provider's is_configured() checks
  3. Re-run the provider setup/login flow (e.g. OAuth-based providers)
  4. 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

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


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/fbf19285b59b8530. Report an issue: GitHub.