Skip to main content
bytedance avatar

Seedance 2.0 Fast Text to Video API

bytedance/seedance-v2-fast/text-to-video

Generate a short video with synchronized audio straight from a text prompt — the faster, lower-cost Seedance 2.0 tier, at up to 720p.

0.181 per second of output video

Model Input

Input

Describe the scene, the action, the camera move, and the sound you want. English, Chinese, Japanese, Indonesian, Spanish and Portuguese prompts are all understood.

Output resolution of the clip. This tier tops out at 720p; the higher resolution costs more per second of video.

Frame shape of the clip. Use adaptive to let the model pick the framing.

Min: 4 - Max: 15

Clip length in seconds.

Additional Settings

Customize your input with more control.

Generate a synchronized soundtrack (dialogue, ambience and sound effects) together with the picture. Set false for a silent clip; the price is the same either way.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 92 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2

Seedance 2.0 Fast Text to Video API

Seedance 2.0 Fast Text to Video is a text-to-video AI model by bytedance. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.181 per second of video.

POST https://queue.modelrunner.run/bytedance/seedance-v2-fast/text-to-video

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/bytedance/seedance-v2-fast/text-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A street violinist plays beneath a tiled subway arch at night, coat collar turned up, loose coins bright in the open …",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16",
    "generate_audio": true,
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/bytedance/seedance-v2-fast/text-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/bytedance/seedance-v2-fast/text-to-video/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("bytedance/seedance-v2-fast/text-to-video", {
  input: {
    "prompt": "A street violinist plays beneath a tiled subway arch at night, coat collar turned up, loose coins bright in the open …",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16",
    "generate_audio": true
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/bytedance/seedance-v2-fast/text-to-video",
    headers=headers,
    json={
      "prompt": "A street violinist plays beneath a tiled subway arch at night, coat collar turned up, loose coins bright in the open …",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "9:16",
      "generate_audio": true
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

NameTypeRequiredDescription
promptstringyesDescribe the scene, the action, the camera move, and the sound you want. English, Chinese, Japanese, Indonesian, Spanish and Portuguese prompts are all understood.
resolutionenumnoOutput resolution of the clip. This tier tops out at 720p; the higher resolution costs more per second of video. Default: "720p".
aspect_ratioenumnoFrame shape of the clip. Use adaptive to let the model pick the framing. Default: "16:9".
durationintegernoClip length in seconds. Default: 5.
generate_audiobooleannoGenerate a synchronized soundtrack (dialogue, ambience and sound effects) together with the picture. Set false for a silent clip; the price is the same either way. Default: true.

Machine-readable: OpenAPI schema · llms.txt

Use Seedance 2.0 Fast Text to Video from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Seedance 2.0 Fast Text to Video becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint bytedance/seedance-v2-fast/text-to-video.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run bytedance/seedance-v2-fast/text-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Seedance 2.0 Fast turns a written prompt into a short video clip with a matching soundtrack — dialogue, ambience, and sound effects are generated together with the picture rather than dubbed on afterwards, so what you hear lines up with what moves on screen. It is the quick, lower-cost tier of Seedance 2.0: the same synchronized audio, 4 to 15 seconds at 24 fps, and seven frame shapes from widescreen to vertical and 21:9 — but capped at 720p, about a fifth cheaper per second, and noticeably faster to return. Prompts are understood in English, Chinese, Japanese, Indonesian, Spanish, and Portuguese.

## Best for - Iterating on a prompt cheaply before you commit to a final render - High-volume clip production where cost per second matters more than maximum detail - Vertical, square, and widescreen social cuts where 720p is enough - Short ad, trailer, and b-roll shots that need sound without a separate audio pass - Dialogue and singing shots where the voice has to match the mouth

## Choose another model when - You need 1080p or the best picture quality in the family — use `bytedance/seedance-v2/text-to-video` - You want the cheapest clip and 720p is fine — `bytedance/seedance-v2-mini/text-to-video` is the lowest-cost tier - You already have the photo you want to animate — use `bytedance/seedance-v2-fast/image-to-video`, which takes your still as the first frame - You need several reference images for character consistency, a pinned first and last frame, or a restyle of existing footage — those are top-tier only: `bytedance/seedance-v2/reference-to-video`, `bytedance/seedance-v2/first-last-frame`, `bytedance/seedance-v2/video-to-video` - You need runs reproducible from a fixed seed — there is no seed input, so two identical prompts give different clips

## Tips - Describe the sound as explicitly as the picture ("gulls calling, waves on shingle") — the audio track follows the prompt - Set `generate_audio` to false for a silent clip; the price is the same either way - Draft at `480p`, then re-run the keeper at `720p` — resolution is the largest cost driver and duration the second - Put camera language in the prompt ("slow push in", "handheld follow") — there is no separate camera control

## Limitations - Fast motion and crowds smear at 480p; 720p holds detail better - Prompts stacking many separate shots drift in character, wardrobe, and lighting - Text rendered inside the frame is frequently misspelled

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("bytedance/seedance-v2-fast/text-to-video", { input: { prompt: "A lighthouse keeper climbs the spiral stair at dawn, lamp glass catching the first light, gulls calling outside as the storm clears", resolution: "720p", aspect_ratio: "9:16", duration: 6, generate_audio: true, }, }); ```