Nodes/SpicyAPI/Wan 3.0 Prime Spicy · Image to Video
ComfyUI Node

Wan 3.0 Prime Spicy · Image to Video

One frame in, an unfiltered clip out

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Wan 3.0 Prime Spicy · Image to Video
  • image_url
  • last_image_url
  • video
  • task id
◄prompt►
◄aspect_ratiomodel default►
◄resolution720p►
◄duration_seconds5►
◄generate_audiotrue►
◄enable_prompt_expansionfalse►
◄seed0►

Wan 2.2 is the open-weights video standard - you can download it and run it tonight. Wan 3.0 is not that. This node calls Alibaba's hosted Wan 3.0 Prime endpoint (the fast tier of the 3.0 family), takes one still as the opening frame, and hands back a 2-to-30 second clip with audio baked into the file. "Spicy" here means the host's own uncensored variant, which is the whole reason a lot of people land on this node instead of a local checkpoint.

Why you'd reach for it

Local Wan 2.2 doesn't ship native audio, and it's the model everyone compares hosted video to. If your use case is "picture of a character, make them move for eight seconds, with sound", the local route means a second pass for audio and a longer fight over motion quality. Hosted Wan 3.0 does both in one request. The trade is the usual one from the API-node playbook: your inputs leave your machine, every run is metered, and the filter you're avoiding isn't yours to inspect - you're trusting that the endpoint's "unrestricted" tier really is.

Worth saying plainly: SpicyAPI as a vendor has essentially no community footprint yet. A search across the r/comfyui + r/StableDiffusion corpus turns up nothing for the name. That's not an accusation, it's an absence - you're an early user, so read the settings page and start with a small run before you trust it with anything you care about.

What you actually set

The node mirrors the hosted model's schema, so the widgets are the model's own knobs:

  • prompt - subject, action, camera, light, pacing, and sound. It's a script, not a tag list.
  • image_url - the opening frame. Wire a Load Image in; the pack uploads it for you when the node runs (and caches it for 12 hours by content hash, so re-running with a new prompt doesn't re-upload the same picture).
  • resolution - 480p, 720p or 1080p, default 720p.
  • duration_seconds - whole seconds, 2 to 30, default 5.
  • aspect_ratio - leave it on model default and the clip follows the opening image. Pick a ratio that doesn't match the still and the model crops it, which is a common way to lose half your framing.
  • generate_audio - on by default; switch it off if you're scoring the clip yourself.
  • enable_prompt_expansion - off here (the Pro tiers default it on).
  • seed, plus an optional last_image_url if you want the clip to land on a specific ending frame.

Outputs are video, which goes straight into Save Video, and task id, a string with the SpicyAPI task id for the console log or a support email. Note there's no separate last-frame image output on this node - that's how the schema is defined, not an oversight you can work around.

Install

ComfyUI Manager → search SpicyAPI, or:

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi

Restart ComfyUI, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys. Restart once more so the node list is rebuilt from your account's catalogue. On a headless box, set SPICY_API_KEY instead. There is nothing to pip install - the pack's dependency list is literally empty, and it uses only the aiohttp/torch/Pillow/PyAV that ComfyUI already ships. It needs Python 3.10+ and the newer V3 node API (tested against ComfyUI 0.39).

Cost, and the two traps

The badge on the node shows the current rate for the options you picked: this model runs $0.09/s at 480p, $0.18/s at 720p and $0.36/s at 1080p. A 5-second 720p clip is about $0.90. Set Max cost per run in the SpicyAPI settings and the pack quotes the request first - anything above your ceiling stops before it's charged.

Two things catch people out. First, seeds start on fixed, so queueing the same graph twice reuses the first result rather than buying a second one; switch control after generate to randomize when you actually want a new take, and remember every take is billed. Second, cancelling in ComfyUI stops the wait, not the job - the task finishes server-side, is charged if it succeeds, and the result sits in your console for 14 days.

If it doesn't run

No SpicyAPI key is set means exactly that. 40310 is an unverified account email. 40004 means no deployment serves the combination you picked - change the option the message names (resolution and duration are the usual culprits). An error ending in request_id ... is worth forwarding to support, since that id pins down the exact request, and a proxy/firewall complaint usually means HTTPS_PROXY is set wrong.

CategorySpicyAPI/Video/Alibaba

Inputs (9)

NameTypeDefaultDescription
promptSTRINGDescribe the subject, action, camera, light, pacing, and sound for the shot.
image_urlIMAGEOpening-frame image.
aspect_ratioCOMBOmodel defaultOutput aspect ratio. Omit it to let the clip adapt to the opening image; a ratio that differs from the image crops it.
resolutionCOMBO720pOutput resolution.
duration_secondsINT52–30Requested output length in whole seconds.
generate_audioBOOLEANtrueRequest generated audio with the video.
enable_prompt_expansionBOOLEANfalseAllow the service to expand the submitted creative brief before generation.
seedINT00–2147483647Same 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_urloptIMAGEOptional last frame: the clip ends on this image. Requires image_url.

Outputs (2)

NameTypeDescription
videoVIDEO—
task idSTRINGThe SpicyAPI task id, for the console logs or support.