Wan 2.6 · Text to Video
Write the shot list, get 15 seconds with sound
- audio_url
- video
- task id
Text in, up to fifteen seconds out, with generated audio, in five aspect ratios, at 720p or 1080p. $0.09/second. No input image anywhere - which is either the appeal or the disqualifier, depending on whether you have a frame you're attached to.
The reason to care about this node over the 2.2 text-to-video one is length and sound. Fifteen seconds is enough for a beat to change, and generated audio means you don't have to fake a soundtrack. Those two things are what people actually buy when they pay per second for a closed model.
Context you should have
Wan 2.2 is the last open Wan. 2.5, 2.6, 2.7 and 3.0 are API-only - no weights, no local option, no exception for people with 48 GB of VRAM. Any page offering a local Wan 2.6 download is selling you a dead link. Meanwhile the open 2.2 base with the community's fine-tunes and speed LoRAs is genuinely good and free forever, so the honest framing is: this node is for the length, the audio, and the absence of a setup project.
And the community attitude is worth knowing before you invest a workflow in it. Every Wan release thread since 2025 has the same top comment - if it isn't open, nobody cares - and the per-call cost objection is real: fifteen seconds of 1080p is more than a dollar. Use it for the shots that need what only it does.
Inputs
prompt describes the subject, action, camera, light, pacing and boundaries. The tooltip says "shot or shot list," and that's the hint: on a 15-second clip with shot_type set to multi-shot, you're writing something closer to a sequence than a sentence.
aspect_ratio gives you five shapes, including vertical and square, so the output fits the platform you're making it for without a crop. resolution is 720p or 1080p. duration_seconds is 5, 10 or 15.
negative_prompt is there and worth filling in - text artifacts, morphing hands, whatever your shot tends to produce. audio_url is an optional AUDIO input so your own voice or music track drives lip sync and pacing. enable_prompt_expansion is off by default; on means the service rewrites your brief into something fuller, which is good for loose ideas and bad for precise ones. seed repeats a draw exactly.
Outputs: video → Save Video or any downstream video node; task id → a string for your logs or a support ticket.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart once, then Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys. If you'd rather not touch a terminal, ComfyUI Manager installs it - search "SpicyAPI". The pack adds no dependencies and no model files; the HTTP layer is aiohttp, which ComfyUI already bundles, so nothing can break your environment. Keys live in the ComfyUI user folder rather than in node fields, which keeps them out of workflows and PNG metadata; SPICY_API_KEY covers servers.
The template browser has a comfyui-spicyapi section with a text-to-image, image-to-video, LoRA and prompt-writer graph if you want a working starting point instead of a blank canvas.
Watch the meter
Video here is priced per output second, and the node's badge shows the rate, not your total. Fifteen seconds of 1080p with generated audio is the expensive end of this pack's range, so do the arithmetic before queueing and set Max cost per run in the SpicyAPI settings. If a quote comes in above it, the run stops without charging you.
Two habits save money: leave the seed's control after generate on fixed while you tune a prompt, since a fixed seed means re-queueing costs one run rather than two, and don't use cancel as a brake - a cancelled job keeps running on the server, is billed if it succeeds, and the result stays in your console for 14 days.
Malfunctions come with usable messages: no key set, 40004 for an option combination with no deployment (change the parameter it names), 40310 for an unverified email, 50301 when the model has no live deployment, 50302 when the run failed upstream and was refunded. An error ending in request_id ... is the exact request - that's the identifier support asks for.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, action, camera, light, pacing, and boundaries for the shot. | |
| negative_prompt | STRING | List what must not appear in the shot. | |
| aspect_ratio | COMBO | 16:9 | Output aspect ratio. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | COMBO | 5 | Requested output length in seconds. |
| 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. |
| 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. |
| 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. |