{"record":{"id":"3a620d570f2b1a2c","repo":"invoke-ai/InvokeAI","slug":"no-external-provider-registered-for-request-mode","errorCode":null,"errorMessage":"No external provider registered for '{request.model.provider_id}'","messagePattern":"No external provider registered for '(.+?)'","errorType":"exception","errorClass":"ExternalProviderNotFoundError","httpStatus":null,"severity":"error","filePath":"invokeai/app/services/external_generation/external_generation_default.py","lineNumber":48,"sourceCode":"if TYPE_CHECKING:\n    from invokeai.app.services.model_records import ModelRecordServiceBase\n\n\nclass ExternalGenerationService(ExternalGenerationServiceBase):\n    def __init__(\n        self,\n        providers: dict[str, ExternalProvider],\n        logger: Logger,\n        record_store: ModelRecordServiceBase | None = None,\n    ) -> None:\n        self._providers = providers\n        self._logger = logger\n        self._record_store = record_store\n\n    def generate(self, request: ExternalGenerationRequest) -> ExternalGenerationResult:\n        provider = self._providers.get(request.model.provider_id)\n        if provider is None:\n            raise ExternalProviderNotFoundError(f\"No external provider registered for '{request.model.provider_id}'\")\n\n        if not provider.is_configured():\n            raise ExternalProviderNotConfiguredError(f\"Provider '{request.model.provider_id}' is missing credentials\")\n\n        request = self._refresh_model_capabilities(request)\n        resize_to_original_inpaint_size = _get_resize_target_for_inpaint(request)\n        request = self._bucket_request(request)\n        request = self._drop_unsupported_capabilities(request)\n\n        self._validate_request(request)\n        result = self._generate_with_retry(provider, request)\n\n        if resize_to_original_inpaint_size is None:\n            return result\n\n        width, height = resize_to_original_inpaint_size\n        return _resize_result_images(result, width, height)\n","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/services/external_generation/external_generation_default.py#L30-L66","documentation":"ExternalProviderNotFoundError raised in ExternalGenerationService.generate when no provider is registered under request.model.provider_id in the service's provider registry. This is a configuration/wiring problem: the request references a provider the service does not know about.","triggerScenarios":"Calling generate() with an ExternalGenerationRequest whose model.provider_id does not match any key passed to the service's _providers dict at construction time.","commonSituations":"Typo in provider_id (e.g. 'open-ai' vs 'openai'); provider plugin not installed/registered at app startup; model-config records referencing providers from a different version; stale database model records after a provider was renamed.","solutions":["Fix the model's provider_id to match a registered provider key","Register the missing provider in the service constructor / app dependency wiring","Re-register or update stale model records in the database to use existing provider IDs","Check available providers via get_provider_statuses() and use one of those IDs"],"exampleFix":"// before\nrequest.model.provider_id = \"gemini-pro\"  # never registered\n\n// after\nrequest.model.provider_id = \"google\"  # matches provider registered in ExternalGenerationService","handlingStrategy":"validation","validationCode":"statuses = service.get_provider_statuses()\nif request.model.provider_id not in statuses:\n    raise ValueError(f\"provider '{request.model.provider_id}' not registered; available: {list(statuses)}\")","typeGuard":"def provider_is_registered(service, provider_id: str) -> bool:\n    return provider_id in service.get_provider_statuses()","tryCatchPattern":"try:\n    result = service.generate(request)\nexcept ExternalProviderNotFoundError:\n    fallback_id = next(iter(service.get_provider_statuses()))\n    request.model.provider_id = fallback_id\n    result = service.generate(request)","preventionTips":["Source provider_id values from get_provider_statuses(), never hardcode strings","Register all providers during app startup before serving requests","Validate model records against registered providers at load time","Use a shared constant/enum for provider IDs"],"tags":["configuration","provider-registry","external-generation"],"backgroundTag":"unknown-provider-id","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}