WaveSpeedAI Bytedance Seedream V4 Edit
Seedream V4 editing at up to 4096x4096 — ByteDance's flagship, via API
- client
- output_image
ByteDance's whole Seedream line is an API product - no weights, ever, no local version, not a rumor of one. If you want Seedream's edit quality, you rent it, and this node is the rental contract in ComfyUI form. What makes it worth a look is the resolution ceiling: the size presets run up to 4096x4096, which is a scale most local open editors can't reach without tiling. For big-canvas edits where detail density matters, that's the entire pitch.
What it is
A hosted wrapper around ByteDance's Seedream V4 image editor. Give it a prompt, an image_url, and a size_preset, and it returns the edited image as an IMAGE tensor. The preset list is nine deep, from 2048x2048 (1:1) through 2560x1440 (16:9) and 3024x1296 (21:9) up to the flagship 4096x4096. Note the seed behavior here: default is 0, and the node treats 0 as "random" - pass a nonzero seed for reproducible edits.
How it works
The client comes from the WaveSpeedAI Client node. The node maps your chosen preset to an explicit width*height string, POSTs {images, prompt, size} to the Seedream edit endpoint, and fetches the returned image URL back as an IMAGE tensor. enable_sync_mode defaults to off here - unusual for the pack's image nodes - so by default it submits and polls up to five minutes. If you want it to block and return, flip it on.
The inputs that matter
- prompt - the edit to apply, described plainly.
- image_url - the source image as a public URL.
- size_preset - where the node earns its keep. 4096x4096 is the headline; 21:9 is useful for wide banners.
- seed - 0 means random (default); set a real number to reproduce.
- enable_sync_mode - off by default; turn on for a blocking call.
Output name is output_image, type IMAGE.
Install & setup
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
or ComfyUI Manager → "razv-wavespeed" → Install, restart. API key from wavespeed.ai in config.ini (from config.ini.tmp), the Client node, or WAVESPEED_API_KEY. Deps: requests, pillow, numpy<2.0.0, torch.
Common issues
- Sync mode surprises - if you expected the node to return instantly and it doesn't, you've got the default async behavior; enable_sync_mode is off. Conversely, in async the node still blocks while polling, so don't expect queue-parallel behavior.
- Huge output, small VRAM - a 4096x4096 result becomes a large tensor when fetched back. If ComfyUI chokes downstream, downscale before further processing.
- "No output received" - unreachable image URL or task timeout.
- 401 - key issue.
Reach for this node when you genuinely need Seedream's quality or its resolution headroom - the 4096 preset has no serious open local equivalent without heavy tiling. If your edits fit in 2048 or below, the open Qwen-Edit route (or this pack's own Qwen nodes) is cheaper and unrestricted. Seedream is the "when it has to be big and it has to be good" button.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Description of the image editing you want to apply | |
| image_url | STRING | URL of input image (connect from Upload Image node) | |
| size_preset | COMBO | 2048x2048 (1:1) | Resolution preset for the generated image |
| seed | INT | 00–18446744073709550000 | Random seed for reproducible results |
| enable_sync_mode | BOOLEAN | false | Wait for generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |