Seedance is Volcengine's video generation model, supporting text-to-video, image-to-video, and video-to-video modes.
Available models
Supported unified parameters
| Unified field | Supported | Description |
|---|---|---|
model | Yes | model |
prompt | Yes | content[] → { type: "text", text } |
image | Yes | content[] → image_url entries |
video | Yes | content[] → video_url entries |
audio | Yes | content[] → audio_url entries |
ratio | Yes | ratio |
resolution | Yes | resolution |
headers | Yes | Custom HTTP headers |
upstream_options for Seedance
| Option | Type | Description |
|---|---|---|
callback_url | string | Callback URL |
return_last_frame | boolean | Return last frame |
service_tier | 'default' | 'flex' | Service tier |
execution_expires_after | number | Execution expiry |
generate_audio | boolean | Generate audio |
draft | boolean | Draft mode |
tools | Array<{ type: string }> | Tool definitions |
safety_identifier | string | Safety identifier |
priority | number | Priority |
duration | number | Video duration |
frames | number | Frame count |
seed | number | Random seed |
camera_fixed | boolean | Fixed camera |
watermark | boolean | Watermark toggle |
Media input mapping
Media input parameter handling:
| User input | Result |
|---|---|
image: "https://..." | { "type": "image_url", "image_url": { "url": "..." }, "role": "reference_image" } |
image: { "type": "first_frame", "url": "..." } | { "type": "image_url", "image_url": { "url": "..." }, "role": "first_frame" } |
video: "https://..." | { "type": "video_url", "video_url": { "url": "..." }, "role": "reference_video" } |
video: { "type": "reference_video", "url": "..." } | { "type": "video_url", "video_url": { "url": "..." }, "role": "reference_video" } |
audio: "https://..." | { "type": "audio_url", "audio_url": { "url": "..." }, "role": "reference_audio" } |
audio: { "type": "reference_audio", "url": "..." } | { "type": "audio_url", "audio_url": { "url": "..." }, "role": "reference_audio" } |
Arrays are expanded per entry. Strings use the default role. Objects use their type field as the role.
Example: Text-to-video
curl -X POST https://51kik.com/video/v1/generations \
-H 'Authorization: Bearer sk-xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"model": "doubao-seedance-1-0-pro-250528",
"prompt": "A golden retriever running on the beach, sunset backlight, slow motion",
"resolution": "720p",
"ratio": "16:9",
"upstream_options": {
"duration": 5,
"watermark": false,
"service_tier": "default"
}
}'
Example: Video input
curl -X POST https://51kik.com/video/v1/generations \
-H 'Authorization: Bearer sk-xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"model": "doubao-seedance-1-0-pro-250528",
"prompt": "Generate a sequel based on the reference video, keep characters and setting consistent",
"video": { "type": "reference_video", "url": "https://example.com/reference.mp4" },
"resolution": "720p",
"upstream_options": { "duration": 5 }
}'
Example: Multi-modal (image + video + audio)
curl -X POST https://51kik.com/video/v1/generations \
-H 'Authorization: Bearer sk-xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"model": "doubao-seedance-1-0-pro-250528",
"prompt": "Generate a commercial based on the first frame, reference video, and background music",
"image": { "type": "first_frame", "url": "https://example.com/first.jpg" },
"video": "https://example.com/reference.mp4",
"audio": "https://example.com/bgm.mp3",
"resolution": "1080p",
"ratio": "16:9",
"upstream_options": {
"duration": 8,
"generate_audio": true,
"watermark": false
}
}'
Billing
Seedance uses billingMethod: "modality_tokens":
Request has video input | Customer price field | Usage field |
|---|---|---|
| No | output_tokens_pricing | usage.output_tokens |
| Yes | input_video_output_tokens_pricing | usage.output_tokens |
has_input_video is determined solely by the video field in the request body: any non-empty string, non-empty URL object, or valid video entry in an array counts as true.