Nodes/ComfyUI Razv WaveSpeed Nodes/WaveSpeedAI ByteDance Seedream V4
ComfyUI Node

WaveSpeedAI ByteDance Seedream V4

Seedream 4.0 at up to 4096×4096, without hunting down an API script

By razvanmatei-sf·Created 12 months ago·Updated 9 months ago· 0
WaveSpeedAI ByteDance Seedream V4
  • client
  • output_image
prompt
size_preset2048x2048 (1:1)
seed0
enable_sync_modefalse

ByteDance's Seedream has been quietly excellent at the one thing most image models still fumble: native resolution and text. Seedream 4.0 (the "V4" here) renders clean, readable lettering and holds detail at sizes that would melt a consumer GPU - up to 4096×4096 in this node's preset list. The catch is there are no open weights, so the only way to use it is through a host. This node is that host, dropped into ComfyUI as a text-to-image node from the razvanmatei-sf/razv-wavespeed pack.

Plainly: it's a paid API call, not local generation. You need a WaveSpeed AI key, and every image is billed. What you get in exchange is a node that behaves like the rest of your graph - real IMAGE output you can feed straight into SaveImage - instead of a screenshot of a web demo.

How it works

Wire a WaveSpeedAI Client node into client, type a prompt, pick a preset, and the node POSTs to the /api/v3/bytedance/seedream-v4 endpoint. In async mode (the default here) it grabs a task ID and polls every half-second until the image is done; sync mode waits on the response directly. Output URLs come back and are converted to a torch IMAGE tensor, so output_image plugs into anything that expects an image - preview, save, upscale, you name it.

The resolution list is the star. Nine presets cover everything from square to ultrawide: 2048x2048 (1:1) is the default, and it runs up to 4096x4096 (1:1). There's also 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, and 21:9. You don't get a custom-size box like some nodes here - you work within the presets, and honestly that's a feature: Seedream is tuned around these.

The inputs that matter

  • prompt - the image description. This is a model that takes detail well; be specific about composition, not just subject.
  • size_preset - the nine resolutions above. Default 2048x2048 (1:1).
  • seed - and here's a subtle trap: 0 means random for this API, not -1. The tooltip says seed 0 is the default and the field only gets sent if it's non-zero. So if you set seed to 0 expecting reproducibility, you get the opposite. Pick a real number when you want to lock a result.
  • enable_sync_mode - defaults off. Flip it on to make the node block until the image is ready.

That's the entire input surface. No negative prompt, no guidance slider - Seedream's API handles those on its side. It's the simplest node in the pack and one of the most capable.

Install

Shared pack, one install:

cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed
# restart ComfyUI

Or ComfyUI Manager → search "razv-wavespeed" → Install. Then add a WaveSpeed AI API key: type it into the WaveSpeedAI Client node, copy config.ini.tmpconfig.ini in the pack folder and fill in [API], or set WAVESPEED_API_KEY as an env var.

Common issues

  • It costs money, and 4096×4096 costs more than the rest. The resolution choices are essentially price tiers in disguise; budget accordingly.
  • The seed-0 trap above is the one that'll actually bite you - the pack's other nodes use -1 for random, Seedream uses 0. Read the tooltip.
  • Missing nodes after install: the pack's requirements.txt is bare but the code pulls in av, torchaudio, pydantic, and comfy_api at load time. ComfyUI usually has them; if zero WaveSpeed nodes appear, that's the silent import failure to chase.
  • Queue time on big resolutions is real. Async mode keeps ComfyUI responsive while you wait, which is why it's the default.
CategoryWaveSpeedAI

Inputs (5)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGText description of the image to generate
size_presetCOMBO2048x2048 (1:1)Resolution preset for the generated image
seedINT00–18446744073709550000Random seed for reproducible results
enable_sync_modeBOOLEANfalseWait for generation to complete before returning

Outputs (1)

NameTypeDescription
output_imageIMAGE