Wan 2.7 Spicy · Image to Video
Uncensored, up to 15 seconds, with a negative prompt
- image_url
- audio_url
- video
- task id
The newest uncensored Wan in this pack. One opening frame, a prompt, 2 to 15 seconds at 720p or 1080p, audio generated or supplied, no content declaration in the request. $0.1235/second - which makes a 10-second 1080p take a bit over a dollar, so this is the node you graduate to, not the one you experiment on.
"Spicy" isn't an Alibaba model name. It's the hosted uncensored variant of the Wan line, and there are no weights for it, which is why the people who like it use an API and the people who want it locally can't have it. If you've been trying to find a download, that's the answer: there isn't one. The 2.2 Spicy node is the cheaper member of the family if you don't need 15 seconds or 1080p.
The inputs
image_url is the opening frame and the clip starts from it, so your framing decisions are already made. That leaves prompt to describe motion: action, camera, mood. Short and physical beats long and descriptive here - the models handle movement well and prose badly.
negative_prompt is a real advantage over 2.2, which doesn't offer one. Use it for the failure modes you keep seeing: extra limbs, morphing, flicker, text.
duration_seconds is a free integer from 2 to 15 rather than a menu of fixed lengths, so you can cut to an existing edit instead of padding it. resolution is 720p or 1080p. Both scale the bill directly.
generate_audio is on by default and generates a soundtrack with the video. Turn it off if you're supplying your own - and note the tooltip's catch: with it off, supplied audio isn't used either.
audio_url is an optional AUDIO socket, so a voice or music node in your graph can drive lip sync and pacing. enable_prompt_expansion is on by default here, unlike the 2.6 nodes where it's off. If your prompt wording is deliberate, turn it off first; that's the most common reason a run comes back looking like it ignored what you wrote.
seed repeats a draw exactly. Outputs are video → Save Video and task id as a string.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys - ComfyUI Manager does the same thing if you search "SpicyAPI". The pack ships no dependencies and no weights; the client is aiohttp, which ComfyUI already includes, so it can't break your Python environment. Nothing runs locally: no GPU, no VRAM, no checkpoint. Your key lives in the ComfyUI user folder instead of a widget so it stays out of workflows and image metadata, and SPICY_API_KEY does the same on a remote server.
Uploads are handled for you. An opening frame is re-encoded as PNG when it fits under 10 MiB and high-quality JPEG when it doesn't; an audio input is converted to 16-bit WAV and capped at 90 MiB, so a long track has to be trimmed.
Before you spend
Do the arithmetic: the badge shows a rate per second, and 15 seconds at 1080p is a very different number from 5 at 720p. Set Max cost per run in the SpicyAPI settings so the quote stops a run you didn't mean to queue. Keep the seed on fixed (control after generate) while you tune the prompt - a fixed seed means re-queueing is one charge, not two. And if you cancel, remember the job keeps running on the server and is still billed if it succeeds; the output waits in your console for 14 days, so look there before paying again.
Errors come with instructions attached: No SpicyAPI key is set; 40004 for an option combination with no deployment (the message names the parameter); 40310 for an unverified account email; 50301 when there's no usable deployment right now; 50302 when the generation failed upstream and was refunded - that one you can simply re-run.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Opening frame. 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 | List what must not appear in the shot. | |
| duration_seconds | INT | 52–15 | Requested output length in seconds. |
| resolution | COMBO | 720p | Output resolution. |
| 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. |
| generate_audio | BOOLEAN | true | Include an audio track in the output. When false, supplied audio is not used. |
| enable_prompt_expansion | BOOLEAN | true | Expand the prompt before generation. |
| audio_urlopt | AUDIO | Audio track that drives lip sync or pacing. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |