Seedream 4.0 · Text to Image
One prompt, sixteen exact sizes, one flat rate
- images
- task id
This is a two-widget node: a prompt and a size. That's it. Seedream 4.0 is a closed ByteDance image model, so there's no checkpoint to download and no sampler to tune - you type a sentence, pick 2048*2048 or one of fifteen other exact resolutions, and get an image back for $0.03.
Can an API image node do work a local model can't? Usually no. Here, mostly the answer is "it does it in one prompt with no LoRA stack and no negative-prompt archaeology." Seedream 4.0 was the closed model people rated above Nano Banana when it landed in September 2025, and the honest framing is that you're buying prompt adherence and a big clean frame, not control. You get no seed, no negative prompt, no CFG, no step count. If you want to steer, you steer with words.
How it works
The node packages your prompt and the size preset, requests a price quote, submits the job to api.spicyapi.ai, and polls until the render is done. The result comes back as an ordinary ComfyUI IMAGE, so everything downstream - upscaling, masking, compositing, saving - behaves as if your own card had drawn it. Nothing runs locally; there's no VRAM cost and no model load time, but there is a network round trip and a per-image charge.
Inputs and outputs
prompt- describe subject, composition, style and lighting. The endpoint is uncensored, so the limits here are yours, not a filter's.size- one of sixteenwidth*heightpresets, starting at1024*1024and going up to4096*2304. This is the interesting field. ByteDance prices the whole ladder the same, so the large presets are where the per-image cost earns its keep, and picking a fixed preset is how you make a set of images that actually tile together.- Output
imagesis theIMAGEto wire into Save Image or your next stage; outputtask idis aSTRINGyou can ignore unless you're asking support to trace a specific run.
There is no seed input on this node. Same graph twice is not guaranteed to give you the same picture, so treat a good result as a keeper rather than something you go back and re-roll.
Install
Nothing to compile, nothing to download - this is a thin client for a hosted model.
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI (or export SPICY_API_KEY on a server), restart once more. The pack also installs through ComfyUI Manager: search SpicyAPI. Search the canvas for seedream and you'll see all four Seedream 4.0 and 5.0 variants, so check which one you grabbed - the 4.0 pair is the preset-size pair.
Costs and the mistake everyone makes once
$0.03 per image, quoted before the run and printed after it. The trap isn't the price, it's the queue button: because every run is billed, the pack sets control after generate to fixed so re-queueing reuses your cached result rather than quietly buying a second image. Change it to randomize deliberately when you want a variation, not by accident. And set Settings > SpicyAPI > Max cost per run - anything quoted above it refuses to submit.
Troubleshooting
No SpicyAPI key is set is the one you'll actually see, and it's literal. If a prompt is rejected with 40004, the combination you asked for isn't deployed - the message names the field to change, and nothing is charged. Missing models in your node list mean a restart, because the catalogue is rebuilt from your account at startup. Finally, cancelling in ComfyUI stops the wait, not the job: it completes on SpicyAPI's side and gets charged if it succeeds.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the image to generate: subject, composition, style, and lighting. | |
| 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. |