Overview
doubao-seedance-2-0-260128 (standard), doubao-seedance-2-0-fast-260128 (fast), and doubao-seedance-2-0-mini-260615 (mini/lite) are ByteDance’s latest video generation model family — three models running in parallel, 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+last/first frame image-to-video, and multi-modal inputs (0-9 reference images + 0-3 reference videos / 0-3 reference audios) — and can generate voice, sound effects, and background music synchronized with the visuals. Mini, added in June 2026, is the cost-efficiency pick: about half the standard model’s unit price and faster generation, capped at 720p.-1 for model-chosen length), three resolution tiers (480p/720p/1080p; 1080p standard model only), 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
Visual API Testing
Async Task Lookup / Download
Why APIYI’s Seedance 2.0?
A note on positioning first: this model carries no official discount, and APIYI doesn’t price it for profit — it is offered to secure supply and serve customers. The real value of going through APIYI is not “cheaper”, but access and experience: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.Supply-first Pricing · On Par with Official
Zero-friction Access · No ID Verification
api.apiyi.com directly with a single Token.Virtual-face Whitelist Access
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+Last / First Frame
return_last_frame to chain clips into longer continuous videos.Multi-modal Reference-to-Video
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
tokens ≈ (input video duration + output duration)(s) × output width × output height × 24 / 1024 (input video duration is 0 for text-/image-to-video; 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, output duration, and whether the input includes video.
Official price anchors (16:9 / 5 s output, CNY per video)
① No input video (text-to-video / image-to-video / reference images):video_url; input video 2-15 s, low end ≈ 2-4 s input, high end ≈ 15 s input):
usage.completion_tokens.usage.completion_tokens.
- Final charges follow the console’s model pricing and call logs
- Tasks are pre-charged on submission and settled on completion — your balance fluctuates briefly; reconcile against call logs, where one video produces two charge entries (see “Reading charges in the logs” below)
- 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
Reading charges in the logs (pre-charge + settlement)
Open the console log page atapi.apiyi.com/log and search for the model name doubao-seedance-2-0 to see every charge. One video produces two charge entries:
- Pre-charge: an estimated amount deducted when the task is submitted (log entry labeled “non-streaming”, showing the token and group) — $0.449998 in the screenshot below
- Settlement (charge or refund): after the task completes, the difference is settled against the actual generated tokens (log entry labeled “streaming”, with a completion-token count) — $5.611858 below; 1080p usually incurs an additional charge

Two charge entries for one 15 s 1080p video: pre-charge + settlement
- The first entry’s (pre-charge) timestamp is the video’s submission time; its “first byte” value is how long the submission took to return a task ID (e.g.
首字节:3秒/ first byte: 3 s) — not the generation time - The settlement entry shows
流式(streaming) and首字节:<1秒(first byte under 1 s) — these are just internal markers on the settlement record, not a sign of any problem - The video’s actual generation time is the “耗时” (elapsed) column on the “Async tasks” page (
api.apiyi.com/task) in the top navigation

The first log entry's timestamp = submission time, and its first-byte value (3 s) is the submission latency; this fast example settled as a refund (negative amount), total cost 0.360000 − 0.022750 = 0.337250 USD

The elapsed column on the Async tasks page is the actual video generation time, e.g. 158 s, 303 s
api.apiyi.com/task, and they line up exactly with the charges:
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”.
Technical Specs
API Endpoints
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):How adaptive works
- Text-to-video: the model infers the best ratio from your prompt
- First+last / first frame: matches the first-frame image’s ratio (mismatched images are center-cropped)
- Multi-modal reference-to-video: 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 the lite model doubao-seedance-2-0-mini-260615 for batch production and cost-sensitive workloads (about half the standard price and the fastest generation, capped at 720p); choose fast as the middle ground.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.Chain clips with return_last_frame
return_last_frame: true to get a watermark-free last-frame png, then use it as the next task’s first frame to build continuous multi-clip videos.Error Codes & Retries
- 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 gzip errors / returns truncated non-JSON bodies
Python requests raises gzip errors / returns truncated non-JSON bodies
content-encoding: gzip header does not match the actual body encoding. Symptoms include ContentDecodingError, a truncated non-JSON body (e.g. the leading {" is lost and you only get id":"cgt-xxx"}), or intermittent 400s. 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.Standard vs fast vs mini — which one?
Standard vs fast vs mini — 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+last frame, first frame, and reference images?
Can I mix first+last frame, first frame, and reference images?
first_frame/last_frame roles), first frame (1 image), and multi-modal reference-to-video (0-9 images + 0-3 videos + 0-3 audios, at least 1 image or 1 video, image role 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