Seedance 2.5: 30 seconds in one video
Create videos from 4 to 30 seconds. Describe multiple shots and camera moves in your prompt. Use it for 30-second ads.
BYTEDANCE · VIDEO API
Text, images and references to video with Doubao Seedance (ByteDance, China-region versions), through one asynchronous API.
PRICING
Choose a version, then a resolution. Rates below are for text-to-video output; video references can add input charges.
| Model | 480p | 720p | 1080p | 4K |
|---|---|---|---|---|
Seedance 2.5seedance-2.5-cn | $0.176 | $0.378 | $0.942 | Not supported |
Seedance 2.0seedance-2.0-cn | $0.097 | $0.208 | $0.601 | $1.301 |
Seedance 2.0 Fastseedance-2.0-fast-cn | $0.078 | $0.119 | Not supported | Not supported |
Seedance 2.0 Miniseedance-2.0-mini-cn | $0.048 | $0.074 | Not supported | Not supported |
Only models currently on sale are listed. These are China-region versions.
Price snapshot · 2026-11-09Volcano Engine pricing ↗Volcano Engine · Checked 7 Nov 2026Estimate a month of text-to-video generation, with no input video.
Estimate = output rate × seconds × clips. Actual generated duration determines settlement; reference inputs may add charges.
Seedance 2.5 · 480p · Audio off · Estimate at the selected settings
| Balance credit | You pay | Discount | Video seconds · estimate | Top up |
|---|---|---|---|---|
| $5.00First top-up | $3.00 | $2.00 | ≈ 28 s | Top up → |
| $50.00 | $48.00 | $2.00 | ≈ 284 s | Top up → |
| $100.00 | $95.00 | $5.00 | ≈ 568 s | Top up → |
| $200.00 | $185.00 | $15.00 | ≈ 1,136 s | Top up → |
| $500.00 | $450.00 | $50.00 | ≈ 2,840 s | Top up → |
First-top-up and tier offers are separate. Checkout confirms the applicable offer. Available methods are confirmed at checkout.
Doubao Seedance is ByteDance’s China-region model family. Choose the version for the duration, references and output you need.
Create videos from 4 to 30 seconds. Describe multiple shots and camera moves in your prompt. Use it for 30-second ads.
Use up to 30 reference images to guide subjects and visual style. Use it for product videos.
Animate a first frame or guide both the first and last frames. Output follows the first image. Use it for storyboards and previs.
Output up to 4K with Seedance 2.0, for videos from 4 to 15 seconds. Guide subjects and style with up to 9 reference images. Use it for product close-ups.
Generate synchronized dialogue, music, and sound effects—or choose silent output. All four versions have an audio switch.
Both support 4–15 seconds, first / first-and-last frames, up to 9 reference images and audio on / off.
VIDEO MODELS
Seedance, Kling, MiniMax H3 and WAN, from one balance. Use the same key for text and image models too.
For clips up to 30 seconds and 30 reference images.
For six custom shots with their own prompts and durations.
For 2K reference-led video with native audio.
For reference-led clips up to 30 seconds.
English original · generation prompt
Night city street after rain, seen from a slow forward dolly shot at low height: wet asphalt reflecting colorful lights, light trails from passing cars, soft steam rising from a street grate, light drizzle. Generic modern architecture. No people, no readable text, signs, logos, license plates, flags or recognizable landmarks. Cinematic, realistic.
Same async API: quote → create → poll → download. Switch the model and use its supported parameters.
DEVELOPER QUICKSTART
Quote the request, create a task, poll its status, then download the completed video.Keep the same idempotency key when retrying a create request. A task accepted by the API is still processing; download only after completed.These are minimal examples — in production, persist the Idempotency-Key and task ID so you can resume after a restart.
Integrate the BetterToken Seedance video API in the user's application.
Read BETTERTOKEN_API_KEY only from the environment; never embed, log or send it to analytics.
Base: https://bettertoken.ai/v1
Model: seedance-2.5-cn (China region; do not substitute a global ID).
Prompt: A rainy city street at night, slow forward camera move
Use JSON text_to_video, duration {mode:"fixed",seconds:5}, output {resolution:"480p",aspect_ratio:"16:9",format:"mp4"}, audio {mode:"off"}.
POST /videos/quote with that request for a non-reserving estimate. It is authenticated, not a public guest price endpoint.
Persist a new Idempotency-Key and the exact body outside the process BEFORE POST /videos; after a restart load that saved state, or resume the saved task ID after acceptance. Reuse both after an uncertain response; never submit a new paid task merely because of a timeout.
After 202 acceptance on /videos (200 on the compatibility endpoint), save id and GET /videos/{id} every 5 seconds. Handle queued, in_progress, completed, failed and canceled. An uncertain submission remains in_progress with stage=reconciliation; do not create a replacement task. Back off on 429/Retry-After. Poll up to 360 times, waiting 5 seconds between requests; network delays and rate-limit backoff can extend the total observation time. Preserve the task ID when stopping; do not cancel or recreate the task.
After completed, request GET /videos/{id}/content with an authorized owner API key; an expired artifact still returns 410 video_artifact_expired. Content is private, not a public showcase URL. Handle expired downloads separately from generation failure.
Inspect billing for final charges. Confirmed failed/canceled generation releases/refunds the original funding source through financial processing; a status alone does not prove the refund is committed; unknown submission and post-generation delivery failure require separate handling.
Handle relay errors under error, including 402 video_insufficient_balance, 409 video_idempotency_conflict/video_acceptance_pending, 422 validation errors and 503 uncertain/unavailable acceptance. Keep the original key and body on uncertain responses. No web membership or in-page generation UI.# Minimal example: persist the Idempotency-Key and task ID in production.
# Requires curl, jq and BETTERTOKEN_API_KEY in your environment.
BASE=https://bettertoken.ai/v1
IDEM="$(uuidgen)"
cat > request.json <<'JSON'
{
"model": "seedance-2.5-cn",
"operation": "text_to_video",
"prompt": "A rainy city street at night, slow forward camera move",
"duration": {
"mode": "fixed",
"seconds": 5
},
"output": {
"resolution": "480p",
"aspect_ratio": "16:9",
"format": "mp4"
},
"audio": {
"mode": "off"
}
}
JSON
curl --fail-with-body "$BASE/videos/quote" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-H 'Content-Type: application/json' --data-binary @request.json || exit 1
TASK=$(curl --fail-with-body "$BASE/videos" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-H "Idempotency-Key: $IDEM" \
-H 'Content-Type: application/json' --data-binary @request.json) || exit 1
ID=$(printf '%s' "$TASK" | jq -er '.id') || exit 1
# Poll up to 360 times, waiting 5 seconds between requests.
# Network delays can extend the total time.
for attempt in $(seq 1 360); do
TASK=$(curl --fail-with-body "$BASE/videos/$ID" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY") || exit 1
STATUS=$(printf '%s' "$TASK" | jq -r '.status')
case "$STATUS" in
completed) break ;;
failed|canceled) printf '%s\n' "$TASK"; exit 1 ;;
esac
sleep 5
done
[ "$STATUS" = completed ] || { echo "Resume polling task: $ID"; exit 1; }
curl --fail-with-body "$BASE/videos/$ID/content" \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" -o video.mp4Use the public -cn ID in your request. All four models accept text-to-video, image-to-video and reference-to-video operations.
| Model | Supported inputs | Duration range | Resolution | Reference images | Audio |
|---|---|---|---|---|---|
Seedance 2.5seedance-2.5-cn | text_to_videoimage_to_videoreference_to_video | 4–30 s | 480p / 720p / 1080p | Up to 30 | on / off |
Seedance 2.0seedance-2.0-cn | text_to_videoimage_to_videoreference_to_video | 4–15 s | 480p / 720p / 1080p / 4K | Up to 9 | on / off |
Seedance 2.0 Fastseedance-2.0-fast-cn | text_to_videoimage_to_videoreference_to_video | 4–15 s | 480p / 720p | Up to 9 | on / off |
Seedance 2.0 Miniseedance-2.0-mini-cn | text_to_videoimage_to_videoreference_to_video | 4–15 s | 480p / 720p | Up to 9 | on / off |
A first frame is required for frame-based input; a last frame is optional. Seedance 2.5 image-to-video requires aspect_ratio="adaptive". The 2.0 family also accepts a chosen ratio. Reference images guide subjects and style; they do not guarantee perfect consistency.
FAQ
At the current text-to-video price, 5 seconds cost $0.88 at 480p or $1.89 at 720p, without reference inputs. These are dated estimates; final settlement uses the actual generated duration.
View API examplesSign up or sign in and prepare or reuse an API key in Workspace, then return to this page. The same key can access Seedance 2.5, 2.0, Fast and Mini when its model permissions and funding allow. Add balance, copy a code example and call the asynchronous video API from your own application.
View API examplesBetterToken is a third-party API provider and is not affiliated with ByteDance. Seedance is a ByteDance model family. These China-region model IDs end in -cn and map to Doubao Seedance models. International Dreamina versions may have different capabilities, access requirements and prices. Use the exact model ID in the code examples.
View API examplesConfirmed generation failures are not charged. After a confirmed failure or cancellation, held funds are released or returned to the original balance or allowance. A failed task alone does not mean a refund has finished. If it is unclear whether a request was accepted, we check it first. Problems downloading a successfully generated video, or an expired file, are handled separately. Check the billing details for your task.
View API examplesPay by card through Stripe or with USDT. Available methods are confirmed at checkout.
View API examplesSeedance 2.5 supports 4–30 seconds. Seedance 2.0, Fast and Mini support 4–15 seconds. Durations are whole seconds. Seedance 2.5 supports 480p, 720p and 1080p. Seedance 2.0 also supports 4K output. Fast and Mini support 480p and 720p.
View API examplesGenerate synchronized dialogue, music, and sound effects—or choose silent output. All four versions have an audio switch.
View API examplesSeedance 2.5 is the newest option and supports clips up to 30 seconds. Seedance 2.0 supports up to 15 seconds. Fast and Mini have lower starting rates, at 480p and 720p. Compare the sample results; “Fast” is a model name, not a measured speed guarantee. No. This page lists API usage prices. A website membership or credit bundle is a different product, and does not represent an API balance. There is no in-page web generation on this page.
View API examplesBETTERTOKEN · SEEDANCE API
First top-up: pay $3.00, get $5.00 balance