Skip to content
Dashboard

Seedance 2.5 now available on Vercel AI Gateway

Seedance 2.5 from ByteDance is now available on AI Gateway. It can generate up to 30-second clips with synchronized audio, and takes up to 50 reference inputs in one request, spanning images, video, audio, and style.

A single clip holds camera movement and continuity without stitching shots together in post, and short clips can be extended, carrying over character, scene, and camera movement. Prompts work in more than ten languages.

Seedance 2.5 can also edit a finished video in place, swapping backgrounds, products, or characters while the frame, camera, and pacing stay fixed, so one shoot yields several variants.

Copy link to headingGenerating a video

Set model to bytedance/seedance-2.5 and call generateVideo from the AI SDK:

import { experimental_generateVideo as generateVideo } from 'ai';
import fs from 'node:fs';
const { videos } = await generateVideo({
model: 'bytedance/seedance-2.5',
prompt: 'A chicken flying into the sunset in the style of 90s anime',
resolution: '1920x1080',
duration: 30,
});
fs.writeFileSync('output.mp4', videos[0].uint8Array);

Copy link to headingAdding image references

Pass image URLs in inputReferences and point at them in the prompt with [Image 1], [Image 2]. Tag each entry with its media type. Seedance treats an untagged URL as an image.

const { videos } = await generateVideo({
model: 'bytedance/seedance-2.5',
prompt: 'A boy from [Image 1] walking a corgi from [Image 2] through the park at sunset',
resolution: '1920x1080',
duration: 10,
generateAudio: true,
inputReferences: [
{ data: boyUrl, mediaType: 'image/jpeg' },
{ data: corgiUrl, mediaType: 'image/jpeg' },
],
});

Copy link to headingCombining reference types

Mix videos and images in the same request to pull different qualities from each: motion and camera work from a clip, a subject's appearance from a still.

Videos go in the same inputReferences array as images, tagged with a video media type. Numbering runs per type so the first video is [Video 1] and the first image is [Image 1], and both can appear in one prompt.

const { videos } = await generateVideo({
model: 'bytedance/seedance-2.5',
prompt: 'Follow the camera movement and pacing of [Video 1], with the product from [Image 1]',
resolution: '1920x1080',
duration: 15,
inputReferences: [
{ data: clipUrl, mediaType: 'video/mp4' },
{ data: productUrl, mediaType: 'image/jpeg' },
],
});

Copy link to headingEditing a video

Referencing and editing use the same setup, so the prompt decides which you get. Ask the model to follow a clip's camera movement and it builds a new video from scratch. Ask it to change something in the clip and it edits the video you gave it.

const { videos } = await generateVideo({
model: 'bytedance/seedance-2.5',
prompt: 'Replace the cat in [Video 1] with the lion from [Image 1]',
resolution: '1920x1080',
duration: 12,
generateAudio: true,
inputReferences: [
{ data: lionUrl, mediaType: 'image/jpeg' },
{ data: catVideoUrl, mediaType: 'video/mp4' },
],
});

You can reference and edit in one prompt, though results get less predictable, so it helps to be explicit about what each asset is for.

For the playground and API reference, see the model page, or browse every video model on AI Gateway.