Seedream Edit Image (Ace Data Cloud)
Change one thing, keep the picture
- status
- task_id
- media_urls_json
- first_media_url
- result_json
- trace_id
The reason people put Seedream in a Comfy graph rather than a browser tab is consistency: hand it one reference image and it comes back with the same subject, same framing, different instruction. That's the trick that made threads like "is ComfyUI dead now that you can do this with Seedream" happen at all. Edit Image is the node in this pack for that move - reference in, prompt in, edited image out.
It's a reseller wrapper, and worth being honest about what that means. Seedream is ByteDance's, closed, API-only; ByteDance ships its components open - Depth Anything, PuLID, SDXL-Lightning, Bernini - and keeps every Seedream product behind an API. So there was never going to be a local Seedream checkpoint to download. This node calls Ace Data Cloud's hosted endpoint with a key you provide. No model file, no VRAM, per-call credits.
What happens when you hit run
The node assembles one JSON body from its widgets, validates it with jsonschema against a copy of the published API contract - before anything leaves your machine - and posts to the image endpoint. Because the contract check is local, most of the frustrating failures cost nothing: a bad model/size combination raises immediately instead of burning a credit and failing at the server.
Paid image submissions in this pack are also deliberately never retried. If the connection drops mid-request, you get an error, not a second charge. The accepted task ID comes back in task_id, which is your receipt - keep it.
Inputs that matter
model- one of 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), which lets the API pick - the API's default isdoubao-seedream-5-0-lite-260128. Pick Pro when you need layer decomposition or background control; pick Lite when you want 3K/4K, sequential generation or the web-search tool.prompt(STRING) - required for any edit, by the contract. If it's empty the package says so: "A prompt is required."image(STRING) - the reference image, again as a URL, not a file path, because this pack never uploads anything. One string, or a JSON array string like["https://…/a.png", "https://…/b.png"]for multiple references. Pro accepts up to 10.size-1K,1.5K,2K,3K,4K,auto, or explicitWxH. The model gates which values are legal: Pro tops out at 2K here, Lite is 2K–4K.layer_decompositionandbackground- both Pro-only.background: transparentforcesoutput_formattopngfor you, and the two can't be combined.
The rest - watermark, output_format, sequential_image_generation, sequential_image_generation_options, tools, optimize_prompt_options, callback_url, parameters_json - are the same named-override pattern every tool node in the pack uses: empty means omit, non-empty overrides the matching key in parameters_json.
Outputs
status, task_id, media_urls_json, first_media_url, result_json, trace_id. Feed first_media_url into Seedream Load Image when the status is succeeded; parse media_urls_json if you asked for more than one image. result_json is the full normalized response with request internals and credential-ish fields stripped out, so it's safe to print.
Installing
ComfyUI Manager is the documented route: search Seedream, confirm publisher acedatacloud and package Seedream by Ace Data Cloud, install, restart. Manual, from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/SeedreamComfyUI
cd SeedreamComfyUI && python -m pip install -r requirements.txt
Then put the credential where the pack expects it - ACEDATACLOUD_API_KEY or ACEDATACLOUD_API_TOKEN in the ComfyUI process environment - and restart ComfyUI. Two dependencies total (requests, jsonschema); that's the whole install.
Where it bites
Gated combinations, mostly. sequential_image_generation: auto and the web-search tool only work on Lite - the package's own message is "Sequential generation and web search require a supporting Lite model." Conversely, editing with background or layer_decomposition on anything but Pro fails with a message naming the Pro requirement. And the 4.0/4.5 models accept none of those extras at all.
The other one is your reference URL. Since nothing in this pack uploads a local file, you need the image already reachable over HTTPS. A URL that your browser can open but the service can't reach is indistinguishable from a broken image until you get the error back.
Finally, the mandatory caution for this category: an API node is code that holds your key and reaches the network by design, installed with your user's full access, and that's the exact shape of the one pack that got weaponized in this ecosystem. Ace Data Cloud has no meaningful discussion history to lean on, so treat a fresh install the way you'd treat any new pack - check the publisher in Manager, keep the key in the environment, never in workflow JSON, and never in a screenshot.
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 | — |