Nodes/KIE.ai Nodes Next/Wan 2.7 - Image to Video
ComfyUI Node

Wan 2.7 - Image to Video

First frame in, driving audio optional, 15 seconds max

By felipederosilva·Created about a month ago·Updated a day ago· 3
Wan 2.7 - Image to Video
  • first_frame_url
  • last_frame_url
  • driving_audio_url
  • video
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄prompt►
◄negative_prompt►
◄first_clip_url►
◄resolution1080p►
◄duration5►
◄prompt_extendtrue►
◄watermarkfalse►
◄seed0►
◄nsfw_checkerfalse►
◄timeout_seconds1200►
◄callback_url►

Wan 2.7 is the April 2026 closed-weight release, and the community's reaction was closer to a shrug than a verdict - a few loud "2.2 looks better than this" comments from people who couldn't run either, and one paid-API comparison that found 2.7 cleanest on fine detail but prone to pose discontinuity when the subject moves hard. Which is the useful thing to carry in here: this node is good at static and slow-pan work, and it's the wrong tool for a fight scene.

What it gives you that the 2.2-era nodes can't: first and last frame, a first-clip continuation input, an audio socket that drives the video, and durations up to 15 seconds.

How it works

prompt is required (empty by default, which it will accept but shouldn't), as is first_frame_url - your IMAGE anchor. Optionals: last_frame_url (IMAGE), first_clip_url (a STRING, the URL of a clip to continue from), driving_audio_url (AUDIO), negative_prompt, resolution, duration, prompt_extend, watermark, seed, plus the pack's nsfw_checker / timeout_seconds / callback_url.

Connected images and audio are uploaded to KIE for you; then the node posts to /api/v1/jobs/createTask with model wan/2-7-image-to-video, polls /api/v1/jobs/recordInfo until the job resolves, downloads the MP4 into ComfyUI/output/KIE-Results/videos, and returns a native VIDEO.

Inputs that matter

  • first_frame_url - the frame the clip starts from. This is the whole consistency strategy; get it right.
  • last_frame_url - optional end pose. Use it when you need the clip to land somewhere specific, e.g. chaining into the next shot.
  • prompt - up to 5000 characters of motion and camera description.
  • driving_audio_url - an AUDIO socket, which is unusual and genuinely useful: audio-driven performance, not just sound.
  • duration - an integer, 2 to 15 seconds, default 5.
  • resolution - 1080p default, 720p cheaper.
  • prompt_extend - on by default. Rewrites short prompts into richer ones; turn it off when you wrote the shot you meant.
  • seed (0-2147483647), watermark (off), negative_prompt (500 characters max).

Outputs

video for saving, previewing, or chaining. url / all_urls_json for hosted artefacts, task_id for tracking, raw_json for the full response, and credits_consumed / credits_left for the cost - visible on the node as a receipt after each run. Long clips at 1080p are the expensive combination, so that receipt is worth watching.

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 is a pure client - requests, Pillow, numpy, PyYAML - and the model nodes are generated at startup from KIE's live catalog, so you'll find this under KIE Next / Video / Wan alongside the rest of the family.

Key once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. Validated before it replaces an existing key; you get ✅ CONNECTED plus a masked fingerprint, and the full key stays off the frontend and out of workflow JSON. KIE_API_KEY in the environment covers headless installs and takes priority. KIE bills pre-paid credits with no subscription.

Common issues

Pose discontinuity on fast motion. Documented in the one independent 2.7 comparison the community ran: fine detail holds up, heavy character movement doesn't. Prefer slower coverage, or add the last_frame_url to constrain where the motion lands.

Your prompt got rewritten. prompt_extend defaults on. Turn it off and retry with the same seed.

first_clip_url expects a URL, not a socket. It's a STRING. If you want to chain locally, use the API-driven path instead of that field.

Timeout. Default 1200 seconds; a 15-second 1080p job can outlast it. Raise the value rather than cancelling.

Nothing in the UI. Not an output node - attach a save or preview.

comfy_api.latest.InputImpl.VideoFromFile error. Update ComfyUI; the native VIDEO object needs a current build.

CategoryKIE Next/Video/Wan

Inputs (14)

NameTypeDefaultDescription
promptSTRINGPositive prompt. Maximum length: 5000 characters.
first_frame_urlIMAGE—
negative_promptoptSTRINGNegative prompt. Maximum length: 500 characters.
last_frame_urloptIMAGE—
first_clip_urloptSTRINGFirst clip video URL, used for video continuation.
driving_audio_urloptAUDIO—
resolutionoptCOMBO1080pVideo resolution. - `720p`: 720p - `1080p`: 1080p
durationoptINT52–15Total output video duration in seconds. - Minimum: `2` - Maximum: `15` - Default: `5`
prompt_extendoptBOOLEANtrueWhether to enable intelligent prompt rewriting. Default value: `true`.
watermarkoptBOOLEANfalseWhether to add an AI-generated watermark. Default value: `false`.
seedoptINT00–2147483647Random seed. - Minimum: `0` - Maximum: `2147483647`
nsfw_checkeroptBOOLEANfalseDefaults 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_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
videoVIDEO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—