Seedream 4.0 · Image Editing
Pick the exact pixels before you describe the change
- image_urls
- images
- task id
Most editing nodes give you a prompt box and hope. This one gives you a dropdown of sixteen exact output sizes - 2048*2048 by default, up to 4096*2304 - and charges the same money whichever you pick. If you're restyling a character sheet and frame 12 has to be the same dimensions as frame 11, that dropdown is the whole reason to reach for it.
Seedream 4.0 arrived in September 2025 and immediately became the closed image model people argued about, usually against Google's Nano Banana. It never shipped weights. That's ByteDance's pattern: every flagship it sells stays on an API, while the components underneath (SDXL-Lightning, PuLID, Depth Anything) go out free. An API node is the only door into this model, and this is the editing door.
What the node actually does
It's an HTTP client wearing a node costume. When you hit Run, the node encodes each connected image to PNG (JPEG, quality 95 down to 85, if it would blow past the 10 MiB upload ceiling), uploads it, asks SpicyAPI for a price quote, and if the quote is inside your limit it submits the job and polls until the result comes back. The returned picture lands on the images output as a normal ComfyUI IMAGE tensor, indistinguishable from something your local sampler made. Your GPU does nothing here.
The inputs that matter
prompt- the instruction. Say what to produce, not just what to remove, and say what must survive.image_urls- one to ten sources, each one its own socket, and order matters because your prompt refers to them in that order. A batch wired into a single socket counts as several images.size- the sixteenwidth*heightpresets. This is the field that makes the node worth using, and the one to set first when you're building a consistent set.
That's the whole node. Two things it deliberately doesn't have: no seed and no strength dial. You cannot lock a variation, and every run is a fresh draw - so save the one you like rather than re-queueing hoping to rediscover it. If repeatability matters more than size control, the Seedream 5.0 nodes carry a seed field and this one doesn't.
Wiring the output
images goes to Save Image, to a preview, or into any local stage you want - an upscaler, a matte, an IPAdapter chain. The second output, task id, is a plain STRING with the SpicyAPI task id; you only touch it when something went wrong and you need support to look up the exact request.
Installing it
One git clone, no dependencies, no weights, no GPU requirement.
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, then open Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys; on a headless server set SPICY_API_KEY instead. Restart once more so the node list is rebuilt from your account. ComfyUI Manager works too - search the pack title, SpicyAPI.
The money part
$0.03 per image here, which is a flat rate: a 4096×2304 edit costs the same as a 1024×1024 one, so use the big preset when the shot deserves it. The node shows its rate, and every run is quoted before it starts. Set Settings > SpicyAPI > Max cost per run and a run quoted above it stops before anything is charged - that's the only hard brake you get, so set it. Note the default seed behaviour is fixed: queueing the same graph twice reuses the first result instead of billing you again.
When it goes wrong
The common ones aren't mysterious. No SpicyAPI key is set means exactly that. An error naming 40004 means no deployment serves the combination you picked - change the option the message names, the request never went out. A model you saw on the site but not in your node menu needs a ComfyUI restart, since the list is built from your account at startup. And cancelling a run only stops you waiting: the job keeps going on SpicyAPI and is charged if it succeeds.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the image to produce from the source: subject, composition, style, and lighting. | |
| image_urls | COMFY_AUTOGROW_V3 | Source images that you are authorised to process. | |
| size | COMBO | 2048*2048 | Output image size in pixels, written as width*height. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |