Seedance 2.5 is ByteDance's video generation and editing model, supporting text, image, video, and audio input for long-form narrative clips up to 30 seconds long, built from up to 50 reference assets.
| Developer | ByteDance |
|---|---|
| Model ID | bytedance/seedance-2-5 |
| Supported inputs | Image, Text, Video, Audio |
| Output | Video |
| Max duration | 30 seconds |
| Reference assets | Up to 50 (30 images, 10 videos, 10 audio files) |
The $/1M rate above is a per-token price, not a flat price per second of video. Your actual cost = tokens generated × rate, and the number of tokens depends on resolution, frame rate, and duration.
Without video input — $13.91 / 1M tokens
Use this rate for plain text-to-video or image-to-video generation (no reference video).
Formula: tokens = output duration × width × height × frame rate ÷ 1024
Example — a 30-second, 720p clip generated from text:
tokens = 30 × 1280 × 720 × 24 ÷ 1024 = 648,000
cost = 648,000 × $13.91 / 1,000,000 ≈ $9.01
With video input — $8.32 / 1M tokens
Use this rate when editing or extending an existing video. The reference video's own duration is billed too — it's added to the output duration before the token count is calculated.
Formula: tokens = (input video duration + output video duration) × width × height × frame rate ÷ 1024
Example — a 5-second edit using a 30-second reference video, 720p:
tokens = (30 + 5) × 1280 × 720 × 24 ÷ 1024 = 756,000
cost = 756,000 × $8.32 / 1,000,000 ≈ $6.29
Note that a longer reference video can end up costing more overall than a plain no-reference clip, even though the per-token rate is lower — because the reference duration adds to the token count.
Long-form narrative video
Generate up to 30 seconds of continuous video from up to 50 reference assets.
Controllable editing and extension
Edit and extend existing videos with precise, second-level control.
Multi-language storytelling
Native support for generating content in more than 10 languages for global campaigns.
Measured on the AI/ML API gateway across live traffic. Figures are medians unless stated. Last updated 2026-10-12.
It is suited to advertising and brand video production, including complete ad spots and marketing materials with longer single-pass storytelling.
It is suited to product demonstrations and e-commerce video workflows, where existing creative materials can be turned into complete videos without stitching short clips together.
It is suited to short dramas and film previsualization, with references describing use in short-form drama teams and concept-heavy projects that need continuity before final production.
It is suited to industrial and instructional content, including industrial simulations, process training, equipment demonstrations, and education or training materials.
import requests, time headers = {"Authorization": "Bearer " + AIMLAPI_KEY} job = requests.post( "https://api.aimlapi.com/v2/video/generations", headers=headers, json={ "model": "bytedance/seedance-2-5", "prompt": "A serene timelapse of clouds over a mountain range" }, ).json() gid = job["id"] while True: res = requests.get(f"https://api.aimlapi.com/v2/video/generations?generation_id={gid}", headers=headers).json() if res.get("status") in ("completed", "error"): break time.sleep(5) print(res["video"]["url"])
const headers = { Authorization: `Bearer ${process.env.AIMLAPI_KEY}`, "Content-Type": "application/json", }; const job = await (await fetch("https://api.aimlapi.com/v2/video/generations", { method: "POST", headers, body: JSON.stringify({ "model": "bytedance/seedance-2-5", "prompt": "A serene timelapse of clouds over a mountain range" }), })).json(); let res; do { await new Promise((r) => setTimeout(r, 5000)); res = await (await fetch(`https://api.aimlapi.com/v2/video/generations?generation_id=${job.id}`, { headers })).json(); } while (!["completed", "error"].includes(res.status)); console.log(res.video.url);
# submit the generation — the response contains the job "id" curl -X POST https://api.aimlapi.com/v2/video/generations \ -H "Authorization: Bearer $AIMLAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"bytedance/seedance-2-5","prompt":"A serene timelapse of clouds over a mountain range"}' # then poll until status is "completed" — video.url holds the result curl "https://api.aimlapi.com/v2/video/generations?generation_id={id}" -H "Authorization: Bearer $AIMLAPI_KEY"
OpenAI-compatible — swap the base URL and it works with your existing SDK.
| Type | Price |
|---|---|
| Output | |
Without video input: $13.91 / 1M tokens, tokens = output_duration × width × height × fps ÷ 1024. With video input: $8.32 / 1M tokens, tokens = (input_duration + output_duration) × width × height × fps ÷ 1024. See worked examples in the section above.
| Model | Input | Output | Context | Best for |
|---|---|---|---|---|
Seedance 2.5 This page | Long-form narrative video with strong editing and multi-language | |||
| Video generation | ||||
| Video generation | ||||
| Video generation | ||||
| Cinematic video + native audio |
Seedance 2.5 takes image, text, video, audio as input and returns video.
Seedance 2.5 became available on August 7, 2026.
Seedance 2.5 is priced at $8.32 / 1M.
Seedance 2.5 is billed per generation — a fixed charge per output rather than by prompt length.
Yes, Seedance 2.5 accepts image input as well as a text prompt.
Seedance 2.5 was built by ByteDance.
Use bytedance/seedance-2-5 as the model id on AI/ML API.
Yes. Seedance 2.5 is served through AI/ML API, so the same key and endpoint format used for other models applies.
Yes, it supports a 30-second continuous narrative in a single generation.
Yes, it produces synchronized audio alongside the video output.
It accepts image, text, video, and audio inputs and can generate video guided by reference assets.
It supports up to 50 reference assets total: 30 images, 10 videos, and 10 audio clips.