Overview
doubao-seedance-2-0-260128 (standard) and doubao-seedance-2-0-fast-260128 (fast) are ByteDance’s latest video generation models, served through APIYI on official Volcengine Mainland China resources (not the BytePlus international edition) with upstream content-safety built in. They support text-to-video, first/first+last frame image-to-video, 1-9 reference images, and reference video/audio inputs — and can generate voice, sound effects, and background music synchronized with the visuals.-1 for model-chosen length), three resolution tiers (480p/720p/1080p), 6 aspect ratios plus adaptive, synchronized audio on by default, and multilingual prompts (Chinese, English, Japanese, Spanish, Portuguese, Indonesian). Built for short-video production, e-commerce assets, motion design, and virtual-human content at scale.Video Generation API Reference
POST /seedance/api/v3/contents/generations/tasks — async task endpoint with an interactive Playground and full polling/download code.API Manual
Why APIYI’s Seedance 2.0?
Benchmarked against the Volcengine official channel, optimized for production workloads across stability, cost, and onboarding:Official Resource · Mainland Edition
Unlimited Concurrency · No Queuing
running immediately with zero queuing (measured 2026-06-06 (UTC+8)) — ready for batch production at scale.Official Pricing + Top-up Bonuses
Zero-friction Global Access
api.apiyi.com directly with a single Token.Professional Support
Key Features
Three Tiers · Same Price per Tier
Synchronized Audio by Default
generate_audio defaults to true: voice, sound effects, and background music are generated to match the visuals. Put spoken lines in double quotes to improve voice-over quality.4-15 s Controllable Duration
duration accepts whole seconds from 4 to 15, or -1 to let the model pick a length (billed by actual output). Fixed 24 fps.Multilingual Prompts
First / First+Last Frame
return_last_frame to chain clips into longer continuous videos.Multi-modal Reference
Async Task Flow
task_id, poll for status, then download the mp4 from content.video_url (link valid for 24 hours).Reproducible Seeds
seed for similar results across runs. watermark defaults to false — output is watermark-free.Pricing
Token-based billing:tokens ≈ duration(s) × width × height × 24 / 1024 (verified in our tests to within 0.1%). Since every ratio in a tier has the same pixel area, price depends only on the resolution tier and duration. Official public pricing (16:9 / 5 s / no input video):
| Resolution | Fast | Standard |
|---|---|---|
| 480p | CNY 1.86 | CNY 2.31 |
| 720p | CNY 4.00 | CNY 4.97 |
| 1080p | Not supported | CNY 12.39 |
| Resolution | Per 5 s | Per second | Per second (¥) | Best price | Best price (¥) |
|---|---|---|---|---|---|
| 480p | ≈$0.37 | $0.073/s | ¥0.51/s | $0.061/s | ¥0.43/s |
| 720p | ≈$0.79 | $0.157/s | ¥1.10/s | $0.131/s | ¥0.92/s |
| 1080p | ≈$1.77 | $0.354/s | ¥2.48/s | $0.295/s | ¥2.07/s |
- Final charges follow the console’s model pricing and call logs. Due to tax, FX, and upstream settlement, on-platform billing may run roughly 10% above the official list; with top-up bonuses the effective cost is about on par with the official channel
- Tasks are pre-charged on submission and settled on completion — your balance fluctuates briefly; reconcile against call logs
- Rejected requests (HTTP 400 parameter errors, etc.) are not billed (verified)
- Cost scales linearly with duration: a 15 s video costs about 3× a 5 s one
- Fast and standard bill at the same rate on APIYI — choose fast for speed, standard for 1080p
Group Setup
Seedance 2.0 runs on the dedicatedSeeDance2 group (0.18x rate, CNY-denominated), with two hard requirements: ① the Token’s billing model must be Pay-as-you-go Priority (or Pay-as-you-go) — Pay-per-request tokens cannot route; ② the Token must have the SeeDance2 group enabled. Tokens on the Default group or other video groups will fail with “no available channel for this model”.
| Group | Rate | When to use |
|---|---|---|
SeeDance2 | 0.18x | The only group serving Seedance 2.0 — ample concurrency, no queuing |
| Setup | Best for | How |
|---|---|---|
| A. One shared Token | Personal projects, mixed model usage | Add SeeDance2 to your existing Token’s group list; keep billing model as Pay-as-you-go Priority |
| B. Dedicated Token | Production workloads, separate billing | Create a Token with only the SeeDance2 group — cleaner reporting, quota alerts per business line |
Technical Specs
| Dimension | Value |
|---|---|
| Models | doubao-seedance-2-0-260128 (standard) / doubao-seedance-2-0-fast-260128 (fast) |
| Resolutions | 480p / 720p / 1080p (no 1080p on fast) |
| Aspect ratios | 16:9 4:3 1:1 3:4 9:16 21:9 adaptive (default adaptive) |
| Duration | 4-15 whole seconds, or -1 model-chosen (default 5) |
| Frame rate | Fixed 24 fps (frames parameter not supported) |
| Audio | generate_audio defaults to true; mono |
| Input images | jpeg/png/webp/bmp/tiff/gif/heic/heif; aspect ratio (0.4, 2.5); sides (300, 6000) px; under 30 MB each |
| Input video/audio | Seedance 2.0 only; audio wav/mp3, 2-15 s per clip, up to 3 clips, must accompany an image or video |
| Generation time (measured) | 5 s @720p: ~2-5 min; 1080p: ~3 min; 15 s: ~4.5 min |
| Response fields | content.video_url (mp4 direct link, expires in 24 h), usage.completion_tokens |
| Task retention | task_id queryable for 7 days |
API Endpoints
| Endpoint | Purpose | Content-Type |
|---|---|---|
POST /seedance/api/v3/contents/generations/tasks | Create a video generation task | application/json |
GET /seedance/api/v3/contents/generations/tasks/{id} | Poll task status / fetch the video URL | — |
Resolutions & Aspect Ratios in Detail
A resolution tier defines the pixel area, not the short side. Actual output dimensions per ratio (official values, verified in our tests):| Ratio | 480p | 720p | 1080p (standard only) |
|---|---|---|---|
16:9 | 864×496 | 1280×720 | 1920×1080 |
4:3 | 752×560 | 1112×834 | 1664×1248 |
1:1 | 640×640 | 960×960 | 1440×1440 |
3:4 | 560×752 | 834×1112 | 1248×1664 |
9:16 | 496×864 | 720×1280 | 1080×1920 |
21:9 | 992×432 | 1470×630 | 2206×946 |
adaptive | Model picks one of the above based on the input | Same | Same |
How adaptive works
- Text-to-video: the model infers the best ratio from your prompt
- First / first+last frame: matches the first-frame image’s ratio (mismatched images are center-cropped)
- Multi-modal reference: follows prompt intent, otherwise the first media item (video takes priority over images)
- The actual ratio used is returned in the task response’s
ratiofield
Best Practices
Pick the model by output needs
doubao-seedance-2-0-260128 for 1080p or maximum quality; choose fast for batch production (same price on APIYI — its advantage is speed).Use adaptive to avoid cropping
adaptive so the model matches your source image’s ratio. Lock 9:16 (portrait) or 16:9 (landscape) only when the target platform demands it.Duration is your cost dial
duration: -1 when pacing is best left to the model.Turn audio off when you don't need it
generate_audio defaults to true. Pass false for silent footage you plan to score yourself.Quote dialogue for better voice-over
Add Accept-Encoding: identity in HTTP clients
content-encoding: gzip while the body is uncompressed; auto-decompressing clients such as Python requests raise ContentDecodingError. Adding the Accept-Encoding: identity header avoids this (curl is unaffected).Poll every 15-30 s and download immediately
content.video_url is a signed link valid for 24 hours — copy the file to your own storage as soon as the task succeeds.Error Codes & Retries
| Code | Meaning | Suggested handling |
|---|---|---|
400 | InvalidParameter: bad resolution/ratio/duration (e.g. fast + 1080p) | The message names the offending parameter — fix per the tables above; not billed |
401 | Invalid Token | Check the Bearer Token |
403 | Content moderation rejection (real faces, policy violations) | Change the assets or prompt |
429 | Rate limited / insufficient quota | Exponential backoff; check balance |
5xx | Gateway / backend error | Retry 1-2 times |
Task failed | Generation failed | Inspect the task’s error field; retry with a different seed if needed |
Task expired | Exceeded execution_expires_after (default 48 h) | Resubmit |
- 30-60 s request timeouts are enough for create/poll calls (the wait happens on the task side)
- Poll every 15-30 s with an overall budget of 15+ minutes (longer for 1080p / 15 s tasks)
- Apply exponential backoff on 5xx and timeouts (2 retries)
- Log the task
idand thex-request-idresponse header for troubleshooting
FAQ
I get 'no available channel for this model' — why?
I get 'no available channel for this model' — why?
SeeDance2 group enabled. Tokens on the Default group or other video groups cannot route to this model. Enable the SeeDance2 group in Token Settings and use the Pay-as-you-go Priority billing model.Python requests raises ContentDecodingError / gzip errors
Python requests raises ContentDecodingError / gzip errors
content-encoding: gzip but the body is not compressed. Add "Accept-Encoding": "identity" to your request headers; curl and browser fetch are unaffected.Why does my video have sound? How do I turn it off?
Why does my video have sound? How do I turn it off?
generate_audio defaults to true (verified): the model adds voice, sound effects, and background music automatically. Pass "generate_audio": false explicitly for silent output.Where is the video URL, and why does it stop working?
Where is the video URL, and why does it stop working?
content.video_url in the poll response (not top-level). It is a signed link valid for ~24 hours — download and re-host it immediately. The task_id itself remains queryable for 7 days.What is the success status value?
What is the success status value?
queued → running → succeeded / failed / expired. The success state is succeeded, not completed — an easy mistake when migrating from other video APIs.Can I upload photos of real people for image-to-video?
Can I upload photos of real people for image-to-video?
asset:// IDs), or use licensed face assets.Am I billed for failed or rejected requests?
Am I billed for failed or rejected requests?
How do I estimate token usage? Is portrait more expensive?
How do I estimate token usage? Is portrait more expensive?
tokens ≈ duration(s) × width × height × 24 / 1024, verified to within 0.1%. Every ratio in a tier has the same pixel area (720p 16:9 and 9:16 both cost 108,900 tokens per 5 s) — landscape, portrait, and square all cost the same.Fast vs standard — which one?
Fast vs standard — which one?
What does duration: -1 do?
What does duration: -1 do?
duration field. Fix the duration explicitly if cost predictability matters.Is the frames parameter supported for fractional seconds?
Is the frames parameter supported for fractional seconds?
frames and camera_fixed are Seedance 1.x parameters — not supported by the Seedance 2.0 series. Use whole-second duration instead.Can I mix first-frame, first+last frame, and reference images?
Can I mix first-frame, first+last frame, and reference images?
first_frame/last_frame roles), and multi-modal reference (1-9 images, all reference_image). To approximate “first/last frame + reference”, use reference mode and designate a frame via the prompt.Are there concurrency limits or queues?
Are there concurrency limits or queues?
Any prompt limitations?
Any prompt limitations?
Related Docs
- Video Generation API Reference & Playground -
POST /seedance/api/v3/contents/generations/tasks - Sora 2 Video Generation - OpenAI official-relay video channel
- VEO 3.1 Video Generation - Google official video channel
- Top-up Bonuses - effective cost about on par with the official channel
- API Manual - general calling conventions