Wan 2.6 Spicy · Image to Video
Uncensored, with the 15-second runway
- image_url
- audio_url
- video
- task id
The "Spicy" endpoints in this pack are the hosted uncensored variants - the thing people keep asking about on Reddit, using it through an API for a year and then failing to replicate it locally, because it was never a downloadable model. This is the 2.6 generation of it, on image-to-video: one opening frame in, 5, 10 or 15 seconds out at 720p or 1080p, $0.095/second.
Versus the 2.2 Spicy node, you're paying roughly five times the per-second rate for a much newer model and three times the maximum length. Versus a local uncensored Wan fine-tune, you're paying money for the privilege of not assembling a checkpoint stack - which, if you've tried it, is sometimes exactly the trade you want.
What it does
Image goes up, job gets quoted and polled, MP4 comes back as a ComfyUI VIDEO. No weights, no VRAM, no GPU. The clip arrives with generated audio, and the request carries no content declaration, which is the part that matters to the people who reach for this node.
Inputs
image_url sets the opening frame, so it decides subject, wardrobe, set and light before the model sees your text. prompt should therefore be motion: action, camera, mood. Keep it physical and short - the I2V rule that a prompt re-describing the still produces a slideshow holds double here, because the spicy models are the ones people most often prompt vaguely.
duration_seconds is 5, 10 or 15. resolution is 720p or 1080p - no cheap tier, so this is not the node to leave running in a randomize loop. negative_prompt exists and earns its place: morphing limbs and flicker are the classic failure modes, and naming them helps.
shot_type is the single-take-or-multi-shot control. On a 15-second clip, multi-shot is often the difference between a scene and a shot that overstays its welcome.
audio_url is an optional AUDIO socket: connect a track and the clip follows it for lip sync and pacing. enable_prompt_expansion is off by default - on for vague briefs, off when the wording is deliberate. seed repeats a draw exactly, which is how you compare two prompts without the dice moving under you.
Outputs: video → Save Video, and task id as a string for the console or support.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI with a key from spicyapi.ai/console/keys. ComfyUI Manager can install it if you just search "SpicyAPI". The pack has no dependencies to install and no weights to fetch - it uses ComfyUI's own aiohttp. Your key is stored in the ComfyUI user folder rather than in a node widget, so it doesn't end up in shared workflows or in the metadata of images ComfyUI writes; SPICY_API_KEY does the same job on a server.
Money and errors
At $0.095/second a 15-second 1080p take is not pocket change, so set Max cost per run in the SpicyAPI settings on day one - anything quoted above the ceiling stops before it charges. The badge is a rate, never a total. Seeds default to fixed: re-queueing the same graph reuses the first result instead of billing a second one.
Cancelling stops your wait, not the render. The job continues, is charged if it succeeds, and its output waits in your console for 14 days.
When a run fails, the message usually tells you what to do - No SpicyAPI key is set, 40004 for an option combination nothing serves (change the named parameter), 50301 when there's no usable deployment right now, 50302 when it failed upstream and was refunded so you can simply re-run, and 40310 when your account email isn't verified.
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 | COMBO | 5 | 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. |
| shot_type | COMBO | single | Single continuous shot, or a multi-shot edit. |
| enable_prompt_expansion | BOOLEAN | false | Allow the service to expand the submitted creative brief 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. |