Skip to main content
bytedance avatar

Seedance 2.0 Image to Video API

bytedance/seedance-v2/image-to-video

Animate a still image into a short video with synchronized audio — your photo becomes the first frame and the prompt describes the motion and the sound.

0.227 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. Higher resolutions cost 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 108 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1

Seedance 2.0 Image to Video API

Seedance 2.0 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.227 per second of video.

POST https://queue.modelrunner.run/bytedance/seedance-v2/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/image-to-video \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://media.modelrunner.ai/lLzL0kzIHxtmdFBBhc9WO.jpeg",
    "prompt": "Sea mist drifts across the still water as the gull lifts from the railing and glides out over the bay, dawn light slo…",
    "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/image-to-video/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/bytedance/seedance-v2/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/image-to-video", {
  input: {
    "image": "https://media.modelrunner.ai/lLzL0kzIHxtmdFBBhc9WO.jpeg",
    "prompt": "Sea mist drifts across the still water as the gull lifts from the railing and glides out over the bay, dawn light slo…",
    "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/image-to-video",
    headers=headers,
    json={
      "image": "https://media.modelrunner.ai/lLzL0kzIHxtmdFBBhc9WO.jpeg",
      "prompt": "Sea mist drifts across the still water as the gull lifts from the railing and glides out over the bay, dawn light slo…",
      "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. Higher resolutions cost 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 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 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/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/image-to-video on ModelRunner to generate video”. MCP setup guide.

Model Details

Model Details

Seedance 2.0 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. Clips run 4 to 15 seconds at 24 fps, from 480p up to 1080p. Left on `adaptive`, `aspect_ratio` keeps the shape of your source image; set it explicitly only when you want a deliberate re-frame. 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 a 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 - Turning an archive or location photo into an establishing shot with ambient sound - Continuing a scene you already generated as an image, keeping its exact framing

## Choose another model when - You have no source image and want the shot built from scratch — use `bytedance/seedance-v2/text-to-video` - You need to pin both a first and a last frame, or to steer with several reference images — only one first frame is accepted here - You need runs to be reproducible from a fixed seed — there is no seed input, so repeat runs differ - You need a locked-off camera, or one take longer than 15 seconds

## 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 image forces a re-frame - Source images should be 300–6000 px on a side, under 30 MB, and no more extreme than roughly 2.5:1 either way - Iterate at `480p`, then re-run the keeper at `1080p` — resolution is the largest cost driver and duration the second

## 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; 720p or higher holds detail

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

const result = await modelrunner.subscribe("bytedance/seedance-v2/image-to-video", { input: { image: "https://media.modelrunner.ai/lLzL0kzIHxtmdFBBhc9WO.jpeg", prompt: "The sea mist drifts across the still water, the gull lifts off the railing and glides out over the bay, dawn light warming the horizon", resolution: "720p", aspect_ratio: "adaptive", duration: 6, }, }); ```