Generate cinematic videos with Seedance 2.5 Text-to-Video API by ByteDance. Get stable output, six aspect ratios, 4–30 second duration, sound, and 480p or 720p resolution.
ByteDance Seedance 2.5 Text-to-Video API turns natural-language prompts into polished video clips for developers and creative teams. The API combines flexible output quality, adjustable clip length, broad format support, and generated sound in a production-ready workflow on Bestimage AI. It is built for advertising, social media, product storytelling, creative prototyping, and scalable video applications that need reliable prompt-based generation.
Note Please ensure your prompts comply with ByteDance's content safety guidelines. If an error occurs, review your prompt for restricted content, adjust it, and try again.
Seedance 2.5 vs. Seedance 2.0 Text-to-Video
Both models support prompt-driven ByteDance video generation. Seedance
2.5 provides a current workflow with flexible quality, duration, format, and generated-sound controls for production
use on Bestimage AI.
Seedance 2.5 vs. Veo 3.1 Fast Text-to-Video
Veo 3.1 Fast focuses on rapid generation within Google's video model
family. Seedance 2.5 offers ByteDance video generation with broad aspect ratio coverage, adjustable clip length, and
integrated sound control.
Seedance 2.5 vs. Kling Text-to-Video
Kling provides text-driven video generation across creative scenarios.
Seedance 2.5 differentiates through its Bestimage AI API workflow, flexible output settings, and support for generated
sound in the same request.
Seedance 2.5 vs. Sora (OpenAI)
Sora is positioned around broad cinematic video creation. Seedance 2.5 provides a
focused API option for developers building short-form advertising, social, commerce, and automated content workflows.
Seedance 2.5 vs. Runway Video Generation
Runway combines generation with an interactive creative suite. Seedance
2.5 Text-to-Video API is designed for programmatic integration, repeatable request controls, and scalable video
production.
// Step 1: Submit generation request
const response = await fetch('https://api.flaq.ai/api/v1/video/task', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model_name: 'seedance-v2.5-text-to-video',
prompt: 'A cat playing with a ball of yarn on a sunny windowsill',
resolution: '720p',
duration: 8,
aspect_ratio: '16:9',
sound: true
})
});
const { data } = await response.json();
const taskId = data.task_id;
// Step 2: Poll for results
const taskId = data.task_id;
const pollResult = async (taskId) => {
const res = await fetch(`https://api.flaq.ai/api/v1/video/${taskId}`, {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
return res.json();
};
while (true) {
const pollResultData = await pollResult(taskId);
const status = pollResultData.data.task_status;
if (status === 'succeed') {
console.log(pollResultData.data.task_result.videos[].);
;
}
(status === ) {
.(pollResultData..);
;
}
( (resolve, ));
}
# Step 1: Submit generation request
import requests
response = requests.post(
'https://api.flaq.ai/api/v1/video/task',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
json={
'model_name': 'seedance-v2.5-text-to-video',
'prompt': 'A cat playing with a ball of yarn on a sunny windowsill',
'resolution': '720p',
'duration': 8,
'aspect_ratio': '16:9',
'sound': True
}
)
result = response.json()
task_id = result['data']['task_id']
# Step 1: Submit generation request
curl -X POST https://api.flaq.ai/api/v1/video/task \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model_name": "seedance-v2.5-text-to-video",
"prompt": "A cat playing with a ball of yarn on a sunny windowsill",
"resolution": "720p",
"duration": 8,
"aspect_ratio": "16:9",
"sound": true
}'
# Step 2: Poll for results
# Replace {task_id} with the task_id returned from the submit response
curl -X GET "https://api.flaq.ai/api/v1/video/{task_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
# Step 2: Poll for results
task_id = response.json()['data']['task_id']
poll_url = f"https://api.flaq.ai/api/v1/video/{task_id}"
while True:
poll_result = requests.get(poll_url, headers={'Authorization': 'Bearer YOUR_API_KEY'}).json()
status = poll_result['data']['task_status']
if status == 'succeed':
print(poll_result['data']['task_result']['videos'][0]['url'])
break
if status == 'failed':
print(poll_result['data']['task_status_msg'])
break
time.sleep(10)