Wan 2.2 · Image to Video
The open model, minus the 25-minute render
- image_url
- video
- task id
Wan 2.2 is Apache 2.0. You can download it. That's the whole reason it became the base local video consolidated around in 2025, and why people still treat Wan 2.1/2.2 checkpoints as permanent infrastructure - Alibaba never released weights for anything numbered after 2.2, so the local ceiling is frozen there.
So what's the case for paying to call a model you already own? Time, mostly. On a 5090, a Wan 2.2 clip without speed LoRAs is a twenty-five-minute render. Here it's around $0.24 for a five-second clip at 480p or 720p and the model isn't sitting on your card fighting your upscaler for VRAM. This is the "rent the GPU instead of buying one" reason for API nodes, not the "the model doesn't exist locally" reason - and it's worth being honest that it's a convenience, not a capability.
Inputs
image_url- anIMAGEsocket, up to 10 MB, JPEG/PNG/WebP. The opening frame. The clip starts here, and the frame fixes subject, wardrobe, set and light - which is exactly why image-to-video is the community's favourite Wan workflow.prompt- required, and it carries the motion. What happens after the opening frame, how the camera moves, the mood. The still can't tell the model what the second five seconds look like.negative_prompt- what must not appear in the clip. Real input, but keep it short; on modern architectures stating what you want beats a keyword wall.resolution-480pdefault,720pavailable. Iterate at 480p.enable_prompt_expansion- off by default on this node, unlike the Qwen image nodes. Turn it on if your prompt is three words and you want the service to build it out.seed- fixed after generate by default, so re-queueing the graph reuses the result instead of silently charging for a second.
Outputs
video and task id. video goes to Save Video. And note what's missing: this clip is silent. Wan 2.2 has no native audio, which is why the current open lip-sync and soundtrack pipelines bolt a second stage on - LTX for audio, a foley model, or a hosted TTS node. Budget for that stage if "talking head" is the plan.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, then paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI and restart once more so the node list is read from your account's catalogue. There's nothing else to install: the pack declares no dependencies, downloads no weights, and won't touch your GPU. Remote installs should use SPICY_API_KEY rather than the settings panel, and the key never ends up inside a workflow or an image's metadata.
The honest trade
This one is priced per run, not per second - roughly a quarter a clip, five seconds, one resolution choice. That makes it pleasantly predictable compared with the per-second video nodes, and it also means there's no duration dial: five seconds is the deal.
You lose the control you'd have locally. No sampler, no LoRA slot, no VACE, no extension beyond five seconds. If you're already running Wan locally with speed LoRAs on the low-noise pass and a workflow you like, this node is a faster second opinion, not a replacement.
Set a per-run ceiling in Settings > SpicyAPI so the node's pre-run quote can't sneak past your budget, and remember that cancelling in ComfyUI doesn't cancel the job - it finishes on SpicyAPI and is billed if it succeeds. Errors worth recognising: no key is the obvious message, 40310 is an unverified email, 40004 means no deployment serves the options you chose.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Opening frame as a JPEG, PNG or WebP image of up to 10 MB. The clip starts from this image. | |
| prompt | STRING | Describe what happens after the opening frame: the action, the camera, and the mood. | |
| negative_prompt | STRING | What must not appear in the clip. | |
| resolution | COMBO | 480p | Output resolution. |
| enable_prompt_expansion | BOOLEAN | false | Allow the service to expand the submitted creative brief 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. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |