curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "A girl spinning under cherry blossom trees, petals falling with the wind",
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "1080p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "Scene transitions from day to night, city lights gradually turning on",
"duration": 5,
"image_with_roles": [
{"url": "https://example.com/day.png", "role": "first_frame"},
{"url": "https://example.com/night.png", "role": "last_frame"}
]
}'
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-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}
)
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-0-pro-fast',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
resolution: '720p'
})
});
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-0-pro-fast",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
doubao-seedance-1-0-pro
Doubao SeeDance 動画生成
Generate videos using ByteDance Doubao SeeDance 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-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "A girl spinning under cherry blossom trees, petals falling with the wind",
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "1080p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "Scene transitions from day to night, city lights gradually turning on",
"duration": 5,
"image_with_roles": [
{"url": "https://example.com/day.png", "role": "first_frame"},
{"url": "https://example.com/night.png", "role": "last_frame"}
]
}'
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-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}
)
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-0-pro-fast',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
resolution: '720p'
})
});
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-0-pro-fast",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
中国本土のユーザー向け: 中国本土のユーザーは
https://toapis.cn を API エンドポイント(Base URL)としてご利用ください。本ドキュメント内の例では https://toapis.com を https://toapis.cn に置き換えてください。- ByteDance Doubao video generation model
- Use model parameter to select
doubao-seedance-1-0-pro-fastordoubao-seedance-1-0-pro-qualitymodel - Supports text-to-video generation
- Supports first frame / last frame / reference image control
- Async task management, query results by task ID
Important Change: For better performance and cost control, we no longer support passing base64 image data directly in
image_urls. Please use the Upload 画像API first to upload images and get URLs, then call this endpoint.Authorizations
string
必須
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
デフォルト:"doubao-seedance-1-0-pro-fast"
必須
Video generation model nameAvailable models:
doubao-seedance-1-0-pro-fast- Fast version (40-90 seconds generation)doubao-seedance-1-0-pro-quality- Quality version (90-300 seconds generation)
string
必須
Video content descriptionDescribe scenes, actions, styles in detail for better generation resultsExample:
"Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand"integer
デフォルト:5
Video duration (seconds)Supported range:
2 ~ 12 secondsDefault: 5string
デフォルト:"16:9"
Video aspect ratioOptions:
16:9- Landscape9:16- Portrait1:1- Square4:3- Traditional ratio3:4- Vertical traditional ratio21:9- Ultra-wide
16:9string
デフォルト:"720p"
Video resolutionOptions:
480p- Standard definition720p- High definition1080p- Full HD
720p1080p Limitation: When using reference images (role: reference in image_with_roles), 1080p resolution is not supportedResolution 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 |
| 1080p | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 | Reference image not supported |
string[]
First frame image URL array for image-to-video generation⚠️ URL format only (base64 no longer supported)
- Publicly accessible image URL (http:// or https://)
- You can use the Upload 画像API to upload local images and get URLs
["https://example.com/cat.png"]image_urls and image_with_roles cannot be used togetherarray
Image array with roles for more precise control
Example:
表示 Field 説明
表示 Field 説明
string
必須
Image URL address
string
必須
Image roleOptions:
first_frame- First frame image, as video starting frame (only one supported)last_frame- Last frame image, as video ending frame (quality version only, only one supported)reference- Reference image, for guiding video style (only one supported)
[
{"url": "https://example.com/start.png", "role": "first_frame"},
{"url": "https://example.com/end.png", "role": "last_frame"}
]
image_urlsandimage_with_rolescannot be used together- Only one image per role is supported
last_frameis only supported bydoubao-seedance-1-0-pro-qualityversion, fast version does not support first and last frame together
object
Extended parameters (optional)
表示 Field 説明
表示 Field 説明
integer
Seed integer for controlling generation randomnessRange:
-1 ~ 2^32-1Same seed value produces similar results, but not guaranteed to be identical素材審査
画像を含むリクエストでは, 一部のチャネルが生成の送信前に画像を自動で審査します. 追加のパラメーターは不要で, 従来の画像フィールドに画像 URL を指定するだけです.- 受理されたリクエストはすぐに動画タスクを返します. 審査が必要な場合, タスクは
queuedのままとなり, リクエスト内の全素材が通過してから生成を送信します. 初回の審査には数分かかることがあります. 同じユーザーが同じチャネルで同じ URL を再利用すると審査結果も再利用されます. - 素材準備は 1 ラウンドあたり既定で最長 20 分です. 審査拒否または準備タイムアウトの場合, タスクは
failedで終了し, 理由はerror.messageで確認できます. 審査を通過しなかった場合, 動画生成料金は発生しません. - 画像は公開 HTTP(S) URL で指定してください. Base64 とローカルパスは使えません. 画像は 20 MB 以内 (一部のチャネルは最大 30 MB) です. モデル本来の形式制限は変わりません.
- 審査を行うチャネルは受理時に画像 URL を検証します. URL に認証情報が含まれる, または 2048 バイトを超える場合は, HTTP 400 (
error.codeはinvalid_private_assets) を返します. - 素材は URL で識別されます. ファイル内容を変更した場合は新しい URL を使ってください.
- 旧
asset://参照は廃止され, HTTP 400 を返します.
レスポンス
string
Unique task identifier for status queries
string
Object type, always
generation.taskstring
モデル 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-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "A girl spinning under cherry blossom trees, petals falling with the wind",
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "1080p"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "doubao-seedance-1-0-pro-quality",
"prompt": "Scene transitions from day to night, city lights gradually turning on",
"duration": 5,
"image_with_roles": [
{"url": "https://example.com/day.png", "role": "first_frame"},
{"url": "https://example.com/night.png", "role": "last_frame"}
]
}'
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-0-pro-fast",
"prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p"
}
)
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-0-pro-fast',
prompt: 'Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand',
duration: 5,
aspect_ratio: '16:9',
resolution: '720p'
})
});
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-0-pro-fast",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}