Model Details
Seedance 2.5 First & Last Frame generates a clip that begins on one image and ends on another. You supply both stills — `image` is the opening frame, `end_image` is the closing frame — and the prompt describes what happens in between: the action, the camera move, and the sound. Pinning both ends is what sets it apart: you decide where the shot lands, not only where it starts. A single take runs up to 30 seconds at 24 fps, the soundtrack — ambience, effects and dialogue — is generated with the picture rather than dubbed on afterwards and costs nothing extra, and the clip inherits the shape of the frames you supply, so a vertical pair gives a vertical clip. Output is 480p or 720p.
## Best for - Morphing one photo into another — a product before and after, a season change, a transformation - Storyboard work: pin two boards and generate the shot between them - Long interpolations — up to 30 seconds in a single continuous take - Transition and reveal shots that want ambient sound baked in, not added afterwards - Vertical or square transitions straight from the source pair, since the clip keeps its shape
## Choose another model when - You need output above 720p: this generation tops out at 720p, so use `bytedance/seedance-v2/first-last-frame`, which reaches 1080p - You have no closing frame to land on — use `bytedance/seedance-v2.5/image-to-video` - You have no source image at all and want the shot built from a prompt — use `bytedance/seedance-v2.5/text-to-video` - You need a fixed seed for reproducible runs, or a locked-off camera: neither input exists on this generation
## Tips - The two frames should share a scene and a subject — the model generates the transit between them, it does not cut between unrelated shots - Describe only the middle: the endpoints are fixed by the images, so spend the prompt on motion, camera and sound - Crop both images before sending — `aspect_ratio` only accepts `adaptive`, so the clip takes its shape from the pair - Set `duration` yourself when cost matters: billing is per second of finished video, so `-1` leaves the total open up to 30 seconds - Source images run 300-6000 px per side and under 30 MB; JPEG, PNG, WebP, HEIC and HEIF are all accepted
To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";
const result = await modelrunner.subscribe("bytedance/seedance-v2.5/first-last-frame", { input: { image: "https://media.modelrunner.ai/pyJMS2iOt5vEEKWQo5aWD.jpeg", end_image: "https://media.modelrunner.ai/90cxOiEMl16l485iLZghi.jpeg", prompt: "The fog burns off the lake as the light turns golden, the moored rowboat rocking gently on its line and ripples spreading across the water", resolution: "720p", duration: 8, generate_audio: true, }, }); ```

