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
- Read the provider-reported message in the error text (usually a content-policy or parameter reason) and adjust the prompt/parameters accordingly
- If it is a content-filter rejection, rephrase the prompt to remove flagged content
- Verify generation parameters (size, seed, model) are valid for the configured model
- 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
- Screen prompts against known content-policy categories before submission
- Surface the provider-reported message to end users instead of a generic failure
- Validate model/size/seed parameters against the model's documented constraints
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
- Seedream response contained no images
- DashScope response contained no images: {data}
- Seedream response payload missing image data
- Mode '{request.mode}' requires an init image for {request.mo
- DashScope response missing output: {data}
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/3d2e177498cc6da8.
Report an issue: GitHub.