Integrate ByteDance's Seedance 2.0 video generation model into your applications via the Volcengine API. This guide covers all endpoints, code examples in Python, cURL, and JavaScript, plus pricing and access options.
Last updated: March 2026
The Seedance 2.0 API is available through ByteDance's Volcengine (Volcano Engine) cloud platform. It provides RESTful endpoints for creating AI-generated videos from text prompts, images, existing video clips, and audio references. The API uses an asynchronous task-based architecture — you submit a generation request and receive a task ID, then poll for the result once processing is complete.
Generate a video entirely from a text prompt. Supports resolution, duration, aspect ratio, and style parameters.
Animate a static image into a video using a reference image and text prompt. Preserves visual style and character details.
Modify specific elements in an existing video — replace subjects, add or remove objects, and repaint regions.
Extend an existing video forward or backward with seamless continuity and consistent style.
Check the status of a generation task and retrieve the output video URL when complete.
Generate cinematic-quality video clips from detailed text prompts. Control resolution (480P/720P), frame rate (24fps), duration (5-10s), and aspect ratio (16:9, 9:16, 1:1).
Upload up to 7 reference images to guide video generation. The model preserves character appearance, scene composition, and visual style from your reference materials.
Programmatically edit existing videos — subject replacement, object add/remove, and region-specific repainting while maintaining original motion and camera work.
Extend videos in either direction with seamless transitions. Forward generation creates preceding content, while track completion fills gaps for continuous storytelling.
Native audio-video generation produces matched sound effects, lip-synced dialogue, and background music. Supports multi-language speech with various accents.
Using the requests library to create a text-to-video task and poll for results.
import requests
import time
API_KEY = "your-api-key-here"
BASE_URL = "https://open.volcengineapi.com/api/v3/contents/generations/tasks"
# Step 1: Create a text-to-video generation task
response = requests.post(
f"{BASE_URL}/seedance/v2/text_to_video",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"prompt": "A young woman in a flowing red dress walks along a moonlit beach, gentle waves lapping at her feet. Smooth dolly-in, cinematic lighting, film grain.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"fps": 24,
},
)
task = response.json()
task_id = task["data"]["task_id"]
print(f"Task created: {task_id}")
# Step 2: Poll for task completion
while True:
status_resp = requests.get(
f"{BASE_URL}/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
status = status_resp.json()
state = status["data"]["status"]
if state == "completed":
video_url = status["data"]["output"]["video_url"]
print(f"Video ready: {video_url}")
break
elif state == "failed":
print(f"Generation failed: {status['data']['error']}")
break
else:
print(f"Status: {state}, waiting...")
time.sleep(10)Command-line examples for creating a task and checking status.
# Step 1: Create a text-to-video generation task
curl -X POST \
https://open.volcengineapi.com/api/v3/contents/generations/tasks/seedance/v2/text_to_video \
-H "Authorization: Bearer your-api-key-here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A young woman in a flowing red dress walks along a moonlit beach, gentle waves lapping at her feet. Smooth dolly-in, cinematic lighting, film grain.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"fps": 24
}'
# Response: {"data": {"task_id": "task_abc123"}}
# Step 2: Check task status
curl -X GET \
https://open.volcengineapi.com/api/v3/contents/generations/tasks/task_abc123 \
-H "Authorization: Bearer your-api-key-here"
# Response when complete:
# {"data": {"status": "completed", "output": {"video_url": "https://..."}}}Using the Fetch API to integrate Seedance into web applications.
const API_KEY = 'your-api-key-here';
const BASE_URL = 'https://open.volcengineapi.com/api/v3/contents/generations/tasks';
// Step 1: Create a text-to-video generation task
async function generateVideo(prompt) {
const response = await fetch(
`${BASE_URL}/seedance/v2/text_to_video`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
prompt,
resolution: '720p',
duration: 5,
aspect_ratio: '16:9',
fps: 24,
}),
}
);
const task = await response.json();
const taskId = task.data.task_id;
console.log(`Task created: ${taskId}`);
// Step 2: Poll for task completion
while (true) {
const statusResp = await fetch(
`${BASE_URL}/${taskId}`,
{ headers: { 'Authorization': `Bearer ${API_KEY}` } }
);
const status = await statusResp.json();
const state = status.data.status;
if (state === 'completed') {
console.log(`Video ready: ${status.data.output.video_url}`);
return status.data.output.video_url;
} else if (state === 'failed') {
throw new Error(`Generation failed: ${status.data.error}`);
}
console.log(`Status: ${state}, waiting...`);
await new Promise((r) => setTimeout(r, 10000));
}
}
// Usage
generateVideo(
'A young woman in a flowing red dress walks along a moonlit beach, gentle waves lapping at her feet. Smooth dolly-in, cinematic lighting, film grain.'
).then((url) => console.log('Download:', url));Seedance 2.0 API pricing depends on which platform you use to access it. Here are the main options:
ByteDance's official cloud platform offers pay-as-you-go pricing based on video resolution, duration, and generation mode. Free trial credits are available for new accounts. Requires a Volcengine account and API key setup.
View Volcengine PricingAccess Seedance 2.0 through Vibbit's user-friendly interface with no API setup required. Free tier includes trial credits for all generation modes. Paid plans offer higher quotas, priority generation, and commercial licensing.
Try Free on VibbitDon't want to deal with API keys, polling logic, and infrastructure? Vibbit gives you full access to Seedance 2.0 through a simple browser interface. Write your prompt, click generate, and download your video in minutes.
The Seedance 2.0 API is a RESTful interface provided by ByteDance through the Volcengine cloud platform. It allows developers to programmatically generate AI videos from text prompts, images, video clips, and audio references. The API supports text-to-video, image-to-video, video editing, video extension, and task status queries.
To use the official API, create an account on Volcengine (volcano.engine), navigate to the AI content generation services, and generate an API key. Alternatively, you can use Vibbit (app.vibbit.ai) to access Seedance 2.0 without any API setup — just sign up and start generating.
Pricing varies by platform. Volcengine offers pay-as-you-go pricing based on resolution, duration, and generation mode, with free trial credits for new users. Vibbit offers a free tier with trial credits and paid subscription plans for higher usage.
Rate limits depend on your account tier and platform. Volcengine sets per-minute and daily quotas based on your subscription level. Each video generation request is asynchronous — you submit the task and poll for completion, typically taking 1-3 minutes per video.
Yes! Vibbit provides a browser-based interface to access all Seedance 2.0 capabilities without writing any code. Simply visit app.vibbit.ai, type your prompt, upload reference media if needed, and click generate. It's the easiest way to use Seedance 2.0 for non-developers.