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

SF WaveSpeed Wan 2.5 Image Edit

Wan 2.5 image editing, done by instruction — and it returns a real IMAGE

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed Wan 2.5 Image Edit
  • client
  • output_image
prompt
image_1
size1024x1024 (1:1)
seed-1
enable_sync_modetrue
image_2
custom_width1024
custom_height1024

Here's the thing about Wan 2.5: it doesn't exist locally. Alibaba's 2.5 was a cloud-only preview - the last open Wan is 2.2, and everything after it is API. So when you see "Wan 2.5" in a ComfyUI graph, someone's doing a remote call, and that someone is WaveSpeed (it was the first platform to host Wan 2.5, per community chatter). This node is the editing end of that deal: you describe the change, give it one or two images, and get back an edited image.

The mechanic is instruction-style editing - "change the sky to sunset" or "make the car red" - no masks, no ControlNet, no inpainting scaffolding. The model preserves layout and subject structure while implementing the update. That's the whole pitch, and for quick alterations it's a lot less fiddly than building a local edit pipeline.

How it works

Same pack anatomy: an SF WaveSpeed Client wired into client. The node POSTs your prompt plus up to two image URLs to /api/v3/alibaba/wan-2.5/image-edit, polls until done, then - and this is the difference from the pack's video nodes - fetches the returned image URL and converts it to a real ComfyUI IMAGE tensor locally. So this one actually produces a tensor you can wire into a Save Image node, an upscaler, or anything downstream that expects an image. Most of the pack's other nodes hand you a URL string; this one hands you something ComfyUI-native.

The inputs that matter

  • image_1 - the required input image URL. This is what gets edited.
  • image_2 - optional second image, for multi-image editing jobs.
  • prompt - the instruction. Say what to change, keep it specific.
  • size - eleven presets from 1024x1024 up to HD (16:9/9:16/4:3 variants), plus Custom. Pick "Custom" and the custom_width/custom_height sliders take over (384–5000px, step 8).
  • seed, enable_sync_mode - standard; sync mode defaults to on here.

Output is output_image (an IMAGE tensor). No negative_prompt on this one - the info_schema doesn't have it, so don't go looking.

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

Grab a WaveSpeed key from wavespeed.ai and set it via config.ini (copy config.ini.tmp first), the WAVESPEED_API_KEY env var, or the SF WaveSpeed Client's api_key widget. The README's stillfront/... clone URL is stale - the repo is razvanmatei-sf/comfyui-stillfront.

Where people get burned

Two gotchas, and they're both pack-wide but hit this node hardest.

First, the image inputs are URL strings, not IMAGE tensors - a stock Load Image node won't connect; you need an upload-style node that produces URLs. Yes, it's a bit odd that the input side expects URLs while the output side gives you a tensor. That's just how the pack is built.

Second, this node (and the Wan 2.5 text-to-image node) pulls in a helper that imports PyAV (av) and the comfy_api package at load time - dependencies that aren't in the pack's requirements.txt. If the node doesn't show up and your ComfyUI console prints Failed to load wavespeed_wan25_image_edit, that's why; pip install av (and comfyui-api if needed) fixes it. The video nodes don't touch that code path, so they load fine without it.

CategoryStillfront/WaveSpeed

Inputs (9)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGPositive prompt describing desired adjustments to the image
image_1STRINGFirst input image URL (required - connect from Upload Image node)
sizeCOMBO1024x1024 (1:1)The output resolution and aspect ratio
seedINT-1-1–2147483647Random seed for reproducible results. -1 for random seed
enable_sync_modeBOOLEANtrueWait for generation to complete before returning
image_2optSTRINGSecond input image URL (optional - for multi-image editing)
custom_widthoptINT1024384–5000Custom width (384-5000px, used when Custom is selected)
custom_heightoptINT1024384–5000Custom height (384-5000px, used when Custom is selected)

Outputs (1)

NameTypeDescription
output_imageIMAGE