Wan2.1 VACE Control Video - After
Wan2.1 VACE Control Video - Before

Wan2.1 VACE Control Video is a guided video-to-video workflow that preserves the motion and timing of a source video while restyling or re-characterizing it with a text prompt and a reference image. It loads Wan2.1 VACE checkpoints (1.3B or 14B) via UNETLoader and VAELoader, encodes your text with CLIPTextEncode, and conditions generation with control signals derived from simple image preprocessing (Canny by default). GetVideoComponents reads frames and FPS from the input clip, and TrimVideoLatent keeps the latent sequence aligned with your chosen frame range and resolution before sampling.

Under the hood, ModelSamplingSD3 configures the expected sampler schedule for Wan2.1 VACE, and KSampler performs denoising on a sequence of video latents assembled by WanVaceToVideo using your control video, prompt, and reference image. VAEDecode converts the final latents back to frames, CreateVideo assembles them at the desired FPS, and you can export either MP4 (SaveVideo) or animated WebP (SaveAnimatedWEBP). An optional CausVid LoRA (LoraLoader) can accelerate or stabilize motion with very low steps, though you may need to tune its strength. The 14B model yields higher fidelity (and supports 720p) but runs slower and uses more VRAM; the 1.3B variant is faster and suited to 480p outputs.

API

Use this workflow from code

Every Comfy workflow is a JSON graph. The payload below is this workflow, exactly as ComfyUI runs it — fetch it from the URL, keep it in version control, or load it in ComfyUI and run it node by node.

GET https://comfy.org/workflows/download/2652985596d8.json
Fetching workflow JSON…

Run it from Python or TypeScript with the Comfy SDK. The same code targets Comfy Cloud or a ComfyUI you host yourself — only the base URL changes.

# Install (beta)
pip install comfy-sdk        # Python
npm i @comfyorg/sdk          # TypeScript

# Run "Wan2.1 VACE Control Video" (Python)
from comfy_sdk import Comfy

client = Comfy(api_key="comfyui-...")

# This workflow, exported in API format (see note below)
wf = client.workflows.from_file("video_wan_vace_14B_v2v_api.json")

asset = client.assets.from_file("input.png")
wf.set_input("134", "image", asset)  # LoadImage

wf.set_input("6", "text", "your prompt here")  # CLIPTextEncode

job = client.run(wf)
for output in job.get_outputs("70"):  # SaveAnimatedWEBP
    output.to_file(output.name)

The SDK takes a workflow in API format: open this workflow in ComfyUI and use File → Export Workflow (API). API access requires a Comfy Cloud plan with an API key. SDK docs · Get an API key

FAQ

Frequently Asked Questions

View all workflows
Character
Cinematic
Image to Video
Lip Sync
Multiple Angles
Portrait
Style Reference
Style Transfer
Text to Video
Video Generation
Video
Showing 30 of 30 templates