Wan 3.0 Pro · Image To Video
Animate a still at 2K and 4K (which are upscales)
- image_url
- last_image_url
- video
- task id
This is the Wan 3.0 node you want when the still is already good and you need motion that respects it. Pro is the middle tier of Alibaba's hosted 3.0 family: one opening frame in, 2 to 30 seconds out, audio in the file, and a resolution ladder that goes to 1080p, 2K and 4K. Note the author's own caveat on the resolution tooltip, because it's the single most important thing on this node: native Wan 3.0 renders top out at 1080p, and the 2K and 4K tiers are enlarged from that render, not generated at those sizes.
Read the resolution tooltip before you pay for 4K
$0.184/s at 4K versus $0.144/s at 1080p is a 28% premium for pixels the model isn't really rendering. For a talking head that's fine - the enlargement is a decent one and clients like a 4K file. For anything with fine texture, you're better off rendering at 1080p and doing the upscale yourself, locally, where you can pick the method and inspect the result. That's a general rule, not a knock on this pack: hosted "4K" tiers across the entire API-node category mean "delivered at 4K", not "diffused at 4K".
What you actually set
- prompt - subject, motion and camera. Shorter than you'd think; the image is already doing the describing.
- image_url - the opening frame. Load Image in, and the pack uploads it at run time (cached by content hash for 12 hours, so iterating on the prompt doesn't re-upload the same PNG).
- resolution - 1080p (default), 2k, 4k.
- aspect_ratio - default
adaptive, which follows the input media. Override it only if you want a deliberate crop. - duration_seconds - default 5, with
-1available for smart duration, where the model picks the length from the prompt and the source still. - generate_audio - on by default.
- enable_prompt_expansion - on by default on the Pro tiers, unlike the base 3.0 nodes. If you're chasing a specific look, turning it off gives you a truer read of your own prompt.
- seed.
- Optional last_image_url: give the clip an ending frame and it lands exactly there. This is the underrated input on the node - two frames is a storyboard, and it fixes the "nice motion, wrong ending" problem that plagues image-to-video.
Outputs: video (wire to Save Video) and task id (STRING, the SpicyAPI task id for logs or support).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Or ComfyUI Manager → search SpicyAPI. Restart, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys, restart once more so the node list is built from your account. Set SPICY_API_KEY on a remote box. No model downloads, no pip installs - the pack ships an empty dependency list and leans on libraries ComfyUI already has. Requires Python 3.10+ and the V3 node API (tested with ComfyUI 0.39).
Cost control and the usual friction
The badge on the node tracks the rate for your current resolution, and the settings page has a Max cost per run ceiling that is checked against a real quote before the request is submitted - the single best safety net in this pack. Everything else is per-second arithmetic: 1080p costs $0.144/s, a 5-second clip is $0.72, and a 30-second 4K run is $5.52.
Common issues, in the order you'll meet them: no key set (No SpicyAPI key is set), an unverified email (40310), or 40004, which means no deployment serves the combination you picked - change the option it names. Sometimes the price moves between quote and submit; the node re-quotes and resends under the same idempotency key, so you don't get double-charged. And if you cancel mid-run, the job keeps going on SpicyAPI and is charged if it succeeds - cancellation ends the wait, not the render.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, motion and camera. | |
| image_url | IMAGE | Opening frame image. | |
| resolution | COMBO | 1080p | Output resolution tier. A native Wan 3.0 render tops out at 1080p, so the 2k and 4k tiers are delivered by enlarging that render instead of rendering natively at those sizes. |
| aspect_ratio | COMBO | adaptive | Output aspect ratio; adaptive follows the input media and the intent. |
| duration_seconds | COMBO | 5 | Output duration in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. |
| generate_audio | BOOLEAN | true | Include an audio track in the output. |
| enable_prompt_expansion | BOOLEAN | true | Expand the prompt before generation. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional last frame: the clip ends exactly on this image. Requires image_url. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |