Seedance 2.5 icon
Coming soon Video by ByteDance

Seedance 2.5 API

Generate long-form cinematic AI video with ByteDance's Seedance 2.5 through one unified API. Single-pass clips up to 30 seconds with native synchronized audio, up to 50 multimodal references, and 4K output — behind one REST endpoint with async jobs and webhooks, and no separate ByteDance account to manage.

Integrate Seedance 2.5 with a single API call — one key, one unified endpoint, and shared billing across every model on Apiframe.

model: "seedance-2.5"
Coming soon

What's special about Seedance 2.5

30-second single-pass narrative

Seedance 2.5 generates a single native clip up to 30 seconds in one pass, with scene changes and tempo shifts built into the same generation. Because the whole shot holds one continuous context, motion, lighting, and identity stay coherent instead of drifting at each splice point the way stitched clips do.

Up to 50 multimodal references

A single generation can take up to 50 multimodal references — reference images, short video clips, and audio — a big jump from Seedance 2. Tag each input with a role so the model knows which one should pin down character identity, product look, brand palette, camera style, or voice.

Native 4K with synchronized audio

It renders natively at up to 4K (3840x2160) with 10-bit color for smoother gradients and more room in post. Audio is co-generated in the same pass rather than dubbed on afterward, so music, sound effects, dialogue, and lip-sync land synchronized to the picture.

Director-grade camera and multi-shot control

Describe multi-shot sequences and camera direction — pans, dollies, orbits, focus changes — directly in the prompt, and Seedance 2.5 keeps the subject consistent across cuts. One call returns an edited-feeling sequence rather than a single take, with roughly 20% better prompt adherence than Seedance 2.

Local editing without a full re-roll

Edit a specific region or element while the rest of the frame stays visually stable, or edit an existing clip as a reference video: keep its character, environment, camera movement, composition, action rhythm, and duration, and change only what you ask for — no regenerating the whole take.

Stronger consistency, multilingual output

It holds a character's identity steady across movement, angle changes, and scene transitions, which matters for films, brand spots, and serialized content. Native audio and on-screen text render across many languages, so one generation can localize without a separate pass.

Made with Seedance 2.5

A few outputs generated through the Seedance 2.5 API on Apiframe.

Sample coming soon

Drone shot flying over a tropical coastline at sunrise, smooth cinematic motion

Sample coming soon

A vintage car driving through a rainy neon city at night, reflections on the asphalt

Sample coming soon

Time-lapse of clouds rolling over a mountain range in warm golden light

Overview

Endpoint
POST /v2/videos/generate
Model ID
seedance-2.5
Params key
seedanceParams
Modality
Video
Provider
ByteDance
Avg. completion
~120s

Capabilities

Aspect ratios21:9, 16:9, 4:3, 1:1, 3:4, 9:16
Resolutions480p, 720p, 1080p, 4k
Durations4s, 6s, 8s, 10s, 12s, 15s
Image inputSupported
AudioSupported
Avg. time~120s

Quick start

Send a single POST /v2/videos/generate request with your API key to generate with Seedance 2.5. The call returns a jobId you can poll or receive via webhook.

curl -X POST https://api.apiframe.ai/v2/videos/generate \
  -H "X-API-Key: afk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
        "prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
        "model": "seedance-2.5",
        "seedanceParams": {
            "resolution": "720p",
            "start_image": "https://example.com/input.jpg",
            "generate_audio": false,
            "end_image": "https://example.com/input.jpg"
        }
    }'
import requests

response = requests.post(
    "https://api.apiframe.ai/v2/videos/generate",
    headers={
        "X-API-Key": "afk_your_api_key_here",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
        "model": "seedance-2.5",
        "seedanceParams": {
            "resolution": "720p",
            "start_image": "https://example.com/input.jpg",
            "generate_audio": False,
            "end_image": "https://example.com/input.jpg"
        }
    },
)
print(response.json())  # { "jobId": "...", "status": "QUEUED" }
const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
  method: "POST",
  headers: {
    "X-API-Key": "afk_your_api_key_here",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
    "model": "seedance-2.5",
    "seedanceParams": {
      "resolution": "720p",
      "start_image": "https://example.com/input.jpg",
      "generate_audio": false,
      "end_image": "https://example.com/input.jpg"
    }
  }),
});
const { jobId } = await response.json();
console.log(jobId);

Response & job lifecycle

Generation is asynchronous. A successful submission returns 202 Accepted with a jobId. Poll GET /v2/jobs/{id} (or supply a webhook_url) until the status is COMPLETED; the result field then holds the output URL(s).

1. Submission response (202)

{
  "jobId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "status": "QUEUED"
}

2. Poll for the result

curl https://api.apiframe.ai/v2/jobs/JOB_ID \
  -H "X-API-Key: afk_your_api_key_here"
import requests, time

while True:
    job = requests.get(
        "https://api.apiframe.ai/v2/jobs/JOB_ID",
        headers={"X-API-Key": "afk_your_api_key_here"},
    ).json()
    if job["status"] in ("COMPLETED", "FAILED"):
        break
    time.sleep(2)
print(job["result"])
let job;
do {
  await new Promise((r) => setTimeout(r, 2000));
  job = await fetch("https://api.apiframe.ai/v2/jobs/JOB_ID", {
    headers: { "X-API-Key": "afk_your_api_key_here" },
  }).then((r) => r.json());
} while (job.status !== "COMPLETED" && job.status !== "FAILED");
console.log(job.result);

Input schema

Request parameters accepted by the Seedance 2.5 endpoint. Model-specific options are nested under the params object shown below.

Parameter Type Required Default Allowed / range Description
prompt string required Text description of what to generate.
model string required "seedance-2.5" "seedance-2.5" The model identifier for this endpoint.
seedanceParams.resolution string optional "720p" "480p", "720p", "1080p", "4k" Resolution
seedanceParams.start_image string (URL) optional Use a still as the first frame of the clip.
seedanceParams.generate_audio boolean optional false Generate audio
seedanceParams.end_image string (URL) optional Optional last frame to control the ending.
seedanceParams.reference_image_urls string[] (URLs) optional Reference images
seedanceParams.reference_video_urls string[] (URLs) optional Reference videos
seedanceParams.reference_audio_urls string[] (URLs) optional Reference audio
seedanceParams.return_last_frame boolean optional false Also return the final frame as a still image.
seedanceParams.web_search boolean optional false Web search
seedanceParams.camera_fixed boolean optional false Disable camera movement.
seedanceParams.seed number optional step 1 Reuse a number to reproduce the same result.

Frequently Asked Questions

Common questions about the Seedance 2.5 API.

What is Seedance 2.5?

Seedance 2.5 is ByteDance's next-generation multimodal AI video model and a generational leap from Seedance 2.0, announced in June 2026 with general availability in early July 2026. Its headline features are single-pass 30-second clips, up to 50 multimodal references, native 4K output, region-level local editing, director-grade camera control, and native synchronized audio.

What inputs does it accept?

Text, image, audio, and video — up to 50 multimodal references combined in a single generation. Tag each input with a role to guide character, style, motion, camera, or sound.

Does it generate audio?

Yes. Audio is co-generated in the same latent space as the picture, producing synchronized native audio — music, sound effects, dialogue, and lip-sync — instead of a silent clip you score afterward.

How long are the clips and what resolution?

Up to 30 seconds in a single pass, at up to 4K (3840x2160) with 10-bit color, across multiple aspect ratios. Pricing is per second of output.

Can it edit and extend videos?

Yes. It supports region-level local editing — change one element while the rest of the frame stays consistent — and video-reference editing that preserves the source clip's character, environment, camera movement, composition, action rhythm, and duration while swapping or adding what you specify.

How is it billed?

Per second of generated video, so a longer clip simply costs proportionally more — you only pay for successful generations.

Still have questions?

Start building with the Seedance 2.5 API

Get your API key and integrate Seedance 2.5 in minutes — Pay-as-you-go.

Free credits to start
One API for every model
Webhooks, SDKs & idempotency
No provider account required

Questions? Join our Discord or contact sales.