Nodes/comfyui-stillfront/SF WaveSpeed Wan 2.5 Text to Image
ComfyUI Node

SF WaveSpeed Wan 2.5 Text to Image

Wan 2.5 text-to-image over the API, straight into your graph as a tensor

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed Wan 2.5 Text to Image
  • client
  • output_image
prompt
size1024*1024
negative_prompt
enable_prompt_expansionfalse
seed-1
enable_sync_modefalse

Wan 2.5 is one of those models you can't just download - Alibaba froze the open Wan line at 2.2 and took 2.5+ behind an API. So if you want Wan 2.5's image quality without hunting down a leaked checkpoint that doesn't exist, this node is the honest route: it calls the model where it lives, on WaveSpeed's servers, and drops the result into your ComfyUI graph as a proper image tensor.

The pack's video nodes all hand you a URL string and call it a day. This one is different - it fetches the image the API returns and converts it to a real IMAGE tensor, so it plugs straight into a Save Image node, an upscaler, a VAE encode, whatever your workflow needs next. For a text-to-image node that's the right call, and it makes this the easiest node in the pack to actually complete a workflow with.

How it works

Wire an SF WaveSpeed Client into client, write your prompt, and the node POSTs to /api/v3/alibaba/wan-2.5/text-to-image, then polls until the image is ready. When it lands, the node downloads it and converts it locally to an IMAGE tensor - that's the output_image output you wire onward. No local model weights, no VRAM; the only "local" work is the final fetch-and-convert step.

The inputs that matter

  • prompt - the description. This is the whole creative input.
  • size - a plain string in width*height format, defaulting to 1024*1024. The API keeps each dimension in the 768–1440 range, so don't ask for 3000px wide; it'll be rejected or clamped.
  • negative_prompt - what to avoid; leave blank if you're not fighting something specific.
  • enable_prompt_expansion - off by default. Flip it on and the API expands/enhances your prompt before generating. Handy if you're lazy with prompts, but it means what you wrote isn't quite what ran.
  • seed and enable_sync_mode - seed -1 for random, and sync mode just changes the API path; the node waits for the result either way.

Output: output_image, an IMAGE tensor.

Installing it

ComfyUI Manager, search comfyui-stillfront, install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/comfyui-stillfront.git
cd comfyui-stillfront
pip install -r requirements.txt

You'll need a WaveSpeed API key from wavespeed.ai: paste it into config.ini (copy config.ini.tmp to config.ini first), set WAVESPEED_API_KEY, or type it into the SF WaveSpeed Client's api_key widget. Note the README's clone URL still says stillfront/... - that's outdated; the repo lives at razvanmatei-sf/comfyui-stillfront.

Where people get burned

This node's helper code imports PyAV (av) and the comfy_api package at load time, and neither is in the pack's requirements.txt. If the node is missing and your console shows Failed to load wavespeed_wan25_text_to_image, that's the cause - pip install av (plus comfyui-api if it's still complaining) sorts it. The URL-output nodes in the pack don't hit this code path.

Beyond that, the usual service gotchas apply: it's pay-per-generation, a bad key throws Unauthorized immediately, and the size string must respect the API's 768–1440 range per dimension. Test small, then spend on the big render.

CategoryStillfront/WaveSpeed

Inputs (7)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGText description for image generation
sizeoptSTRING1024*1024Image resolution (width*height). Range: 768~1440 pixels per dimension
negative_promptoptSTRINGDescribe what you don't want in the image
enable_prompt_expansionoptBOOLEANfalseAutomatically expand and enhance the prompt
seedoptINT-1-1–2147483647Random seed for reproducible results. -1 for random seed
enable_sync_modeoptBOOLEANfalseWait for generation to complete before returning

Outputs (1)

NameTypeDescription
output_imageIMAGE