invoke-ai/InvokeAI · error · ExternalProviderRequestError

Seedream returned no images. Provider reported: {message or

Error message

Seedream returned no images. Provider reported: {message or item_errors}

What it means

Raised when a Seedream generation request completed but produced zero images, and at least one per-item error object was collected from the response "data" array. The message surfaces the first item's "message" (e.g. a content-filter rejection) so the caller can see why generation failed.

Source

Thrown at invokeai/app/services/external_generation/providers/seedream.py:143

            # Items may be error objects for failed images in batch — collect rather than discard
            # so partial-failure causes (e.g., content filter) are visible to the caller.
            if "error" in item:
                error_payload = item["error"]
                item_errors.append(
                    error_payload if isinstance(error_payload, dict) else {"message": str(error_payload)}
                )
                continue
            encoded = item.get("b64_json")
            if not encoded:
                continue
            image = decode_image_base64(encoded)
            generated_images.append(ExternalGeneratedImage(image=image, seed=request.seed))

        if not generated_images:
            if item_errors:
                first = item_errors[0]
                message = first.get("message") if isinstance(first, dict) else None
                raise ExternalProviderRequestError(
                    f"Seedream returned no images. Provider reported: {message or item_errors}"
                )
            raise ExternalProviderRequestError("Seedream response contained no images")

        provider_metadata: dict[str, object] = {"model": model_id}
        if item_errors:
            provider_metadata["partial_failures"] = item_errors
            self._logger.warning(
                "Seedream returned %d image(s) with %d partial failure(s): %s",
                len(generated_images),
                len(item_errors),
                item_errors,
            )

        return ExternalGenerationResult(
            images=generated_images,
            seed_used=request.seed,
            provider_metadata=provider_metadata,

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Read the provider-reported message in the error text (usually a content-policy or parameter reason) and adjust the prompt/parameters accordingly
  2. If it is a content-filter rejection, rephrase the prompt to remove flagged content
  3. Verify generation parameters (size, seed, model) are valid for the configured model
  4. Retry after checking account quota/billing status if the message indicates a limit or restriction
Defensive patterns

Strategy: fallback

Validate before calling

// Pre-flight prompt screening (client-side keyword/policy lint) before calling generate()
if flagged(prompt):
    raise ValueError("Prompt likely violates provider content policy")

Try / catch

try:
    result = provider.generate(request)
except ExternalProviderRequestError as e:
    if "content" in str(e).lower():
        notify_user("Prompt rejected by provider policy; rephrase and retry")
    else:
        raise

Prevention

When it happens

Trigger: Calling generate() where every entry in the response "data" list is an error object (or otherwise not convertible to an image), so generated_images stays empty while item_errors is non-empty.

Common situations: Prompts rejected by the provider's content filter; all images in a batch failing safety checks; account quota/region restrictions causing per-request rejections; invalid generation parameters the provider rejects per item.

Related errors


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