invoke-ai/InvokeAI · error · ExternalProviderCapabilityError

Mode '{request.mode}' is not supported by {request.model.nam

Error message

Mode '{request.mode}' is not supported by {request.model.name}

What it means

ExternalProviderCapabilityError raised by _validate_request when request.mode is not present in the model's capabilities.modes list. The requested generation mode (e.g. text2img, img2img, inpaint) is not offered by that external model.

Source

Thrown at invokeai/app/services/external_generation/external_generation_default.py:106

                time.sleep(delay)
        raise ExternalProviderRateLimitError("Rate limit exceeded after all retries")

    def get_provider_statuses(self) -> dict[str, ExternalProviderStatus]:
        return {provider_id: provider.get_status() for provider_id, provider in self._providers.items()}

    def _validate_request(self, request: ExternalGenerationRequest) -> None:
        capabilities = request.model.capabilities

        self._logger.debug(
            "Validating external request provider=%s model=%s mode=%s supported=%s",
            request.model.provider_id,
            request.model.provider_model_id,
            request.mode,
            capabilities.modes,
        )

        if request.mode not in capabilities.modes:
            raise ExternalProviderCapabilityError(f"Mode '{request.mode}' is not supported by {request.model.name}")

        if request.reference_images and not capabilities.supports_reference_images:
            raise ExternalProviderCapabilityError(f"Reference images are not supported by {request.model.name}")

        if capabilities.max_reference_images is not None:
            if len(request.reference_images) > capabilities.max_reference_images:
                raise ExternalProviderCapabilityError(
                    f"{request.model.name} supports at most {capabilities.max_reference_images} reference images"
                )

        if capabilities.max_images_per_request is not None and request.num_images > capabilities.max_images_per_request:
            raise ExternalProviderCapabilityError(
                f"{request.model.name} supports at most {capabilities.max_images_per_request} images per request"
            )

        if capabilities.max_image_size is not None:
            if request.width > capabilities.max_image_size.width or request.height > capabilities.max_image_size.height:
                raise ExternalProviderCapabilityError(

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Use a mode listed in the model's capabilities.modes
  2. Select a different model that supports the desired mode
  3. Refresh model capabilities (_refresh_model_capabilities) so the model's mode list is current
  4. Fix UI/workflow code that sends a stale mode with the request

Example fix

// before
request.mode = "inpaint"  # model only supports text2img

// after
if "inpaint" in model.capabilities.modes:
    request.mode = "inpaint"
else:
    request.mode = "text2img"
Defensive patterns

Strategy: validation

Validate before calling

if request.mode not in request.model.capabilities.modes:
    request.mode = request.model.capabilities.modes[0]

Type guard

def mode_supported(model, mode: str) -> bool:
    return mode in model.capabilities.modes

Try / catch

try:
    result = service.generate(request)
except ExternalProviderCapabilityError:
    request.mode = request.model.capabilities.modes[0]
    result = service.generate(request)

Prevention

When it happens

Trigger: generate() called with a request whose mode (from ExternalGenerationRequest) fails the `request.mode not in capabilities.modes` check for the selected model.

Common situations: Selecting an inpaint mode against a pure text-to-image model; UI state retaining an old mode after the user switched models; model capability metadata outdated relative to what the provider actually offers.

Related errors


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