Modelverse Wan-AI I2V
Modelverse Wan-AI image-to-video
- client
- first_frame_image
- last_frame_image
- url
- task_id
Image-to-video is where the interesting video work actually happens. A prompt-to-video roll of the dice might give you a weird scene you never pictured; start from an image you already like and the model's job is narrower - animate this. Modelverse Wan-AI I2V is Alibaba's Wan 2.2 image-to-video model hosted on UCloud's ModelVerse API, which means you get the model the community treats as the reliable open base (per the KB's Wan panel) without downloading a single checkpoint or owning the GPU to run it.
The natural workflow: generate a still with one of the pack's image nodes - Qwen Image, NanoBanana, whatever you have - then drop that still into this node and let Wan 2.2 give it motion. That pairing is the most genuinely useful loop in this entire pack.
The inputs that matter
client- standard wiring from Modelverse Client or Secret Client.prompt- defaults to"Convert to video"but you should write something real. Wan uses it to decide how the scene moves: "slow zoom into the window, leaves drifting" beats "make a video."first_frame_image/first_frame_url- one of these is required, and the node refuses both at once. The first frame is the whole point of I2V. Wire anIMAGEtensor intofirst_frame_imagenormally;first_frame_urlis for when your source already lives on the web.last_frame_image/last_frame_url- optional, and genuinely nice: give Wan an ending frame and it animates between your two stills, for a start-to-end transition.negative_prompt- defaults to"low quality, blurry"; leave it or extend it.resolution-720P(default) or480P.seed- for reproducibility.
Like its text-to-video sibling, duration is fixed at 5 seconds - it's hardcoded in the request, so don't go looking for a duration dial.
How it works
The node base64-encodes your image tensor (or passes through your URL), submits a task as Wan-AI/Wan2.2-I2V, then polls every 5 seconds until the clip is done - up to about 10 minutes before it gives up. The two outputs are url and task_id, and url is the one you'll wire into Modelverse Preview Video to save and watch the result.
A detail worth knowing from the source: if you provide neither a first-frame image nor a URL, it raises a clear error - and providing both raises a different clear error. The both-or-neither validation is intentional, so when you hit it, it's not a bug, it's the node keeping you from sending garbage to the API.
Install
The pack installs once for all these nodes: ComfyUI Manager → search "ComfyUl-UCloud" → Install → restart, or git clone https://github.com/ucloud/comfyui-plugin into custom_nodes. Light dependencies, no model downloads, and a Modelverse API key from the console.
The usual caveat applies: hosted, metered, and slow-ish - a 5-second I2V clip can take a few minutes of polling. That's the cost of not owning a 14B video model.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MODELVERSE_API_CLIENT | — | |
| prompt | STRING | Convert to video | Text prompt to guide video generation |
| first_frame_imageopt | IMAGE | — | |
| first_frame_urlopt | STRING | First frame image URL (use either this OR first_frame_image, not both) | |
| last_frame_imageopt | IMAGE | — | |
| last_frame_urlopt | STRING | Optional: URL for the last frame of the video | |
| negative_promptopt | STRING | low quality, blurry | Negative prompt to avoid unwanted content |
| resolutionopt | COMBO | 720P | Output video resolution |
| seedopt | INT | 00–2147483647 | Random seed for reproducible results |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| task_id | STRING | — |