Skip to content
Dashboard

Seedance v1.0 Pro Fast

Seedance v1.0 Pro Fast delivers Seedance 1.0 Pro-quality 1080p video generation at approximately 3x faster throughput and 72% lower cost than standard Pro, making it the default for latency-sensitive and cost-conscious production pipelines. Your use is subject to ByteDance's Terms & Privacy Policies.

Video Gentext-to-video
import { experimental_generateVideo as generateVideo } from 'ai';
const result = await generateVideo({
model: 'bytedance/seedance-v1.0-pro-fast',
prompt: 'A serene mountain lake at sunrise.'
});
Read docs

Getting started

Generate videos with Seedance v1.0 Pro Fast using the experimental_generateVideo function from AI SDK 6 or later. AI Gateway handles routing and polls until the video is ready.

Install the AI SDK (pnpm add ai dotenv), create an API key from the API Keys page, and set it as AI_GATEWAY_API_KEY in your environment. Full setup is covered in the video generation quickstart.

index.ts
import { experimental_generateVideo as generateVideo } from 'ai';
import fs from 'node:fs';
import 'dotenv/config';
async function main() {
const result = await generateVideo({
model: 'bytedance/seedance-v1.0-pro-fast',
prompt: {
image: 'https://example.com/cat.png',
text: 'The cat slowly turns its head and blinks',
},
});
// Save the generated video
fs.writeFileSync('output.mp4', result.videos[0].uint8Array);
console.log('Video saved to output.mp4');
}
main().catch(console.error);

Top-level parameters

Exercise the supported top-level params: prompt, aspectRatio, resolution, and duration.

seedance-image-to-video.ts
import { experimental_generateVideo as generateVideo } from 'ai';
import fs from 'node:fs';
import 'dotenv/config';
async function main() {
const result = await generateVideo({
model: 'bytedance/seedance-v1.0-pro-fast',
prompt: {
image: 'https://example.com/cat.png',
text: 'The cat slowly turns its head and blinks',
},
aspectRatio: '16:9',
resolution: '1280x720',
duration: 5,
});
// Save the generated video
fs.writeFileSync('output.mp4', result.videos[0].uint8Array);
console.log('Video saved to output.mp4');
}
main().catch(console.error);
ParameterTypeRequiredDescription
promptstringNoText description of the video to generate.
durationnumberNoVideo length in seconds. 2-12 seconds.
resolutionstringNoResolution ('854x480', '1280x720', '1920x1080').
aspectRatiostringNoAspect ratio ('16:9', '4:3', '1:1', '3:4', '9:16', '21:9').
frameImagesArray<{ image: string; frameType: 'first_frame' | 'last_frame' }>NoOpening frame of the clip, as a single first_frame entry. Replaces prompt.image and wins when both are set. Seedance accepts image URLs only, so host local files on Vercel Blob first.

Input limits

InputFormatsSourcesMax countMax sizeLimits
Imagejpeg, png, webp, bmp, tiff, gifurl130 MB≥300px · ≤6000px · aspect 2:5–5:2

Provider options (bytedance)

Load the compatible Seedance options under providerOptions.bytedance. Frames and references are passed at the top level through frameImages and inputReferences, which change the call shape and are shown in their own examples below.

seedance-provider-options.ts
import { experimental_generateVideo as generateVideo } from 'ai';
import fs from 'node:fs';
import 'dotenv/config';
async function main() {
const result = await generateVideo({
model: 'bytedance/seedance-v1.0-pro-fast',
prompt: {
image: 'https://example.com/cat.png',
text: 'The cat slowly turns its head and blinks',
},
duration: 5,
providerOptions: {
bytedance: {
cameraFixed: true,
serviceTier: 'default',
watermark: false,
returnLastFrame: true,
pollIntervalMs: 5000,
pollTimeoutMs: 600000,
},
},
});
// Save the generated video
fs.writeFileSync('output.mp4', result.videos[0].uint8Array);
console.log('Video saved to output.mp4');
}
main().catch(console.error);

Pass these Seedance-specific options under providerOptions.bytedance in your generateVideo call.

ParameterTypeRequiredDescription
watermarkbooleanNoAdd a watermark to the video.
cameraFixedbooleanNoFix the camera position during generation.
returnLastFramebooleanNoReturn the last frame of the generated video. Useful for chaining consecutive videos.
serviceTier'default' | 'flex'No'default' for online inference. 'flex' for offline at 50% cost, higher latency.
pollIntervalMsnumberNoHow often to check task status. Defaults to 3000.
pollTimeoutMsnumberNoMaximum wait time. Defaults to 300000 (5 minutes).