Seedream4.5 - Edit
Fix the Frame Instead of Rolling the Dice Again
- image_urls
- image
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
The pitch, and it's the right one
Here's the workflow everyone actually runs, whether they admit it or not: generate something, get an image that's 90% there, then reroll the whole prompt hoping to keep the good 90% and fix the broken 10%. Most of the time you trade one problem for another.
Seedream's edit endpoint is built around refusing that trade. You hand it the image and a sentence describing the change, and it modifies that part. It's the same instruction-editing move that made Qwen-Image-Edit the community default - the model looks at the reference while working instead of re-inventing it - packaged as a hosted ByteDance endpoint. For a product shot where the label text is wrong, or a still where the outfit is wrong, this is a far more efficient use of credits than another generation.
ByteDance is the vendor that keeps its generation products API-only: Seedream and Seedance have no weights, ever. So unlike Qwen, where you could run the open model locally and skip this node entirely, there's no local alternative to call out. If you want Seedream, you call Seedream.
Inputs
Two required text-ish fields and two required dropdowns - note that all four are required here, which is unusual in this pack:
- prompt - the edit instruction, up to 3000 characters. The stock default is a real example of the genre ("keep the model's pose and the flowing shape of the liquid dress unchanged; change the clothing material…"), which is a good template for how specific these instructions want to be. Say what must not change.
- image_urls - the reference, on a native
IMAGEsocket. It's a batch socket, so a multi-image input is possible; keep it small and deliberate. - aspect_ratio - a required enum starting at 1:1. Required means ComfyUI will make you pick, which is a small mercy: output ratio is the most common reason an edit "came back wrong."
- quality -
basicoutputs 2K,highoutputs 4K, per the tooltip. That's the price dial.
Optional: nsfw_checker (default True on this node - flip it off knowingly, and remember the tooltip's caveat that filtering "cannot guarantee" anything, so it's backstop, not policy), timeout_seconds (1200 default), and callback_url, which stays empty for normal ComfyUI use.
Outputs: image, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart ComfyUI, then set your KIE key once: Settings → KIE.ai Nodes Next → Connection. The pack validates the key against KIE before replacing anything, shows a masked fingerprint rather than the key, and leaves the secret out of workflow JSON. Requirements are only requests, Pillow, numpy, PyYAML.
What to expect
Edits drift. It's structural to the approach - the model re-emits the frame, so pixels nobody asked about move, and a chain of edits accumulates the error. The community fix is a mask: crop to the region, run the edit on the crop, stitch it back. You can do exactly that here since this node just takes and returns images, and if identity matters, that's the workflow I'd use rather than trusting one pass.
Also: quality=high at 4K is where per-image cost stops being pocket change. Iterate at basic, and don't run the 4K pass until the composition is settled. The node tells you credits spent and the remaining balance on itself after each call, so a bad habit shows up immediately rather than at the end of the month.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Keep the model's pose and the flowing shape of the liquid dress unchanged. Change the clothing material from silver metal to completely transparent clear water (or glass). Through the liquid water, the model's skin details are visible. Lighting changes from reflection to refraction. | A text description of the image you want to generate (Max length: 3000 characters) |
| image_urls | IMAGE | — | |
| aspect_ratio | COMBO | 1:1 | Width-height ratio of the image, determining its visual form. |
| quality | COMBO | basic | Basic outputs 2K images, while High outputs 4K images. |
| nsfw_checkeropt | BOOLEAN | true | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |