Seedance 2.5 · Text to Video
Half a minute of footage from one prompt
- video
- last frame
- task id
Thirty seconds. That's the number that separates Seedance 2.5 from everything before it in this pack - the 2.0 family caps at 15, the 1.5 Pro nodes at 12. This node builds a shot from a written prompt alone, with sound in the same pass, at 480p, 720p or 1080p, from $0.1234 per second.
Thirty seconds changes what a prompt has to do. A five-second clip needs a description; a thirty-second clip needs a shape - a beginning, a change, an ending. Long prompts aren't the answer, structured ones are: what the camera does over the duration, what enters or leaves frame, how the light or mood shifts. If your first take drifts into a static shot after eight seconds, that's usually a prompt problem, not a model one.
Inputs, in the order you'll care about them
prompt is multiline and it's the entire creative control. The author's framing - subject, action, camera movement, mood - is the skeleton; add a time element of your own for longer clips.
aspect_ratio is a genuine choice on this node: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 or adaptive (default). Nothing to anchor to, so adaptive is a judgement call by the model - pick explicitly for anything with a destination.
resolution is 480p ($0.1234/s), 720p ($0.2773/s) or 1080p ($0.6823/s). Audio is priced in; generate_audio on or off costs the same, so there's no reason to render silent.
duration_seconds is an integer slider, 4 to 30, and it is the billed quantity. Do the arithmetic before you queue: 30 seconds at 1080p is not a casual test.
output_format chooses mp4 or mov. A container preference, nothing more.
enable_web_search lets the model search for prompt-relevant information before rendering. Unlike the 2.0 nodes, whose field descriptions warn that web-search requests are billed at a higher rate, 2.5's rate table doesn't add a surcharge - so switch it on when the shot contains something specific and real.
return_last_frame also returns the clip's final frame as an IMAGE, which is how you chain two generations into one longer sequence. watermark asks the model to mark the output as AI-generated.
seed is fixed after generate by default. Queueing the same graph twice reuses the cached result instead of quietly buying you a second render.
Outputs
video → Save Video or a preview node. last frame → any IMAGE input, populated only with return_last_frame on. task id → a string matching the job in your SpicyAPI console; that's the identifier for support.
Install
ComfyUI Manager → search SpicyAPI → Install. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI. Open Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys - or set SPICY_API_KEY for a headless install - then restart once more so the node catalogue is fetched for your account. No dependencies to install, no model files, no GPU: Seedance 2.5 is a closed API model, and this pack is a client with a key.
The short list of ways it goes wrong
No key → "No SpicyAPI key is set". No headroom → the quote exceeds your Max cost per run and the run stops before charging; raise the cap if you meant it. 40310 → verify your email. 40004 → that option combination isn't served, and the error names the field. Interrupt → the job keeps going server-side and is charged if it succeeds, so a cancelled run is not a free one. And because the node list is rebuilt at every startup, a model missing from your menu is a restart away, not a reinstall.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | What to generate: subject, action, camera movement and mood. | |
| aspect_ratio | COMBO | adaptive | Aspect ratio of the generated video. |
| resolution | COMBO | 720p | Output resolution. Super-resolution tiers are not offered. |
| duration_seconds | INT | 54–30 | Clip length in seconds. This is the billed quantity. |
| generate_audio | BOOLEAN | true | Generate a native soundtrack synchronised to the picture. |
| output_format | COMBO | mp4 | Container of the returned video. |
| enable_web_search | BOOLEAN | false | Let the model search the web for information related to the prompt before rendering. |
| 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. |
| return_last_frame | BOOLEAN | false | Also return the clip’s final frame as a separate image. |
| watermark | BOOLEAN | false | Ask the model to watermark the video as AI-generated. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last frame | IMAGE | Needs return_last_frame turned on. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |