Seedance 2.0 Mini · Text to Video
No image, no GPU, cheap takes
- video
- last frame
- task id
This is the prompt-only node on Seedance's cheap tier: type a description, get 4 to 15 seconds of video at 480p or 720p with sound in the same pass, from $0.0246078 per second. No Load Image, no reference sockets, no first frame - just text in, video out.
If you've only used local video models, the format is worth a beat of thought. Local text-to-video usually wants a whole stack: a checkpoint, a CLIP, a VAE, a text encoder, a sampler chain and a lot of patience. Here the graph is one node and a Save Video. The trade is that you're renting someone else's A100 by the second and your prompt crosses the network.
What to actually put in the prompt
prompt is a multiline box, and the author's own instruction is the best brief: subject, action, camera, light, sound, and constraints. That "sound" clause matters more than it looks - this model generates audio natively, so "rain hammering a corrugated roof" or "a low synth swell in the last second" is a real instruction rather than flavour text.
Then:
aspect_ratio-adaptiveby default, plus 16:9, 9:16, 4:3, 3:4, 1:1 and 21:9. There's no source image, soadaptiveis loosely "let the model choose". Pick explicitly when the output has a home.resolution- 480p or 720p on this tier.duration_seconds- a dropdown led by-1: smart duration, where the model picks the clip length instead of being told. Below it, 4 to 15. The generated length is the billed quantity either way.generate_audio- on by default and price-neutral at a given resolution here, so there's no reason to turn it off.enable_web_search- off by default. On, the model searches the web for prompt-relevant material before rendering, and the request is billed at the web-search rate. Worth it when something on screen has to be a real place or object; wasted money on a mood piece.seed- fixed control-after-generate, so queueing the same graph twice reuses the first result.return_last_frame,bitrate_mode(standard/high) andwatermark- the 2.0-line presentation switches.
Outputs
video → Save Video. last frame → an IMAGE socket, filled only when return_last_frame is on; the clean way to continue a shot with a second node. task id → a string, matching the job in the SpicyAPI console and the one identifier support will ask for.
Install
ComfyUI Manager → search SpicyAPI → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, then open Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys. On a server or cloud box, set SPICY_API_KEY in the environment instead. Restart once more so the node catalogue is built for your account. There is nothing else - the pack has no Python dependencies and downloads no model files, and the generation itself runs entirely on SpicyAPI's hardware, so a CPU-only machine is fine.
Failure modes, briefly
A missing key gives you "No SpicyAPI key is set" - that's the whole error, and the fix is in Settings. 40310 is an unverified email; open the link from your sign-up. 40004 means no deployment serves the combination you selected and names the field to change. An error ending in request_id is worth sending to support verbatim.
Two things people learn the hard way: interrupting a run doesn't cancel it (it finishes server-side, is charged if it succeeds, and the result stays in your console for up to 14 days), and without a Max cost per run cap in Settings, a queue full of 15-second takes is a queue full of invoices. Set the ceiling before you experiment, and check the price badge on the node after each change - it updates live for the options you've picked.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the intended subject, action, camera, light, sound, and constraints. | |
| aspect_ratio | COMBO | adaptive | Output frame ratio. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | COMBO | 5 | Requested output duration in seconds. Pass -1 for smart duration: the model picks the length itself instead of a fixed number. |
| generate_audio | BOOLEAN | true | Request synchronised output audio. |
| 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. |
| bitrate_mode | COMBO | standard | Encoding bitrate of the delivered file: standard, or high for crisper detail and a larger file. |
| watermark | BOOLEAN | false | Add the model’s visible "AI generated" watermark to the video. |
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. |