ByteDance Seedance 2.0 First Last Frame (Channel Edition)
Seedance 2.0 first-last-frame video, the channel edition
- first_frame_url
- last_frame_url
- api_config
- video
- request_id
- urls
First-last-frame (FLF) generation is the closest thing video models have to a "trust me, it'll connect" mode: you give the model a starting frame, optionally an ending frame, and it invents the motion in between. This node is the Channel Edition wrapper for ByteDance's Seedance 2.0 FLF endpoint - the API-only video line from the same company that brought you Seedream for images. It's your ComfyUI door to "this exact character walks from this pose to that pose," without a single local inference step.
How it works
Cloud execution through BizyAir. Your first-frame image (and optional last frame) upload to api.bizyair.ai, the request hits the seedance-2-0-base/flf-to-video endpoint, and the finished clip is downloaded back into ComfyUI as a native VIDEO tensor. No GPU, no model files, no ComfyUI video-model setup ritual. It's a paid, metered service - your credits get eaten per clip, and your frames spend time on SiliconFlow's servers.
Inputs that matter
- first_frame_url - the required starting image. This is the whole brief's anchor: pick a frame with clear composition, because everything the model invents flows out of it.
- last_frame_url - the optional ending image (one image, up to 30 MB). Supply it when you need a specific destination; leave it out and the model improvises the ending.
- prompt - what should happen in the middle. "She stands up and walks toward the window" - motion descriptions beat static scene descriptions here.
- resolution - defaults to
2k. The tooltip spells out the two tiers: native output (480p, 720p, Native1080p) and super-resolution versions upscaled from a 720p base (1080p, 2K, 4K). Iterate native, upscale for finals. - duration - seconds, default
5, range 4–15. - ratio - aspect ratio, default
16:9. - seed - integer, default
0; set it to reproduce a clip. - generate_audio - default on: the clip comes back with sound. Flip off for silent drafts.
- return_last_frame - default off; turn on to also get the video's final frame as an image output, handy for chaining into the next clip.
Outputs: video (into a preview/save node), request_id, urls.
Install and get going
ComfyUI Manager → "BizyAirPlus", or:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt
Restart, register at bizyair.ai, set the key in Settings > BizyAirPlus > API Key (or BIZYAIR_API_KEY), and flip the BizyAirPlus action-bar toggle ON - every node in the pack stays inert while that switch is off.
Gotchas
Setup failures are the usual trio: missing key, toggle off, deps in the wrong Python (python -m pip show bizyair-cloudberry). The FLF-specific trap is asking for too much between frames - a 15-second, several-beat action from two stills is a lot to ask and shows it. Keep short clips for complex motion, and if your ending frame keeps getting ignored, check that the first and last frames actually match in style and lighting; wildly mismatched anchors produce a confused middle.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| first_frame_url | IMAGE | First image | |
| resolution | COMBO | 2k | Video resolution. The resolution is divided into the resolution of the model native output (480p, 720p, Native1080p) and the resolution of super-resolution amplification based on 720p native generation (1080p, 2K, 4K) . |
| duration | INT | 54–15 | Video length in seconds |
| last_frame_urlopt | IMAGE | Supports up to 1 image, each 30 MB | |
| promptopt | STRING | Prompt words for video generation | |
| ratioopt | COMBO | 16:9 | Aspect ratio of video |
| seedopt | INT | 0-1–2147483647 | Input range value: 0-2147483647 seed integer to control randomness of generated content. |
| generate_audioopt | BOOLEAN | true | Whether to generate video and audio |
| return_last_frameopt | BOOLEAN | false | Whether to return the last frame of the video |
| api_configopt | BIZYAIR_OPENAPI_CONFIG | 单次请求覆盖base_url和api_key | |
| skip_erroropt | BOOLEAN | false | 开启后遇到错误不中断工作流,输出对应类型的错误占位符 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| request_id | STRING | — |
| urls | STRING | — |