Skip to main content
bytedance avatar

Seedance 2.0 Fast Image to Video API

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

Animate a still image into a short video with synchronized audio — the faster, lower-cost Seedance 2.0 tier, at up to 720p.

0.181 per second of output video

Model Input

Input

Describe what should happen from the first frame onwards: the action, the camera move, and the sound you want. English, Chinese, Japanese, Indonesian, Spanish and Portuguese prompts are all understood.

Still image used as the first frame of the clip. 300-6000 px on a side, under 30 MB, aspect ratio between 1:2.5 and 2.5:1.

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. adaptive keeps the shape of the supplied image; any other value re-frames it.

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 87 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2

Seedance 2.0 Fast Image to Video API

Seedance 2.0 Fast Image to Video is a image-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/image-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/image-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://media.modelrunner.ai/FwW2X1GWkn1va4rfgncnv.jpeg",
    "prompt": "The platter begins to turn and the record spins beneath the resting tonearm, dust drifting slowly through the shaft o…",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "adaptive",
    "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/image-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/bytedance/seedance-v2-fast/image-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/image-to-video", {
  input: {
    "image": "https://media.modelrunner.ai/FwW2X1GWkn1va4rfgncnv.jpeg",
    "prompt": "The platter begins to turn and the record spins beneath the resting tonearm, dust drifting slowly through the shaft o…",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "adaptive",
    "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/image-to-video",
    headers=headers,
    json={
      "image": "https://media.modelrunner.ai/FwW2X1GWkn1va4rfgncnv.jpeg",
      "prompt": "The platter begins to turn and the record spins beneath the resting tonearm, dust drifting slowly through the shaft o…",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "adaptive",
      "generate_audio": true
    },
).json()

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

Input parameters

NameTypeRequiredDescription
promptstringyesDescribe what should happen from the first frame onwards: the action, the camera move, and the sound you want. English, Chinese, Japanese, Indonesian, Spanish and Portuguese prompts are all understood.
imagestring (uri)yesStill image used as the first frame of the clip. 300-6000 px on a side, under 30 MB, aspect ratio between 1:2.5 and 2.5:1.
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. adaptive keeps the shape of the supplied image; any other value re-frames it. Default: "adaptive".
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 Image 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 Image 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/image-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/image-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Seedance 2.0 Fast Image to Video animates a still you supply: the image becomes the first frame, the prompt describes what happens next, and the clip comes back with a matching soundtrack — dialogue, ambience, and sound effects generated together with the picture rather than dubbed on afterwards. It is the quick, lower-cost tier of Seedance 2.0: the same synchronized audio and the same 4 to 15 seconds at 24 fps, 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 - Bringing a product photo, poster, or packshot to life for an ad or social post - Animating illustrations, concept art, and character stills into moving shots - Adding camera movement — a slow push in, an orbit, a handheld drift — to a static frame - Trying several motion prompts on the same still cheaply before a final render

## Choose another model when - You need 1080p or the best picture quality in the family — use `bytedance/seedance-v2/image-to-video` - You want the cheapest clip and 720p is fine — `bytedance/seedance-v2-mini/image-to-video` is the lowest-cost tier - You have no source image and want the shot built from the prompt alone — use `bytedance/seedance-v2-fast/text-to-video` - You need to pin a last frame as well as a first, up to nine reference images, or a restyle of existing footage — top-tier only: `bytedance/seedance-v2/first-last-frame`, `bytedance/seedance-v2/reference-to-video`, `bytedance/seedance-v2/video-to-video` - You need runs reproducible from a fixed seed — there is no seed input, so repeat runs differ

## Tips - Describe the motion, not the picture — the still already fixes the subject, so spend the prompt on what moves and what is heard - Keep `aspect_ratio` on `adaptive` unless you want a crop; an explicit ratio that fights the source forces a re-frame - Source images should be 300–6000 px on a side, under 30 MB, and no more lopsided than about 2.5:1 - Set `generate_audio` to false for a silent clip; the price is the same either way - Put camera language in the prompt — there is no separate camera-lock control

## Limitations - Large motions away from the first frame can drift from the source subject's identity - Fine texture and small text in the source soften once the shot starts moving - Fast motion and crowds smear at 480p; multi-shot prompts drift in wardrobe and lighting

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

const result = await modelrunner.subscribe("bytedance/seedance-v2-fast/image-to-video", { input: { image: "https://media.modelrunner.ai/tjBYyLLFLpO4kt6L0HQTV.jpeg", prompt: "The wind rises and tugs at the trapped kite, its tail ribbon snapping loose and whipping sideways while the bare branches sway against the flat grey sky", resolution: "720p", aspect_ratio: "adaptive", duration: 6, generate_audio: true, }, }); ```