Seedream Generate Image (Ace Data Cloud)
Pick the model first, everything else follows
- status
- task_id
- media_urls_json
- first_media_url
- result_json
- trace_id
Some jobs your GPU simply can't do. Not because of VRAM - because the model was never released. Seedream is ByteDance's image line and it's API-only, permanently: ByteDance ships components open (Depth Anything, PuLID, SDXL-Lightning, Bernini) and keeps every product behind an API. So if you want its prompt adherence and text rendering inside a Comfy graph, a node like this is the only door. Generate Image is that door, and it needs no GPU, no checkpoint, and no disk space - just credits.
The upside is real: people reach for Seedream specifically for consistent subjects from a single reference image and for typography that local checkpoints still fumble. The tradeoffs are the standard ones for this category - per-call metering, inputs leaving your machine, and a content filter you can't strip out because there are no weights to edit. Use it for what local can't do, not as a default.
The mechanism, briefly
You type a prompt, the node builds a request body from its widgets, validates that body against a local copy of the published API contract, and posts it. Validation happens before anything goes out, so a nonsense size or a Pro/Lite-only setting fails instantly and free instead of as a paid error. Paid submissions are sent without retries: one attempt, and if the connection dies you get an error plus whatever task ID was accepted. That's a feature - you don't want a dropped socket silently generating a second billed image.
Prompts and reference URLs come back as a task, not as pixels.
The one input that decides everything
model. Four fixed IDs: doubao-seedream-5-0-pro-260628, doubao-seedream-5-0-lite-260128, doubao-seedream-4-0-250828, doubao-seedream-4-5-251128. The default is the sentinel (from JSON/default); the API's own default is the 5.0 Lite at 2K.
Which one you pick constrains the rest of the node, and this is where people waste a run:
- 5.0 Pro - quality-first. Sizes
1K,1.5K,2K. Accepts reference images (up to 10) alongside the prompt, and is the only model allowed to do layer decomposition or background control. No sequential generation, no web search. - 5.0 Lite - the workhorse, and the only model that supports
sequential_image_generation: auto(withsequential_image_generation_options, a JSON object like{"max_images": 4}, 1–15 images) and thetoolsweb-search option. Sizes2K,3K,4K, or explicitWxH. - 4.0 / 4.5 - plain text-to-image with a
prompt. Everything else in the widget list -layer_decomposition,background,output_format,tools- is refused.
prompt is a multiline string and for text-to-image it's the whole input. image is there too, as a URL string or a JSON array of URLs: that's your image-guided generation path, and it's why this node overlaps with Edit Image rather than being strictly text-to-image.
Everything else is the pack-wide override rule: size, watermark, output_format, sequential_image_generation, sequential_image_generation_options, tools, optimize_prompt_options, callback_url, plus the freeform parameters_json - leave a widget empty and it's omitted from the request; fill it in and it wins over the matching JSON field.
Outputs and wiring
Six STRINGs: status, task_id, media_urls_json, first_media_url, result_json, trace_id. On a fresh submission you'll usually see status come back pending with empty URLs - that's normal and expected. Take task_id, run Seedream Retrieve Task with it, and once the status reads succeeded, send first_media_url into Seedream Load Image to get an IMAGE (or parse media_urls_json for all of a sequential batch). result_json is the normalized response with request internals and token-ish fields stripped, so it's the safe field to print or log.
A pattern worth stealing: generate the frame here, then upscale and detail it locally.
Installing
ComfyUI Manager: search Seedream, confirm publisher acedatacloud and package Seedream by Ace Data Cloud, install, restart.
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/SeedreamComfyUI
cd SeedreamComfyUI && python -m pip install -r requirements.txt
Then ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) into the ComfyUI process environment, restart. Requirements are just requests and jsonschema; there's no model to download and no ComfyUI version drama beyond the native-loader note in the README.
Common issues
Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart. - the env var exists in your shell but not in whatever launched ComfyUI. Set it for the process, restart the app.
Sequential generation and web search require a supporting Lite model. - you asked for multi-image output or the web-search tool on Pro. Switch model to a 5.0 Lite.
Layer decomposition and background control require Seedream 5.0 Pro. - the mirror image of that, and the reason a 4.x model refuses both outright.
Pending forever - you're looking at a submission, not a result. Use the retrieve node. And if a run errored on a connection failure, resist the urge to hit Queue again: the accepted task_id was probably printed, and re-submitting is paying twice for the same picture.
Last caveat, since this is the pack's flagship node: Ace Data Cloud is a reseller with essentially no community footprint, so there's no crowd-sourced reliability record here the way there is for the official Partner Nodes. The registry path exists and the publisher is verifiable, but a key-holding, network-calling pack is exactly the shape of thing that got weaponized in this ecosystem once already.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| parameters_json | STRING | {} | — |
| model | COMBO | (from JSON/default) | 5 options: (from JSON/default), doubao-seedream-5-0-pro-260628, doubao-seedream-5-0-lite-260128, doubao-seedream-4-0-250828, doubao-seedream-4-5-251128 |
| prompt | STRING | — | |
| image | STRING | — | |
| size | STRING | — | |
| sequential_image_generation | STRING | — | |
| sequential_image_generation_options | STRING | — | |
| watermark | STRING | — | |
| output_format | STRING | — | |
| tools | STRING | — | |
| optimize_prompt_options | STRING | — | |
| callback_url | STRING | — | |
| layer_decomposition | STRING | — | |
| background | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| task_id | STRING | — |
| media_urls_json | STRING | — |
| first_media_url | STRING | — |
| result_json | STRING | — |
| trace_id | STRING | — |