curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A cat chasing a snake through the grass while the camera tracks the motion",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"}
],
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A girl spins beneath cherry blossoms and slowly comes to a stop at the end",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"},
{"url": "https://example.com/last.png", "role": "last_frame"}
],
"duration": 5,
"aspect_ratio": "9:16",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": True
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'doubao-seedance-1-5-pro',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
metadata: {
resolution: '720p',
audio: true
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "task_vid_xyz789ghi012",
"object": "generation.task",
"model": "doubao-seedance-1-5-pro",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
doubao-seedance-1-5-pro
Doubao SeeDance 1.5 Pro Video Generation
Generate videos using ByteDance Doubao SeeDance 1.5 Pro model
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A cat chasing a snake through the grass while the camera tracks the motion",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"}
],
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A girl spins beneath cherry blossoms and slowly comes to a stop at the end",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"},
{"url": "https://example.com/last.png", "role": "last_frame"}
],
"duration": 5,
"aspect_ratio": "9:16",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": True
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'doubao-seedance-1-5-pro',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
metadata: {
resolution: '720p',
audio: true
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "task_vid_xyz789ghi012",
"object": "generation.task",
"model": "doubao-seedance-1-5-pro",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
Note for users in mainland China: Please use
https://toapis.cn as the API endpoint (Base URL). Replace https://toapis.com with https://toapis.cn in the examples in this document.- ByteDance Doubao video generation model 1.5 Pro version
- Supports text-to-video generation
- Supports first frame / last frame control
- Does not support reference image mode
- Supports audio generation (1.5 Pro exclusive feature)
- Async task management, query results by task ID
Authorizations
string
required
All endpoints require Bearer Token authenticationGet your API Key from the API Key Management PageAdd to request header:
Authorization: Bearer YOUR_API_KEY
Body
string
default:"doubao-seedance-1-5-pro"
required
Video generation model nameAvailable models:
doubao-seedance-1-5-pro- 1.5 Pro version, supports audio generation and first/last frame control
string
required
Video content descriptionDescribe scenes, actions, and style in detail for better generation resultsExample:
"Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand"integer
default:5
Video duration (seconds)Supported range:
4 ~ 12 secondsDefault: 5string
default:"16:9"
Video aspect ratioOptions:
16:9- Landscape9:16- Portrait1:1- Square4:3- Traditional ratio3:4- Vertical traditional ratio21:9- Ultra-wide
16:9Resolution and Aspect Ratio Combinations
| Resolution | Supported Aspect Ratios | Notes |
|---|---|---|
| 480p | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 | All supported |
| 720p | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 | All supported (default) |
| 1080p | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 | All supported |
string[]
Compatibility image URL array for first/last-frame image-to-video generationCompatibility rules:
- 1 image: treated as
first_frame - 2 images: treated as
first_frameandlast_frame - More than 2 images: only the first two are used
image_with_roles to explicitly specify first and last framesExample: ["https://example.com/first.png", "https://example.com/last.png"]image_urls and image_with_roles cannot be used togetherarray
Image array with roles for explicit first/last-frame control
Example:
Show Field Description
Show Field Description
[
{"url": "https://example.com/first.png", "role": "first_frame"},
{"url": "https://example.com/last.png", "role": "last_frame"}
]
image_urlsandimage_with_rolescannot be used together- Only one first frame and one last frame are supported
- 1.5 Pro does not support the
reference_imagerole. Use Seedance 2.0 if you need reference image control
object
Extended parameters
Show Field Description
Show Field Description
string
default:"720p"
Video resolutionOptions:
480p- Standard definition720p- High definition (default)1080p- Full HD
integer
Seed integer for controlling generation randomnessRange:
-1 ~ 2^32-1The same seed can produce similar results, but exact output is not guaranteedboolean
default:false
Whether to generate audioWhen set to
true, the video will include AI-generated accompanying audio1.5 Pro exclusive featureboolean
default:false
Whether to keep the camera fixedWhen set to
true, the camera position remains fixed throughout the videoDifferences from 1.0
| Feature | 1.0 fast/quality | 1.5 Pro |
|---|---|---|
| Default resolution | 1080p | 720p |
| Supported resolutions | 480p/720p/1080p | 480p/720p/1080p |
| Duration range | 2-12s | 4-12s |
| Audio generation | Not supported | Supported |
| Image control mode | reference single reference image | first_frame / last_frame frame mode |
Response
string
Unique task identifier for status queries
string
Object type, always
generation.taskstring
Model name used
string
Task status
queued- Queued for processingin_progress- Processingcompleted- Successfully completedfailed- Failed
integer
Task progress percentage (0-100)
integer
Task creation timestamp (Unix timestamp)
object
Task metadata
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A cat chasing a snake through the grass while the camera tracks the motion",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"}
],
"metadata": {
"resolution": "720p",
"audio": true
}
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-5-pro",
"prompt": "A girl spins beneath cherry blossoms and slowly comes to a stop at the end",
"image_with_roles": [
{"url": "https://example.com/first.png", "role": "first_frame"},
{"url": "https://example.com/last.png", "role": "last_frame"}
],
"duration": 5,
"aspect_ratio": "9:16",
"metadata": {
"resolution": "720p",
"audio": true
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "doubao-seedance-1-5-pro",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"metadata": {
"resolution": "720p",
"audio": True
}
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'doubao-seedance-1-5-pro',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
metadata: {
resolution: '720p',
audio: true
}
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "task_vid_xyz789ghi012",
"object": "generation.task",
"model": "doubao-seedance-1-5-pro",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}