Wan 2.5 - Text to Video
A prompt box, a duration enum, and no download
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Text-to-video from a model that has no weights. That's the whole situation with Wan 2.5: Alibaba's cloud-preview generation arrived in September 2025 promising local weights that never shipped, and the community's verdict on the numbered series has been flat-to-hostile ever since - 2.5 was called an upgrade over 2.2, 2.6 and 2.7 got dunked on. Take that with the grain of salt it deserves: almost nobody reviewing those models was comparing them to 2.2 at 480p on their own card.
So treat this node as one tool in a small box. If you need a shot and you don't have the hardware, or you want to compare how the closed Wan behaves against your local setup, it's one prompt and one click.
How it works
prompt (max 800 characters) and duration are required; duration is the string enum 5 or 10. Optional controls are aspect_ratio (16:9, 9:16, 1:1), resolution (1080p default, 720p), negative_prompt, enable_prompt_expansion, seed, plus the pack's usual nsfw_checker, timeout_seconds and callback_url.
The node submits to KIE's marketplace at /api/v1/jobs/createTask with model wan/2-5-text-to-video, polls /api/v1/jobs/recordInfo until the task resolves, then downloads the MP4 and archives it in ComfyUI/output/KIE-Results/videos. You get a ComfyUI VIDEO object, indistinguishable downstream from something your own GPU produced.
Inputs that matter
prompt- 800 characters is not a lot. Descriptive and specific beats florid.duration-5or10, no thirty-second option.aspect_ratio- 16:9, 9:16, or 1:1. Pick before you generate; it's not a crop you can fix later.resolution- default is1080p, which is the expensive one. Iterate at 720p.enable_prompt_expansion- defaults to true, unlike the Wan 2.2 nodes where it's off. Great for a two-line prompt; annoying when it paraphrases the shot you carefully wrote.negative_prompt- good default shipped.
Outputs
video is the payload; wire it into whatever saves or previews. url, all_urls_json, task_id, and raw_json cover the plumbing and debugging, and credits_consumed / credits_left report the spend as sockets - plus the on-node receipt every generation node in this pack prints when it finishes. That receipt is the fastest way to learn what your 1080p ten-second habit actually costs.
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
Then restart ComfyUI and look under KIE Next / Video / Wan. The pack's node list is generated from KIE's live API documentation on startup, which is why each model gets its own node and its own folder instead of one generic API widget - and why the README says the old "Any KIE API" node is intentionally unregistered.
Key: Settings → KIE.ai Nodes Next → Connection. Paste once, it validates first, then reports ✅ CONNECTED with a masked fingerprint. KIE_API_KEY in the environment works for headless servers and wins over the stored key. Credits are pay-as-you-go, no subscription, and they're metered per second of generated video at the resolution you asked for.
Common issues
A failed job still appears in your balance. You pay for the generation, not the outcome. Do your prompt experiments at 720p and 5 seconds.
Timeout on a 10-second 1080p clip. Raise timeout_seconds from its 1200-second default and queue again rather than killing the graph.
The shot drifted from the prompt. Prompt expansion is on by default. Turn it off and retry with the same seed.
No visible result. Not an output node - attach a save or preview.
Error mentioning comfy_api.latest. Update ComfyUI; older builds can't construct the native VIDEO output.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A dimly lit jazz bar at night, wooden tables glowing under warm pendant lights. Patrons sip drinks and chat quietly while a three-piece band performs on stage. The saxophone player stands under a spotlight, gleaming instrument reflecting the light. No dialogue. Ambient audio: smooth live jazz music with saxophone and piano, clinking glasses, low murmur of audience conversations, occasional burst of laughter from a nearby table. Camera: slow pan across the crowd, then gentle zoom toward the saxophone player's solo, focusing on expressive hand movements. | The text prompt for video generation. Supports Chinese and English. Maximum length: 800 characters. |
| duration | COMBO | 5 | The duration of the generated video in seconds. - `5`: 5 seconds - `10`: 10 seconds |
| aspect_ratioopt | COMBO | 16:9 | The aspect ratio of the generated video. - `16:9`: Landscape - `9:16`: Portrait - `1:1`: Square |
| resolutionopt | COMBO | 1080p | Video resolution tier. - `720p`: 720p - `1080p`: 1080p |
| negative_promptopt | STRING | blurry, flicker, low quality, distorted people, camera shake | Negative prompt used to describe content to avoid. Maximum length: 500 characters. |
| enable_prompt_expansionopt | BOOLEAN | true | Whether to enable prompt rewriting using LLM. Improves results for short prompts but increases processing time. - 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 | — |