BYTEDANCE · VIDEO API

Seedance 2.5 & 2.0 API

Text, images and references to video with Doubao Seedance (ByteDance, China-region versions), through one asynchronous API.

Seedance 2.516:9
One key: 4 video models + text & images
Pay as you go, no subscription
Failed generations are not charged
Stripe + USDT
First top-up: pay $3.00, get $5.00 balance

PRICING

Seedance API pricing: 2.5, 2.0, Fast & Mini

Choose a version, then a resolution. Rates below are for text-to-video output; video references can add input charges.

per output second · USD
Model480p720p1080p4K
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.119Not supportedNot supported
Seedance 2.0 Miniseedance-2.0-mini-cn$0.048$0.074Not supportedNot 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 2026

What will your video API cost?

Estimate a month of text-to-video generation, with no input video.

Model
Resolution
Audio

Estimated monthly cost$88.00
Per clip
$0.88
Output seconds / month
500
Get API key →

Estimate = output rate × seconds × clips. Actual generated duration determines settlement; reference inputs may add charges.

  • Draft at 480p
  • Use Fast or Mini for drafts
  • Failed generations are not charged

Top-up tiers & offers

Seedance 2.5 · 480p · Audio off · Estimate at the selected settings

Balance creditYou payDiscountVideo seconds · estimateTop up
$5.00First top-up$3.00$2.00≈ 28 sTop up →
$50.00$48.00$2.00≈ 284 sTop up →
$100.00$95.00$5.00≈ 568 sTop up →
$200.00$185.00$15.00≈ 1,136 sTop up →
$500.00$450.00$50.00≈ 2,840 sTop up →

First-top-up and tier offers are separate. Checkout confirms the applicable offer. Available methods are confirmed at checkout.

What can you make with Seedance?

Doubao Seedance is ByteDance’s China-region model family. Choose the version for the duration, references and output you need.

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.

Seedance 2.5 reference to video

Use up to 30 reference images to guide subjects and visual style. Use it for product videos.

Seedance 2.5 image to video

Animate a first frame or guide both the first and last frames. Output follows the first image. Use it for storyboards and previs.

Seedance 4K: choose Seedance 2.0

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.

Seedance audio: sound on or off

Generate synchronized dialogue, music, and sound effects—or choose silent output. All four versions have an audio switch.

Seedance Fast & Mini: 480p or 720p

Both support 4–15 seconds, first / first-and-last frames, up to 9 reference images and audio on / off.

VIDEO MODELS

One API key. Four video models.

Seedance, Kling, MiniMax H3 and WAN, from one balance. Use the same key for text and image models too.

View all video models →

Seedance 2.5

On this page
Seedance 2.516:9

For clips up to 30 seconds and 30 reference images.

From · 480p
$0.176 / s
Max. duration
30 s
Top resolution
1080p
Explore API →

Kling 3.0

Kling 3.016:9

For six custom shots with their own prompts and durations.

From · Standard 720p · Audio off
$0.099 / s
Max. duration
15 s
Top resolution
4K
Explore API →

MiniMax H3

MiniMax H316:9

For 2K reference-led video with native audio.

From · 768p
$0.05 / s
Max. duration
15 s
Top resolution
2K
Explore API →

WAN 3.0

WAN 3.016:9

For reference-led clips up to 30 seconds.

From · 480p
$0.047 / s
Max. duration
30 s
Top resolution
1080p
Explore API →
Shared prompt

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

Get a Seedance API key and make your first call

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.

Show the AI agent instructions
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.mp4

Seedance API parameters & public model IDs

Use the public -cn ID in your request. All four models accept text-to-video, image-to-video and reference-to-video operations.

ModelSupported inputsDuration rangeResolutionReference imagesAudio
Seedance 2.5seedance-2.5-cntext_to_videoimage_to_videoreference_to_video4–30 s480p / 720p / 1080pUp to 30on / off
Seedance 2.0seedance-2.0-cntext_to_videoimage_to_videoreference_to_video4–15 s480p / 720p / 1080p / 4KUp to 9on / off
Seedance 2.0 Fastseedance-2.0-fast-cntext_to_videoimage_to_videoreference_to_video4–15 s480p / 720pUp to 9on / off
Seedance 2.0 Miniseedance-2.0-mini-cntext_to_videoimage_to_videoreference_to_video4–15 s480p / 720pUp to 9on / off

Frames & aspect ratio

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

Seedance API questions, answered

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 examples

BETTERTOKEN · SEEDANCE API

Ready for your first Seedance video?

First top-up: pay $3.00, get $5.00 balance