Seedance 2.0
Seedance 2.0 generates video with synchronized multilingual audio, professional camera work, multi-shot composition, and in-video text rendering. Inputs include text, image, multimodal reference, and existing video for editing and extension. Your use is subject to ByteDance's Terms & Privacy Policies.
View API reference- Output price
- Output $7, Per 1M generated tokens
import { experimental_generateVideo as generateVideo } from 'ai';
const result = await generateVideo({ model: 'bytedance/seedance-2.0', prompt: 'A serene mountain lake at sunrise.'});Copy link to headingPlayground
Try out Seedance 2.0 by ByteDance. Usage is billed to your team at API rates. Free users (those who haven't made a payment) get $5 of credits every 30 days.
Your generated video will appear here.
Copy link to headingProviders
Route requests across multiple providers. Copy a provider slug to set your preference. Visit the docs for more info. Using a provider means you agree to their terms, listed under Legal.
| Provider |
|---|
Getting started
Generate videos with Seedance 2.0 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.
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-2.0', prompt: 'A chicken flying into the sunset in the style of 90s anime', });
// 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.
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-2.0', prompt: 'A chicken flying into the sunset in the style of 90s anime', 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);| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | No | Text description of the video to generate. |
duration | number | No | Video length in seconds. 4-15 seconds. |
resolution | string | No | Resolution ('854x480', '1280x720', '1920x1080', '3840x2160'). |
aspectRatio | string | No | Aspect ratio ('16:9', '4:3', '1:1', '3:4', '9:16', '21:9'). |
generateAudio | boolean | No | Generate synchronized audio with the video. |
frameImages | Array<{ image: string; frameType: 'first_frame' | 'last_frame' }> | No | First and last frames of the clip. A first_frame entry replaces prompt.image and wins when both are set, and adding a last_frame transitions between the two. Seedance accepts image URLs only, so host local files on Vercel Blob first. |
inputReferences | Array<{ data: string; mediaType: string }> | No | Reference images and videos, referenced in the prompt as [Image 1], [Video 1], and so on, numbered separately in the order you pass them. Tag every URL with an explicit mediaType — an untyped URL is treated as an image and emits a warning. See the Input limits table for supported counts. |
Input limits
| Input | Formats | Sources | Max count | Max size | Limits |
|---|---|---|---|---|---|
| Image | jpeg, png, webp, bmp, tiff, gif | url | 9 | 30 MB | ≥300px · ≤6000px · aspect 2:5–5:2 |
| Video | mp4, mov | url | 3 | 50 MB | 2-15s · ≥300px · ≤6000px |
| Audio | wav, mp3 | url | — | 15 MB | 2-15s |
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.
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-2.0', prompt: 'A chicken flying into the sunset in the style of 90s anime', resolution: '1280x720', duration: 5, providerOptions: { bytedance: { seed: 42, 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
lastFrameImage | string | No | URL of the last frame image, enabling first+last frame mode. Legacy alternative to the top-level frameImages, used only when frameImages is omitted. |
referenceImages | string[] | No | 1-9 reference image URLs for reference-to-video, referenced in the prompt as [Image 1], [Image 2], and so on. Legacy alternative to the top-level inputReferences, used only when inputReferences is omitted. |
referenceVideos | string[] | No | Reference video URLs for reference-to-video, numbered separately from the images and referenced in the prompt as [Video 1], [Video 2], and so on. Legacy alternative to the top-level inputReferences, used only when inputReferences is omitted. |
referenceAudio | string[] | No | Reference audio URLs, sent alongside the reference images and videos to drive the generated audio. |
seed | number | No | Fix the random seed for reproducible output. |
pollIntervalMs | number | No | How often to check task status. Defaults to 3000. |
pollTimeoutMs | number | No | Maximum wait time. Defaults to 300000 (5 minutes). |
Frames take priority over references
Frames and references are mutually exclusive. When frameImages is set, inputReferences and the legacy providerOptions.bytedance.referenceImages / referenceVideos are dropped with a warning.
The top-level parameters win over their provider-option equivalents: frameImages overrides prompt.image and lastFrameImage, and inputReferences overrides referenceImages and referenceVideos. Set one or the other, not both.
providerOptions.bytedance.referenceAudio has no top-level equivalent, so it stays a provider option and is sent alongside whichever reference path you use.
Reference-to-video
Pass reference media through the top-level inputReferences so the model keeps subjects, style, and composition consistent — see the Input limits table for the supported counts. Reference each one in the prompt with [Image 1], [Video 1], and so on; images and videos are numbered separately in the order you pass them. Tag every URL with an explicit mediaType, since Seedance cannot infer image or video from a bare URL.
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-2.0', prompt: 'Replace the cat in [Video 1] with the lion from [Image 1]. The lion lies down and gently interacts with the girl in a warm and tender way.', aspectRatio: '16:9', resolution: '1920x1080', duration: 12, generateAudio: true, inputReferences: [ { data: 'https://example.com/lion.jpg', mediaType: 'image/jpeg' }, { data: 'https://example.com/cat-video.mp4', mediaType: 'video/mp4' }, ], providerOptions: { bytedance: { 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);Copy link to headingAbout Seedance 2.0
Seedance 2.0 was released April 14, 2026 as the second-generation ByteDance Seedance video model. The standard variant targets the highest output quality in the 2.0 lineup.
Input modes span text-to-video, image-to-video, multimodal reference-to-video (combining image, video, and audio references), and video editing and extension. One model covers the full range of creative workflows where Seedance 1.0 Pro required separate variants.
Output supports 16:9 aspect ratio with 720p resolution in examples shown, and clip durations from five to 10 seconds. Seedance 2.0 maintains motion stability and fine detail across frames, handles complex scenes with facial expressions and physical interactions, and renders text inside generated video.
Native audio generation with multilingual support lets you produce dialogue, sound effects, and ambient audio without a separate text-to-speech or audio compositing step. Professional camera movements and multi-shot composition extend creative control beyond single static shots.
AI Gateway applies no markup on video generation for Seedance 2.0: the rate matches the direct ByteDance provider price. Set the model to bytedance/seedance-2.0 and call it through the AI SDK's generateVideo function.
Copy link to headingWhat To Consider When Choosing a Provider
- Configuration: Seedance 2.0 accepts text, image, multimodal reference (image plus video plus audio), and existing video as input. If your pipeline handles multiple input modes, route through a single model rather than composing separate generation steps.
- Zero Data Retention: Zero Data Retention is offered on a per-provider and model basis. See the documentation for details.
- Authentication: AI Gateway authenticates requests using an API key or OIDC token. You do not need to manage provider credentials directly.
Copy link to headingWhen to Use Seedance 2.0
Best for
- Multimodal video workflows: Text, image, video, and audio inputs combined in a single reference-to-video generation
- Character-driven content: Scenes with facial expressions, physical interactions, and synchronized dialogue in multiple languages
- Cinematic production: Professional camera movements and multi-shot composition that extend beyond typical social clip defaults
- In-video text rendering: Content where legible text inside the generated video matters for brand or narrative
- Video editing and extension: Modifying existing video or extending a source clip without regenerating from scratch
Consider alternatives when
- Maximum generation speed: Seedance 2.0 Fast trades some quality for faster turnaround and lower cost
- Static image generation: Use a dedicated image model when motion isn't required
- Video understanding only: Use a vision-language model when you need to analyze existing video rather than generate new content
Copy link to headingConclusion
Seedance 2.0 consolidates second-generation Seedance capabilities into a single model: multimodal inputs, high-fidelity motion, native synchronized audio, professional camera work, and in-video text. For teams producing character-driven or cinematic short-form video, it's the quality-focused default in the 2.0 line.
Copy link to headingFrequently Asked Questions
What input types does Seedance 2.0 support?
Text-to-video, image-to-video, multimodal reference-to-video (combining image, video, and audio inputs), and video editing and extension.
Does Seedance 2.0 generate audio alongside video?
Yes. Audio generation is native and synchronized to the video, with multilingual support for dialogue, sound effects, and ambient audio. No separate text-to-speech or audio compositing step is required.
How does Seedance 2.0 compare to Seedance 2.0 Fast?
The standard variant targets the highest output quality in the 2.0 line. Seedance 2.0 Fast shares the same input types and capabilities but prioritizes speed and lower cost. Choose based on whether quality or turnaround matters more.
Can Seedance 2.0 render text inside generated video?
Yes. In-video text rendering is one of the new capabilities in the 2.0 line, useful for brand, narrative, and informational content.
What resolutions and durations does Seedance 2.0 support?
Examples shown at launch use 720p at 16:9 aspect ratio, with clip durations from five to 10 seconds.
Does Vercel AI Gateway support Zero Data Retention for Seedance 2.0?
Zero Data Retention is not currently available for this model. Zero Data Retention is offered on a per-provider basis. See https://vercel.com/docs/ai-gateway/capabilities/zdr for details.
What is the pricing for Seedance 2.0?
Current pricing is shown on this page. AI Gateway applies no markup on video generation, so the rate matches the direct ByteDance provider price.
How do I call Seedance 2.0 through AI Gateway?
Set the model to
bytedance/seedance-2.0and call it through the AI SDK'sgenerateVideofunction. AI Gateway handles authentication, retries, and failover acrossbytedance.