MODEL IDbytedance:seedance@2.5
live

Seedance 2.5

ByteDance
by ByteDance

Seedance 2.5 is ByteDance's higher-end multimodal video generation model for production-oriented creative work. It supports native 30-second video generation, larger reference sets across image, video, and audio inputs, and stronger instruction following for complex shots, multilingual prompts, and reference-heavy creative direction. It is especially well suited to branded storytelling, advertising, explainers, and other commercial workflows that need longer continuous scenes, tighter subject and style consistency, and precise edits that preserve the rest of the shot.

Seedance 2.5

Prompting Seedance 2.5

How to prompt Seedance 2.5 for directed text-to-video: the five-layer shot scaffold, camera vocabulary the model reads directly, second-level timing, and native audio.

Introduction

Seedance 2.5 is ByteDance's flagship video model, and it reads a prompt like a shot brief. Framing, subject, action, light, and audio each become a directive, and the returned clip holds all of them at once. The result reads as directed motion, closer to a shot a crew set up than a moving still.

An 8-second fitness workout demo, bright and energetic. A fit athlete in a charcoal training top and shorts performs three controlled kettlebell swings in a clean sunlit gym studio with pale wood floors. A medium tracking shot arcs slowly from her side to a three-quarter front angle as she swings, holding her centered while the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from tall windows on the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell at the bottom of each swing, light airy gym ambience, no music.

That clip came from a single 8-second call. The prompt named the shot (a slow arc), the subject (the athlete and the kettlebell), the action (three controlled swings), the light, and the sound of the effort. This guide covers the five-layer scaffold Seedance rewards, the camera vocabulary it reads directly, how to keep subject motion separate from camera motion, second-level timing, and the native audio track.

The request

Every call is a videoInference task, and the only required field is positivePrompt. Everything else has a sensible default. The hero above came from this call:

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'bytedance:seedance@2.5',
  positivePrompt: 'An 8-second fitness workout demo. A fit athlete in a charcoal training top performs three controlled kettlebell swings in a clean sunlit gym studio. A medium tracking shot arcs slowly from her side to a three-quarter front angle, holding her centered as the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell, light gym ambience, no music.',
  resolution: '720p',
  duration: 8,
  deliveryMethod: 'async'
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "bytedance:seedance@2.5",
            "positivePrompt": "An 8-second fitness workout demo. A fit athlete in a charcoal training top performs three controlled kettlebell swings in a clean sunlit gym studio. A medium tracking shot arcs slowly from her side to a three-quarter front angle, holding her centered as the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell, light gym ambience, no music.",
            "resolution": "720p",
            "duration": 8,
            "deliveryMethod": "async"
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "3f8a2b1c-5d6e-4790-b1a2-c3d4e5f60718",
      "model": "bytedance:seedance@2.5",
      "positivePrompt": "An 8-second fitness workout demo. A fit athlete in a charcoal training top performs three controlled kettlebell swings in a clean sunlit gym studio. A medium tracking shot arcs slowly from her side to a three-quarter front angle, holding her centered as the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell, light gym ambience, no music.",
      "resolution": "720p",
      "duration": 8,
      "deliveryMethod": "async"
    }
  ]'
runware run bytedance:seedance@2.5 \
  positivePrompt="An 8-second fitness workout demo. A fit athlete in a charcoal training top performs three controlled kettlebell swings in a clean sunlit gym studio. A medium tracking shot arcs slowly from her side to a three-quarter front angle, holding her centered as the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell, light gym ambience, no music." \
  resolution=720p \
  duration=8 \
  deliveryMethod=async
{
  "taskType": "videoInference",
  "taskUUID": "3f8a2b1c-5d6e-4790-b1a2-c3d4e5f60718",
  "model": "bytedance:seedance@2.5",
  "positivePrompt": "An 8-second fitness workout demo. A fit athlete in a charcoal training top performs three controlled kettlebell swings in a clean sunlit gym studio. A medium tracking shot arcs slowly from her side to a three-quarter front angle, holding her centered as the kettlebell rises to chest height and drops back in a steady rhythm. Bright even daylight from the left, clean commercial color grade. Audio: her steady rhythmic breathing, the soft thud of the kettlebell, light gym ambience, no music.",
  "resolution": "720p",
  "duration": 8,
  "deliveryMethod": "async"
}
Response
[
  {
    "taskType": "videoInference",
    "taskUUID": "3f8a2b1c-5d6e-4790-b1a2-c3d4e5f60718",
    "videoUUID": "8c1d2e3f-4a5b-6789-0abc-def123456789",
    "videoURL": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/8c1d2e3f-4a5b-6789-0abc-def123456789.mp4"
  }
]

The essentials:

  • positivePrompt is required, up to 10,000 characters. Detail helps, but retention doesn't scale forever: past a few hundred well-chosen words the model starts dropping clauses. Tighten before you add.
  • Output size is either resolution (480p or 720p) or an explicit width and height pair. The two are mutually exclusive. resolution renders 16:9, so for anything other than 16:9, pass a width and height instead.
  • duration is an integer from 4 to 30 seconds, default 5.
  • Audio is generated by default. Set settings.audio to false for a silent clip.
  • Video delivery is always async: the immediate response acknowledges the task, and the finished clip arrives by polling or a webhook.

Seedance 2.5 tops out at 720p. There is no 1080p or 4k output: resolution accepts only 480p and 720p, and the width/height pairs top out at the 720p tier (1280 × 720 and its aspect variants). Plan delivery around 720p as the ceiling.

Structuring the prompt

Seedance rewards prompts that separate five concerns: the shot, the subject, the action, the light, and the audio. Each clause becomes a directive the model tries to hold, so dropping any one hands that decision to the model's defaults.

a slow steady push-in at close range, a frosted glass bottle of pale-orange sparkling soda on a wet slate countertop, a tall glass of ice beside it, a hand lifts the bottle and pours a steady stream into the glass, the soda fizzing and racing with bubbles, a curl of orange zest dropping onto the foam, bright clean daylight from the upper left, fresh airy color grade, shallow depth of field, audio: the crisp fizz of the pour, ice settling in the glass, light bright ambience, no music
ShotSubjectActionLightAudio
All five layers directed in one prompt

An 8-second beverage brand commercial for a sparkling citrus soda. A slow steady push-in at close range as a hand lifts a frosted glass bottle of pale-orange sparkling soda from a wet slate countertop and pours a steady stream into a tall glass of ice beside it. The soda fizzes and races with bubbles as it fills the glass, a thin curl of orange zest dropping onto the rising foam, beads of condensation on the bottle catching the light. Bright clean daylight from the upper left, fresh airy color grade, shallow depth of field. Audio: the crisp fizz of the pour, ice settling in the glass, light bright ambience, no music.

Every layer earns its place. The shot layer sets framing and camera movement, so "push-in" becomes a real move rather than ambient float. The subject layer grounds the materials and setting, the action layer is what happens across the runtime, and the light layer picks the exposure register. The audio layer is a real input, so name what you want to hear or the model fills it in for you.

Name the shot first. A shot clause up front tells Seedance to reserve motion for the camera. Drop it and the model tends to animate the subject to feel less static, which is not the same as directing a camera.

The character ceiling is generous, but detail retention isn't. Past a few hundred well-chosen words, extra clauses compete for attention and details drop out. Cut anything that isn't carrying the shot.

Directing motion

Motion comes from two places worth prompting separately: what the camera does, and what the subject does.

Camera vocabulary

Seedance reads shot language directly, in the terms a real crew uses. These moves land without further explanation:

  • Dolly-in / push-in, dolly-out / pull-back. The camera physically moves toward or away from the subject.
  • Orbit / arc. The camera swings around the subject on a circular path, revealing new faces.
  • Crane / boom. The camera rises or falls on a vertical arm.
  • Handheld. Subtle organic shake, as if a person is holding the camera.
  • Static / locked-off. No camera movement, only subject motion inside the frame.
  • Dolly zoom / Vertigo. Physical dolly and optical zoom in opposite directions, warping the background.
  • One-shot, FPV, bullet time, speed ramp. The specialist moves also register. Pair an unusual term with a plain-language description of what should happen, to be safe.

The three clips below run the same sneaker on the same pedestal through three of those moves. Only the shot clause changes.

Each move signals a different intent. The dolly-in fills the frame with the product for a "look at this" beat. The orbit reveals a second face without changing the light or the set, which is what a spec-sheet turnaround wants. The dolly zoom isolates the product against a warping plane, the way a hero beat does. Running one subject through several moves gives you campaign variants that read as one shoot. Change more than the camera clause between them and they read as three unrelated clips.

Directing subject motion

Subject motion carries the actual story of the shot. In the clip below the camera is locked, and every bit of movement is the model and the coat.

Locked camera, all motion from the subject

An 8-second fashion lookbook clip. A model in a flowing camel-tan trench coat walks slowly toward a locked, static camera down a clean sunlit studio runway, then stops and makes a half-turn so the coat flares and settles around her. The camera does not move at all; every bit of motion is the model's walk, the turn, and the drift of the fabric. Bright even daylight, seamless warm-grey backdrop, editorial fashion color grade. Audio: the soft click of her steps, the light rustle of the fabric, quiet studio ambience, no music.

Describe the camera's move in one clause and the subject's action in another. They are two independent axes, and separating them stops the model from guessing which to prioritize and flattening both. When the subject runs through a sequence, name the beats in order: here it is walk, stop, turn. Seedance paces its runtime to fit the beats it is given, and dropping one lets the model choose what to compress. Keep to one dominant action arc per clip. Two independent arcs competing for the same runtime lose fidelity on both.

Second-level control

Seedance reads per-second timing. Tag a clause with a time range and the model paces the runtime to land it. The night scene below is written as three timed beats, and the payoff, a car's headlights swinging across the frame, lands exactly in its window.

Three timed beats over nine seconds, the headlight sweep landing in the final window

A 9-second cinematic night scene on a rain-slicked city street, moody and atmospheric. A man in a dark overcoat stands at an empty crossing under a flickering streetlight, wet asphalt reflecting the light, fine rain falling through the beam. [0-3s]: he stands still at the curb looking down the empty street, his breath faint in the cold air, the camera slowly pushing in. [3-6s]: he turns up his collar and steps off the curb, walking slowly toward the camera. [6-9s]: the bright headlights of a car swing across him from the left as it rounds the corner behind him, throwing his long shadow forward across the wet street. Cinematic teal-and-amber night grade, deep shadows, shallow depth of field, anamorphic film look. Audio: steady rain on the pavement, distant city traffic, the low approaching hum of the car engine, no music.

Write time ranges at roughly one-second granularity and keep them continuous, with no gaps between windows. Put too little in a window and the model improvises to fill it. Pack too much in and it either cuts hard or drops a beat. The tags also take single time points ("at the 5-second mark, cut left") and relative timing ("three seconds after she sits, the lights dim"). What they are not for is high-frequency micro-control: asking for "shake three times a second" fights the model rather than directing it.

Native audio and negative controls

Audio is generated in the same pass, on by default, and it is a real part of the prompt. Name the mix in an Audio: clause ("the shaker rattle, faint distant murmur, no music") and Seedance builds a track that matches the scene. Every clip in this guide carries one: turn the sound on for the hero above to hear the track it generated from its Audio: clause. Set settings.audio to false when the clip lands on top of a separate audio bed.

Seedance also takes negative directives for the parts you want gone. No subtitles keeps burned-in text off the frame, which matters because the model will otherwise sometimes caption dialogue on its own. On the audio side, No BGM, only ambient and action sounds shapes the mix, and No sound is the blunt mute. These read most reliably at the end of the prompt.

Duration matching to content

Pick duration by counting the beats the shot has to fit, not by feel. Seedance runs 4 to 30 seconds:

  • 4 to 5 seconds for one clean beat, like a product turn or a held hero moment. This is the fastest tier and the one to iterate on.
  • 8 seconds for a small micro-narrative that develops start to finish, like the fitness and fashion clips above.
  • 15 seconds for a fuller scene with a couple of connected beats, the length of a short social cut.
  • 30 seconds is the flagship ceiling, a full spot or a multi-beat story. It has its own pacing conventions, covered in the long-form and extension guide.

Under about five seconds the model compresses hard, so reach for it when the shot doesn't need to develop, not for a scene with several beats. Past thirty the request is rejected.

Tips

  1. Name the camera move first. Leading with "slow dolly-in" or "static locked-off" gives you a directed shot instead of a generic drift. Seedance reads shot language as a directive.

  2. Separate subject motion from camera motion. Describe the camera in one clause and the subject in another. They are independent axes, and merging them makes the model flatten both.

  3. Time the beats with second-level tags. Writing [0-3s] windows at one-second granularity paces the runtime for you. Keep the windows continuous and don't use them for high-frequency micro-control.

  4. Write the audio inline. Name the mix in an Audio: clause, add No subtitles or No BGM when you need them, and set settings.audio to false for a silent clip.

  5. Match duration to beat count. 4 to 5 seconds is one clean beat and the fastest iteration cycle, 8 fits a micro-narrative, and 30 is the flagship ceiling with its own long-form guide.

  6. Match the aspect to the right size field. resolution renders 16:9 at 480p or 720p. For anything other than 16:9, pass an explicit width and height pair. 720p is the ceiling either way.

  7. Anchor identity with references when the subject has to be a specific one. For an approved product or a returning character, pass the asset through inputs.referenceImages, and the multimodal reference guide has the full pattern.

  8. Iterate at 480p, deliver at 720p. 480p renders fastest and gives enough signal to lock the prompt. Re-render at 720p once the direction lands.