ByteDance Seedance (BytePlus / Volcengine)
Seedance is ByteDance's media generation model family, available through the BytePlus ModelArk platform. UGENT integrates Seedance as a dedicated media-only provider covering video and audio generation.
Overview
Seedance is a media-only provider: chat methods return clear errors. The real capabilities are video and audio generation through the BytePlus REST async task API.
| Capability | Models | API |
|---|---|---|
| Text-to-video | dreamina-seedance-2-5-260807 | POST /contents/generations/tasks |
| Image-to-video | Same | Same (with first_frame role) |
| Video-to-video | Seedance 2.0+ | Same (with reference_video role) |
| Audio-conditioned video | Seedance 2.0+ | Same (with reference_audio role) |
| Native video audio | Seedance 1.5+ | generate_audio: true (Dual-Branch) |
| Text-to-audio | seed-audio-1-0 | Same async task API (/contents/generations/tasks) |
Base URL: https://ark.ap-southeast.bytepluses.com/api/v3
China region: https://ark.cn-beijing.volces.com/api/v3
Quick Start
[llm.instances.seedance]
type = "bytedance"
api_key = "$ARK_API_KEY"
base_url = "https://ark.ap-southeast.bytepluses.com/api/v3"
default_model = "dreamina-seedance-2-5-260807"
# Video generation
[llm.instances.seedance.media.generation.video]
enabled = true
model = "dreamina-seedance-2-5-260807"
default_resolution = "1080p"
default_ratio = "16:9"
default_duration = 10
max_poll_duration_secs = 900
poll_schedule = [30, 5, 120, 15, 900, 30]
# Audio generation
[llm.instances.seedance.media.generation.audio]
enabled = true
model = "seed-audio-1-0"
default_format = "mp3"
default_sample_rate = 44100
max_poll_duration_secs = 600
poll_schedule = [30, 5, 120, 15, 600, 30]Store your BytePlus API key securely:
echo -n "bp-your-byteplus-api-key" | ugent secret add --stdin byteplus_api_key[llm.instances.seedance]
api_key_ref = "@byteplus_api_key"API Key Format
BytePlus API keys start with bp-. Generate one from the BytePlus ModelArk console.
Provider Type
Seedance uses the dedicated bytedance provider type. The aliases seedance, byteplus, and volcengine are also accepted.
Seedance 2.5 Video Generation
dreamina-seedance-2-5-260807 is ByteDance's latest video model with major upgrades over the 1.x series:
- 30-second single-pass generation (up from 5-10 seconds)
- Native 4K output with 10-bit color depth
- Up to 50 multimodal reference inputs (images, videos, audio)
- Region-level editing for targeted local modifications
- 10+ language lip-synced audio generation
- Watermark support (optional)
Video Config
[llm.instances.seedance.media.generation.video]
enabled = true
model = "dreamina-seedance-2-5-260807"
default_resolution = "4k" # 480p | 720p | 1080p | 4k
default_ratio = "16:9" # 16:9 | 9:16 | 1:1 | 4:3 | 21:9
default_duration = 10 # seconds (5-30 for Seedance 2.5)
watermark = false # optional visible watermark
max_poll_duration_secs = 900 # 2.5's 30s clips take longer to generate
poll_schedule = [30, 5, 120, 15, 900, 30]| Field | Values | Description |
|---|---|---|
default_resolution | 480p, 720p, 1080p, 4k | Output resolution tier |
default_ratio | 16:9, 9:16, 1:1, 4:3, 21:9 | Aspect ratio |
default_duration | 5-30 | Clip length in seconds (2.5 supports up to 30) |
watermark | true / false | Optional visible watermark |
Video Modes
| Mode | Inputs | Notes |
|---|---|---|
| Text-to-video | prompt only | Generate from scratch |
| Image-to-video (single) | prompt + image_url | Image becomes first_frame anchor |
| Image-to-video (keyframes) | prompt + image_urls (2) + mode: "keyframes" | First = first_frame, second = last_frame |
| Multimodal reference | prompt + image_urls (3+) | All images get reference_image role |
| Video-to-video | prompt + video_urls | Seedance 2.0+: replicate motion from reference clips |
| Audio-conditioned | prompt + audio_urls | Seedance 2.0+: sync video to reference audio |
| Native audio | generate_audio = true | Seedance 1.5+: embedded synced audio (Dual-Branch) |
Use the generate_video and check_video tools:
> Generate a 30-second 4K cinematic drone shot of a coastline at sunset
-> "Task created: task-abc123"
> check video task-abc123
-> "Done. Saved to ~/.ugent/media/4a/hash.mp4"Seed Audio 1.0
seed-audio-1-0 is ByteDance's full-scene audio generation model. It generates voice, dialogue, music, sound effects, and ambient sound from a single text prompt.
Capabilities
- Multi-character dialogue with natural emotions
- Background music, ambient sound, and sound effects
- Voice cloning from up to 3 reference audio clips
- Visual scene context from 1 reference image
- 20+ languages with natural cross-lingual voice transfer
- Up to 120 seconds per generation
Audio Config
[llm.instances.seedance.media.generation.audio]
enabled = true
model = "seed-audio-1-0"
default_format = "mp3" # mp3 | wav | pcm | ogg_opus
default_sample_rate = 44100 # 8000-48000 Hz
max_poll_duration_secs = 600
poll_schedule = [30, 5, 120, 15, 600, 30]| Field | Values | Description |
|---|---|---|
default_format | mp3, wav, pcm, ogg_opus | Output audio format |
default_sample_rate | 8000-48000 | Sample rate in Hz |
Audio Usage
Audio generation uses the same async task API as video. The generate_audio and check_audio tools are registered when audio generation is enabled:
> Generate a 30-second narration with soft background music
-> "Task created: task-xyz789"
> check audio task-xyz789
-> "Done. Saved to ~/.ugent/media/3b/hash.mp3"Audio generation also supports:
- Reference audio URLs for voice cloning (up to 3 clips)
- Reference image URL for visual scene context
- Speech rate and pitch rate adjustments
Available Models
| Model | Type | Key Features |
|---|---|---|
dreamina-seedance-2-5-260807 | Video | 30s clips, 4K, 50 references, region editing, lip-synced audio |
seedance-1-5-pro-251215 | Video | Stable model, 5-10s clips, native audio (Dual-Branch) |
seedance-1-0-pro-250528 | Video | Legacy model |
seed-audio-1-0 | Audio | Voice, music, SFX, voice cloning, 20+ languages, 120s |
Token-based Pricing
BytePlus bills Seedance video generation per million tokens, not per second. Text-to-video and image-to-video cost approximately $6.40/1M tokens; video-to-video (with reference clips) costs approximately $3.90/1M. Seedance 2.5 pricing is not yet published — check the Volcengine pricing page for details.
Supported Media Inputs
| Input Type | How It Works |
|---|---|
| Public URL | Passed through as-is (recommended) |
| Data URI | data:image/png;base64,... — sent inline |
| Local file | Read, MIME-inferred, encoded to base64 automatically |
Complete Configuration Example
[llm.instances.seedance]
type = "bytedance"
api_key_ref = "@byteplus_api_key"
base_url = "https://ark.ap-southeast.bytepluses.com/api/v3"
default_model = "dreamina-seedance-2-5-260807"
# Video generation (Seedance 2.5)
[llm.instances.seedance.media.generation.video]
enabled = true
model = "dreamina-seedance-2-5-260807"
default_resolution = "4k"
default_ratio = "16:9"
default_duration = 10
watermark = false
max_poll_duration_secs = 900
poll_schedule = [30, 5, 120, 15, 900, 30]
# Audio generation (Seed Audio 1.0)
[llm.instances.seedance.media.generation.audio]
enabled = true
model = "seed-audio-1-0"
default_format = "mp3"
default_sample_rate = 44100
max_poll_duration_secs = 600
poll_schedule = [30, 5, 120, 15, 600, 30]Using Seedance with Other Providers
Since Seedance is media-only, pair it with a text-capable provider:
[llm]
default_instance = "gemini"
[llm.instances.gemini]
type = "google"
api_key_ref = "@google_api_key"
default_model = "gemini-3.5-pro"
[llm.instances.seedance]
type = "bytedance"
api_key_ref = "@byteplus_api_key"
default_model = "dreamina-seedance-2-5-260807"
[llm.instances.seedance.media.generation.video]
enabled = true
model = "dreamina-seedance-2-5-260807"
max_poll_duration_secs = 900
[llm.instances.seedance.media.generation.audio]
enabled = true
model = "seed-audio-1-0"Text chat uses Gemini; video and audio generation routes to Seedance automatically.