Integrate ByteDance's Seedance 2.5 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.
Updated: October 8, 2026
Use the Volcengine Ark API with model ID doubao-seedance-2-5-260628. Create a generation task, then query its ID to check status and retrieve the result. Keep your API key on your server.
Seedance 2.5 adds longer storytelling, more reference inputs, and more precise audio-video editing, including timestamp-based changes and green-screen workflows.
Previous-generation model for faster drafts; this is Seedance 2.0 Fast.
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.
Seedance 2.5 supports 480p, 720p, and 1080p output with synchronized audio. Generation duration is 4–30 seconds; available settings depend on the mode and platform.
Combine up to 30 images, 10 video clips, and 10 audio clips in a generation. Use references to guide characters, composition, movement, and sound.
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.
Combine up to 30 images, 10 video clips, and 10 audio clips in a generation. Use references to guide characters, composition, movement, and sound.
Guide characters, composition, and style.
Guide movement and camera work.
Server-side example: create a text-to-video task, then query its status. Repeat the query until the task succeeds or fails.
import os
import requests
URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks"
headers = {"Authorization": f"Bearer {os.environ['ARK_API_KEY']}"}
response = requests.post(URL, headers=headers, json={
"model": "doubao-seedance-2-5-260628",
"content": [{"type": "text", "text": "A paper boat floats down a quiet stream at sunrise."}],
"resolution": "1080p",
"duration": 30,
"ratio": "16:9",
"generate_audio": True,
}, timeout=60)
response.raise_for_status()
task_id = response.json()["id"]
print("Task created:", task_id)
# Query again later if status is queued or running.
result = requests.get(f"{URL}/{task_id}", headers=headers, timeout=60)
result.raise_for_status()
task = result.json()
print("Status:", task["status"])
if task["status"] == "succeeded":
print("Video:", task["content"]["video_url"])
elif task["status"] in ("failed", "expired"):
print("Task ended:", task.get("error", task["status"]))Server-side example: create a text-to-video task, then query its status. Repeat the query until the task succeeds or fails.
# Set ARK_API_KEY in your environment before running.
curl --fail-with-body "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Authorization: Bearer $ARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"content": [
{
"type": "text",
"text": "A paper boat floats down a quiet stream at sunrise. Slow tracking shot, soft light."
}
],
"resolution": "1080p",
"duration": 30,
"ratio": "16:9",
"generate_audio": true
}'
# Copy the returned id into TASK_ID, then query the task.
TASK_ID="replace-with-returned-id"
curl --fail-with-body \
"https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/$TASK_ID" \
-H "Authorization: Bearer $ARK_API_KEY"
# status: queued / running / succeeded / failed / expired
# On success, the video URL is in content.video_url.Server-side example: create a text-to-video task, then query its status. Repeat the query until the task succeeds or fails.
// Node.js server-side example. Keep ARK_API_KEY out of browser code.
const url = 'https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks';
const apiKey = process.env.ARK_API_KEY;
if (!apiKey) throw new Error('Set ARK_API_KEY before running this example');
const headers = { Authorization: `Bearer ${apiKey}` };
const response = await fetch(url, {
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'doubao-seedance-2-5-260628',
content: [{ type: 'text', text: 'A paper boat floats down a quiet stream at sunrise.' }],
resolution: '1080p',
duration: 30,
ratio: '16:9',
generate_audio: true,
}),
});
if (!response.ok) throw new Error(`Create failed: ${response.status}`);
const { id } = await response.json();
console.log('Task created:', id);
// Query again later if status is queued or running.
const result = await fetch(`${url}/${id}`, { headers });
if (!result.ok) throw new Error(`Query failed: ${result.status}`);
const task = await result.json();
console.log('Status:', task.status);
if (task.status === 'succeeded') console.log('Video:', task.content.video_url);
if (['failed', 'expired'].includes(task.status)) console.error(task.error ?? task.status);Seedance 2.5 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.5 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.5 through a simple browser interface. Write your prompt, click generate, and download your video in minutes.
The Seedance 2.5 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.
Use the Volcengine Ark API with model ID doubao-seedance-2-5-260628. Create a generation task, then query its ID to check status and retrieve the result. Keep your API key on your server.
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.5 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.5 for non-developers.
Updated: October 8, 2026 · Seedance 2.5 official documentation