Wan 2.5 - Image to Video
The first Wan you're allowed to rent, not run
- image_url
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Wan 2.5 is where Alibaba stopped shipping weights. It arrived in September 2025 as a cloud preview with a "open weights coming soon" note attached, and the weights never came - same story for 2.6 and 2.7. So if a search result tells you to download Wan 2.5 and run it locally, that link is fabricated. The only way in is an API, and this node is the KIE-hosted one wrapped for ComfyUI.
Which makes the honest framing simple: this is the Wan you call when you want more than 2.2 without setting up a render farm. Give it a first frame and a motion prompt and it returns a clip, with the quality lift that came after the open base froze.
How it works
Three required inputs: prompt (up to 800 characters - much tighter than the 2.2 nodes, so write dense), image_url as an IMAGE socket, and duration. Optional fields cover resolution, negative prompting, prompt rewriting, seed, and the standard pack-level nsfw_checker / timeout_seconds / callback_url trio.
Mechanically it's the same pattern as every node in this pack: upload the image to KIE, POST to /api/v1/jobs/createTask with marketplace model wan/2-5-image-to-video, poll /api/v1/jobs/recordInfo until the job succeeds or fails, download the MP4 into ComfyUI/output/KIE-Results/videos, hand back a native ComfyUI VIDEO.
Inputs that matter
duration- required, and it's a string enum of5or10. Ten-second clips are priced accordingly.resolution-1080pby default,720pas the cheaper option. This is the main cost lever, and most iteration belongs at 720p.enable_prompt_expansion- on by default here, unlike the 2.2 nodes. Short prompts get rewritten by an LLM. If you've written exactly the shot you want, turn it off.negative_prompt- ships with a useful default (blurry, flicker, camera shake, distorted face, low quality). Leave it unless you're chasing something specific.seed- integer here, unlike the 2.2 turbo nodes' float seed.
Outputs
video goes to your save/preview node. url and all_urls_json are the KIE-side links, task_id is your handle for a stuck job, raw_json is the full provider response, and credits_consumed / credits_left are the accounting - also printed on the node after each run. Wire the credits outputs to a text display if you're running unattended batches; the number arrives after the money is gone.
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. Nothing to download beyond the wrapper itself - no checkpoints, no VAE, no 40GB of weights. The pack's Python dependencies are requests, Pillow, numpy and PyYAML.
Then the key, once for the whole pack: ComfyUI → Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's checked against KIE before replacing the saved key, and the frontend only ever sees a masked fingerprint. Servers can set KIE_API_KEY instead - it takes priority. KIE bills credits per second of video, tiered by resolution, with no subscription: top up a small amount and it spends across every model in their catalogue.
Common issues
You can't find 2.5 weights to run locally. Correct. There are none. Anyone offering them is wrong or worse.
Prompt expansion changed your shot. Default-on here. Turn it off for deliberate prompts.
Long jobs timing out. timeout_seconds defaults to 1200, and 1080p ten-second clips at peak hours can exceed a generous queue. Raise it - cancelling doesn't refund.
No video in the UI. Add a save or preview node; this returns a VIDEO and isn't an output node.
comfy_api.latest.InputImpl.VideoFromFile error on older builds. Update ComfyUI - the native video object needs a current version.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The same woman from the reference image looks directly into the camera, takes a breath, then smiles brightly and speaks with enthusiasm: "Have you heard? Alibaba Wan 2.5 API is now available on Kie.ai!" Ambient audio: quiet indoor atmosphere, soft natural room tone. Camera: medium close-up, steady framing, natural daylight mood, accurate lip-sync with dialogue. | The text prompt describing the desired video motion. Maximum length: 800 characters. |
| image_url | IMAGE | — | |
| duration | COMBO | 5 | The duration of the generated video in seconds. - `5`: 5 seconds - `10`: 10 seconds |
| resolutionopt | COMBO | 1080p | Video resolution. Valid values: `720p`, `1080p`. |
| negative_promptopt | STRING | blurry, flicker, camera shake, distorted face, low quality | Negative prompt used to describe content to avoid. Maximum length: 500 characters. |
| enable_prompt_expansionopt | BOOLEAN | true | Whether to enable prompt rewriting using LLM. - Boolean value: `true` / `false` |
| seedopt | INT | 123456-2147483648–2147483647 | Random seed for reproducibility. If omitted, a random seed is chosen. |
| 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 | — |