---
title: Prompting Seedance 2.5 — Seedance 2.5 | Runware Docs
url: https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting
description: "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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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.

[Watch video](https://runware.ai/docs/assets/hero.ywEbd3RS.mp4)

> **Prompt**: 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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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:

TypeScriptPythoncURLCLIJSON

```typescript
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'
})
```

```python
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())
```

```bash
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"
    }
  ]'
```

```bash
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
```

```json
{
  "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

```json
[
  {
    "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.

> [!WARNING]
> 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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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.

**[Shot]** a slow steady push-in at close range, **[Subject]** a frosted glass bottle of pale-orange sparkling soda on a wet slate countertop, a tall glass of ice beside it, **[Action]** 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, **[Light]** bright clean daylight from the upper left, fresh airy color grade, shallow depth of field, **[Audio]** audio: the crisp fizz of the pour, ice settling in the glass, light bright ambience, no music

[Watch video](https://runware.ai/docs/assets/output-structuring.5fc_Yrmh.mp4)

*All five layers directed in one prompt*

> **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.

> [!NOTE]
> 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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#directing-motion)

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

#### [Camera vocabulary](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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.

[Watch video](https://runware.ai/docs/assets/output-camera-dolly.DfXEGdhx.mp4)

*Dolly-in*

> **Prompt**: A 5-second premium sneaker product shot. A single white-and-mint running sneaker centered on a smooth pale concrete pedestal in a bright minimalist studio, clean soft daylight from the left. The camera performs a slow steady dolly-in from a mid-shot down to a tight close-up on the laces and knit upper; the sneaker stays centered as the studio compresses around it. Clean commercial product cinematography. Audio: low studio room tone, no music.

[Watch video](https://runware.ai/docs/assets/output-camera-orbit.Rvp264UN.mp4)

*Orbit*

> **Prompt**: A 5-second premium sneaker product shot. A single white-and-mint running sneaker centered on a smooth pale concrete pedestal in a bright minimalist studio, clean soft daylight from the left. The camera performs a smooth ninety-degree orbit around the sneaker from a front three-quarter angle to a full side profile; the sneaker stays centered as the light slides across the knit and the sole. Clean commercial product cinematography. Audio: low studio room tone, no music.

[Watch video](https://runware.ai/docs/assets/output-camera-dollyzoom.DGJLuD7P.mp4)

*Dolly zoom*

> **Prompt**: A 5-second premium sneaker product shot. A single white-and-mint running sneaker centered on a smooth pale concrete pedestal in a bright minimalist studio, clean soft daylight from the left. The camera performs a subtle dolly-zoom (Vertigo effect): it pushes forward while the lens zooms out, so the sneaker holds its size while the studio backdrop warps and stretches outward around it. Clean commercial product cinematography. Audio: low studio room tone, no music.

**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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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.

[Watch video](https://runware.ai/docs/assets/output-subject-motion.Da4aXyEt.mp4)

*Locked camera, all motion from the subject*

> **Prompt**: 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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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.

[Watch video](https://runware.ai/docs/assets/output-timestamp.CmWedmRP.mp4)

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

> **Prompt**: 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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/long-form-narrative).

**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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/prompting#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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/long-form-narrative).
    
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](https://runware.ai/docs/models/bytedance-seedance-2-5/guides/multi-reference-production) 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.