Nodes/SpicyAPI/Seedance 2.5 · Image to Video
ComfyUI Node

Seedance 2.5 · Image to Video

30-second clips, and why 'adaptive' is your only ratio

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Seedance 2.5 · Image to Video
  • image_url
  • last_image_url
  • video
  • last frame
  • task id
◄prompt►
◄aspect_ratioadaptive►
◄resolution720p►
◄duration_seconds5►
◄generate_audiotrue►
◄output_formatmp4►
◄enable_web_searchfalse►
◄seed0►
◄return_last_framefalse►
◄watermarkfalse►

The headline change in Seedance 2.5 is length: 4 to 30 seconds in one generation, instead of the 15-second ceiling the 2.0 family lives under. That's the difference between a cutaway and an actual scene, and it's why people reach past 2.0 for this node even at $0.1234 per second.

The second change is subtler and will confuse you if you don't read the tooltip. aspect_ratio on this node has exactly one option: adaptive. Seedance 2.5 anchors an image-to-video clip on the first frame, so the frame's own ratio is the output ratio - there's nothing to pick. It's a dropdown with one entry, which looks like a bug until you understand why. Set your still's aspect ratio in whatever local node produced it.

The rest of the schema

image_url is an IMAGE socket; Load Image wires in and the pack uploads the file for you (PNG up to 10 MiB, JPEG fallback above). prompt describes action, camera, mood, and it has more room to matter here - a 30-second clip needs a prompt with an arc, not a snapshot description.

resolution gives you 480p, 720p or 1080p, at $0.1234/s, $0.2773/s and $0.6823/s respectively. Audio doesn't move those numbers, so leaving generate_audio on costs nothing. That pricing shape is deliberate across the 2.x line - throughput at the bottom, resolution at the top.

duration_seconds is an integer slider, 4 to 30. This is the billed quantity, so a 30-second 1080p take is real money; the node's badge updates as you drag it.

output_format picks mp4 or mov - a delivery choice, not a quality one.

enable_web_search lets the model look things up before rendering. On 2.5 the published rate table doesn't add a surcharge for it (unlike the 2.0 nodes, which explicitly bill at the web-search rate), so it's a cheap switch here if the shot needs a real place or object in it.

return_last_frame also emits the final frame as an IMAGE - with 30-second clips that's a genuinely useful handoff into the next segment. watermark asks the model to mark the video as AI-generated.

seed is fixed after generate by default; re-queueing the graph reuses the cached render rather than charging a second time.

Optional last_image_url gives the shot a closing frame - "only accepted together with image_url" - which on a 30-second clip is how you land a move precisely.

Outputs

video → Save Video. last frame → an IMAGE, present only when return_last_frame is on. task id → a string; the run's id in the SpicyAPI console and the one thing 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 Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys - or set SPICY_API_KEY in the environment if you run ComfyUI headless. Restart once more so the node list is built from your account's catalogue. The pack declares no dependencies and downloads no weights; the model runs server-side, so a machine with no GPU is fine.

Seedance itself is ByteDance's closed video line - API-only by design, part of the same two-track strategy that has the company shipping open components and keeping every flagship generation product behind an endpoint. This node is the sanctioned way in.

Before you commit to a 30-second 1080p take

Set Settings > SpicyAPI > Max cost per run. Runs are quoted before submission and anything above the ceiling stops without charge. Interrupting a run doesn't cancel the job: it keeps generating on SpicyAPI, is charged if it succeeds, and its result stays in your console for up to 14 days. 40004 means the option combination isn't served and names the field to change; an error ending in request_id is ready-made for support.

CategorySpicyAPI/Video/ByteDance

Inputs (12)

NameTypeDefaultDescription
promptSTRINGWhat to generate: subject, action, camera movement and mood.
image_urlIMAGEURL of the image used as the first frame.
aspect_ratioCOMBOadaptiveAspect ratio of the generated video. Seedance 2.5 frames an image-to-video clip on the first frame, so adaptive is the only accepted value.
resolutionCOMBO720pOutput resolution. Super-resolution tiers are not offered.
duration_secondsINT54–30Clip length in seconds. This is the billed quantity.
generate_audioBOOLEANtrueGenerate a native soundtrack synchronised to the picture.
output_formatCOMBOmp4Container of the returned video.
enable_web_searchBOOLEANfalseLet the model search the web for information related to the prompt before rendering.
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.
return_last_frameBOOLEANfalseAlso return the clip’s final frame as a separate image.
watermarkBOOLEANfalseAsk the model to watermark the video as AI-generated.
last_image_urloptIMAGEURL of the image used as the closing frame. Only accepted together with image_url.

Outputs (3)

NameTypeDescription
videoVIDEO—
last frameIMAGENeeds return_last_frame turned on.
task idSTRINGThe SpicyAPI task id, for the console logs or support.