{"record":{"id":"1d15cc4fee5440f2","repo":"invoke-ai/InvokeAI","slug":"seedream-response-contained-no-images","errorCode":null,"errorMessage":"Seedream response contained no images","messagePattern":"Seedream response contained no images","errorType":"exception","errorClass":"ExternalProviderRequestError","httpStatus":null,"severity":"error","filePath":"invokeai/app/services/external_generation/providers/seedream.py","lineNumber":146,"sourceCode":"                error_payload = item[\"error\"]\n                item_errors.append(\n                    error_payload if isinstance(error_payload, dict) else {\"message\": str(error_payload)}\n                )\n                continue\n            encoded = item.get(\"b64_json\")\n            if not encoded:\n                continue\n            image = decode_image_base64(encoded)\n            generated_images.append(ExternalGeneratedImage(image=image, seed=request.seed))\n\n        if not generated_images:\n            if item_errors:\n                first = item_errors[0]\n                message = first.get(\"message\") if isinstance(first, dict) else None\n                raise ExternalProviderRequestError(\n                    f\"Seedream returned no images. Provider reported: {message or item_errors}\"\n                )\n            raise ExternalProviderRequestError(\"Seedream response contained no images\")\n\n        provider_metadata: dict[str, object] = {\"model\": model_id}\n        if item_errors:\n            provider_metadata[\"partial_failures\"] = item_errors\n            self._logger.warning(\n                \"Seedream returned %d image(s) with %d partial failure(s): %s\",\n                len(generated_images),\n                len(item_errors),\n                item_errors,\n            )\n\n        return ExternalGenerationResult(\n            images=generated_images,\n            seed_used=request.seed,\n            provider_metadata=provider_metadata,\n        )\n\n","sourceCodeStart":128,"sourceCodeEnd":164,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/services/external_generation/providers/seedream.py#L128-L164","documentation":"Raised when a Seedream generation response contained a valid \"data\" list but produced no usable images and no per-item error objects were collected — i.e. the list was empty or its entries were silently skipped (non-dict items). It means the provider succeeded at the HTTP level but returned nothing usable.","triggerScenarios":"generate() called when the response \"data\" array is an empty list, or contains only non-dict entries that are skipped by the `isinstance(item, dict)` guard, with no item errors recorded.","commonSituations":"Provider intermittently returning empty payloads; unusual model versions that return empty data on soft failures; parsing assumptions broken by an API change that alters item structure (items no longer dicts).","solutions":["Log the raw response body to see whether \"data\" was empty or held unexpected item shapes","Retry the generation request — empty payloads are often transient provider-side issues","Update the provider client if the Seedream API changed its item structure so items are no longer plain dicts","Contact the provider / check status page if empty responses persist"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":"def has_images(data_items: object) -> bool:\n    return isinstance(data_items, list) and any(isinstance(i, dict) for i in data_items)","tryCatchPattern":"for attempt in range(3):\n    try:\n        return provider.generate(request)\n    except ExternalProviderRequestError as e:\n        if \"no images\" in str(e) and attempt < 2:\n            time.sleep(2 ** attempt)\n            continue\n        raise","preventionTips":["Retry transient empty responses with exponential backoff","Log the full response body when data is empty to diagnose provider-side soft failures","Monitor provider status pages and disable the route during known incidents"],"tags":["external-provider","image-generation","empty-result","api-contract"],"backgroundTag":"empty-provider-response","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}