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.

video_wan_vace_14B_v2v.json
Fetching workflow JSON…

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

// Install (beta)
npm i @comfyorg/sdk

// Run "Wan2.1 VACE Control Video" (TypeScript)
import { Comfy } from "@comfyorg/sdk";

const client = new Comfy({ apiKey: "comfyui-..." });

// This workflow, exported in API format (see note below)
const wf = await client.workflows.fromFile("video_wan_vace_14B_v2v_api.json");

const asset = client.assets.fromFile("input.png");
wf.setInput("134", "image", asset); // LoadImage

wf.setInput("6", "text", "your prompt here"); // CLIPTextEncode

const job = await client.run(wf);
await job.getOutputs("70")[0].toFile("output.png"); // SaveAnimatedWEBP

The SDK takes a workflow in API format: open this workflow in ComfyUI and use File → Export Workflow (API).

Comfy Cloud API access requires a plan with an API key.

FAQ

Frequently Asked Questions

View all workflows
Showing 30 of 30 templates