Wan 2.6 - Video to Video
Hand it footage and say what should change
- video_1
- video_2
- video_3
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
The interesting thing about 2026's video editing models is that masking and ControlNet preprocessors have quietly become optional. You stop building a mask, you stop extracting poses, and you type an instruction instead. Wan 2.6's video-to-video endpoint is the closed-weight route to that; the open-weight route is Bernini or VACE, and those cost you serious GPU time - Bernini editing runs roughly double an equivalent generation because your source clip joins the model's input sequence.
So: reach for this when you want a change without a pipeline, and accept that the footage leaves your machine.
How it works
prompt is required - that's your edit instruction. video_1, video_2, video_3 are optional VIDEO sockets (the pack's native-socket translation of KIE's plural video reference array: VIDEO and AUDIO have no universal batch socket in ComfyUI, so you get numbered inputs instead of a JSON URL list). duration is 5 or 10, resolution is 1080p or 720p, multi_shots switches between one continuous take and a cut-together sequence.
Each connected clip is written to a temp MP4, uploaded to KIE, and submitted to /api/v1/jobs/createTask with model wan/2-6-video-to-video. The node polls /api/v1/jobs/recordInfo until the task finishes, downloads the result to ComfyUI/output/KIE-Results/videos, and emits a native VIDEO.
Inputs that matter
prompt- write the change, not a caption. The shipped default reads "The video drinks milk tea while doing some improvised dance" - that's the register the model expects.video_1- normally the only socket you need. The other two are for multi-clip references.duration-5or10seconds of output.resolution-1080pby default;720pwhen you're still deciding.
Standard extras: nsfw_checker (off), timeout_seconds (1200), callback_url (leave empty). And no seed socket, so an individual edit isn't reproducible by number.
Outputs
video for saving, previewing, or feeding another edit in the chain. url and all_urls_json keep the hosted links, task_id traces the job, raw_json is the full response, and credits_consumed / credits_left report the cost - mirrored as a printed receipt on the node after every run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next && pip install -r requirements.txt
Restart ComfyUI. The pack ships no model files - the wrapper is requests, Pillow, numpy, PyYAML, and the models live on KIE's servers. Nodes are generated from KIE's live API catalog on startup, so this one appears under KIE Next / Video / Wan.
Key, once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated before overwriting a working saved key; you get ✅ CONNECTED and a masked fingerprint; the full key never enters workflow JSON. Servers can set KIE_API_KEY, which wins over the stored key. KIE is pay-as-you-go credits - no subscription, and it's a reseller marketplace, so the same key reaches every model on their list.
Common issues
The edit is too subtle, or too broad. V2V instruction-following is prompt-sensitive and there's no strength dial on this node - you can't dial a denoise value like you would on a local img2img. Rewrite the instruction; that's your only lever.
Source video rejected. Odd codecs or ancient containers sometimes fail upload. Re-encode to a plain H.264 MP4 first.
Timeout. Default 1200 seconds. Editing jobs queue alongside generations; raise it.
Nothing renders. Not an output node - attach a preview or save.
comfy_api.latest.InputImpl.VideoFromFile errors. Update ComfyUI; native in/out video objects need a current build of both directions here, since this node uploads one.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The video drinks milk tea while doing some improvised dance moves to the music. | Text prompts for video generation. Supports both Chinese and English, with a minimum of 2 characters and a maximum of 5,000 characters. (Max length: 5000 characters) |
| video_1opt | VIDEO | — | |
| video_2opt | VIDEO | — | |
| video_3opt | VIDEO | — | |
| durationopt | COMBO | 5 | The duration of the generated video in seconds |
| resolutionopt | COMBO | 1080p | Video resolution tier |
| multi_shotsopt | BOOLEAN | false | The multi shots parameter controls the shot composition style during AI video generation, determining whether the generated video is a single continuous shot or multiple shots with transitions. |
| nsfw_checkeropt | BOOLEAN | false | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |