Seedance 2.0
ByteDance Seedance 2.0 with multimodal references, native audio, web search, and adaptive aspect ratio.
POST /v2/videos/generate — model: "seedance-2"
Seedance 2.0 is a major upgrade over the 1.x family. It supports multimodal reference inputs (images, videos, audio), native synchronized audio generation, web search grounding, and an adaptive aspect ratio mode.
See Video Generation overview for common request fields, response format, and error codes.
Model-specific parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
seedanceParams.duration | integer | 8 | Video duration in seconds, any integer from 4 to 15 |
seedanceParams.resolution | string | "720p" | Output resolution: "480p", "720p", or "1080p" |
seedanceParams.aspect_ratio | string | "16:9" | Aspect ratio: "21:9", "16:9", "4:3", "1:1", "3:4", "9:16", or "adaptive" |
seedanceParams.start_image | string | — | URL or asset://{assetId} for the first frame |
seedanceParams.end_image | string | — | URL or asset://{assetId} for the last frame |
seedanceParams.reference_image_urls | string[] | — | Up to 9 reference image URLs or asset URIs |
seedanceParams.reference_video_urls | string[] | — | Up to 3 reference video URLs or asset URIs |
seedanceParams.reference_audio_urls | string[] | — | Up to 3 reference audio URLs or asset URIs |
seedanceParams.generate_audio | boolean | true | Enables synchronized audio generation. Audio is included in the base price. |
seedanceParams.return_last_frame | boolean | false | Returns the last frame of the generated video |
seedanceParams.web_search | boolean | false | Enables web search grounding for the prompt |
seedanceParams.seed | integer | — | Optional random seed for reproducible generations |
seedanceParams.camera_fixed | boolean | false | Locks the camera for more static motion |
Asset references
Reference fields (start_image, end_image, reference_image_urls, reference_video_urls, reference_audio_urls) accept both direct URLs and asset URIs in the format asset://{assetId}. Use the Assets API to pre-upload media and obtain asset IDs.
Credit cost
Pricing is per second of output. The total credit cost is credits-per-second × duration. Reference images and audio do not affect cost; only reference_video_urls does (it shifts pricing to the *-refvid rate because reference video changes the upstream generation mode).
| Variant | Credits / sec |
|---|---|
480p | 2 |
720p | 4 |
1080p | 10 |
480p-refvid | 4 |
720p-refvid | 8 |
1080p-refvid | 20 |
Examples: a 5-second 720p clip costs 4 × 5 = 20 credits; a 5-second 1080p clip costs 10 × 5 = 50 credits; a 12-second 720p-refvid clip costs 8 × 12 = 96 credits.
Code examples
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A golden retriever puppy running through a meadow of wildflowers on a sunny day",
"model": "seedance-2",
"seedanceParams": {
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/videos/generate",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"prompt": "A golden retriever puppy running through a meadow of wildflowers on a sunny day",
"model": "seedance-2",
"seedanceParams": {
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
},
},
)
print(response.json())const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "A golden retriever puppy running through a meadow of wildflowers on a sunny day",
model: "seedance-2",
seedanceParams: {
duration: 8,
resolution: "720p",
aspect_ratio: "16:9",
generate_audio: true,
},
}),
});
console.log(await response.json());Try it
/v2/videos/generateTry it