Skip to content
Open CastalyConsole

Video

seedance-2.0 API

Use the exact seedance-2.0 model ID through Modelflare asynchronous video routing.

Use the exact model ID seedance-2.0. The model field must match this page exactly.

Sample outputseedance-2.0POST /v1/videos5.1s

Parameters: duration=5resolution=1080pratio=16:9

Prompt: One continuous take, no cuts. An empty indoor swimming pool at night, tiled walls and underwater lights. A swimmer in a chrome-finish suit stands on the edge and lifts both arms; the water answers by leaving the pool, rising as a single rotating column of turquoise that twists up past the roof beams and holds there, the emptied tiles glowing underneath. The camera starts low at the pool edge, cranes up alongside the column and tilts to look down into the drained basin. One hard cyan key from the underwater lights, warm sodium spill from the high windows. Real weight and inertia, spray and refraction, no text.

Request that produced this sample
{
"model": "seedance-2.0",
"prompt": "One continuous take, no cuts. An empty indoor swimming pool at night, tiled walls and underwater lights. A swimmer in a chrome-finish suit stands on the edge and lifts both arms; the water answers by leaving the pool, rising as a single rotating column of turquoise that twists up past the roof beams and holds there, the emptied tiles glowing underneath. The camera starts low at the pool edge, cranes up alongside the column and tilts to look down into the drained basin. One hard cyan key from the underwater lights, warm sodium spill from the high windows. Real weight and inertia, spray and refraction, no text.",
"seconds": "5",
"duration": 5,
"resolution": "1080p",
"ratio": "16:9",
"aspect_ratio": "16:9"
}

Use a Modelflare API key with https://modelflare.dev/v1. The gateway entry point is POST /v1/videos.

HTTP
Authorization: Bearer YOUR_MODELFLARE_API_KEY
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"content": [{"type": "text", "text": "A white cat runs through a neon-lit street in the rain, cinematic tracking shot"}],
"resolution": "720p",
"duration": 5,
"generate_audio": false
}'

Save the task ID. Poll GET /v1/videos/{task_id} and download with GET /v1/videos/{task_id}/content. Result URLs may expire, so transfer the file promptly.

Terminal windowbash
curl https://modelflare.dev/v1/videos/TASK_ID \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY"

Seedance uses content[] for text, frames, and reference media; the separate Seedance asset management contract is documented independently.

Seedance uses one asynchronous multimodal envelope. Put text and media in content[]; media roles select first/last-frame or reference workflows.

Field Required Notes
model Yes seedance-2.0
content[] Yes text, image_url, video_url, and audio_url; use role to identify media purpose
resolution No 480p / 720p / 1080p / 4k (default 720p)
ratio No 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive
duration No 4–15 seconds
generate_audio No Generate synchronized dialogue, effects, and background audio
tools No Use web_search only where the official model page supports it
watermark No Whether to add a watermark

This model supports 480p, 720p, 1080p, and 4k output with a 4–15 second duration. Multimodal references allow up to nine images, three videos, and three audio clips; audio cannot be used alone. Mark media with role values in content[]; first-frame, editing, extension, and web-search workflows have their own constraints. Virtual-person images must be uploaded to the asset library first; Modelflare does not provide real-person verification.

The Seedance 2.0 series supports text-to-video, first/first-and-last frames, multimodal references, editing, extension, and web search for text-to-video. Order media as text, image, video, then audio.

Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"content": [
{"type": "text", "text": "@image1 performs the movement from @video1, paced to @audio1"},
{"type": "image_url", "image_url": {"url": "https://example.com/character.jpg"}, "role": "reference_image"},
{"type": "video_url", "video_url": {"url": "https://example.com/motion.mp4"}, "role": "reference_video"},
{"type": "audio_url", "audio_url": {"url": "https://example.com/music.mp3"}, "role": "reference_audio"}
],
"generate_audio": true, "ratio": "16:9", "duration": 11
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0", "content": [{"type": "text", "text": "Macro shot of cherry blossoms in spring"}],
"generate_audio": true, "ratio": "16:9", "duration": 11,
"tools": [{"type": "web_search"}]
}'

Invalid model parameters return a 4xx with a request ID. An asynchronous task can also enter failed after creation succeeds; use error_code and error_message from the poll response as the final task reason. Do not retry the same request with a different JSON shape.

This page covers Modelflare model generation and editing calls. Search or map enrichment, voice management, and element-library management are resource APIs outside this public model-call surface and are not required request fields.

This model uses token-based billing. See the model pricing page for the current customer price, reference list price, and complete specification.

Model ID Difference
seedance-2.0 The model documented on this page.
Media contract · v1

Contract ID: media.seedance-2-0.v1Adapter: video.seedance.20.v1@v1Fingerprint: dbd2efb454c0ce50d0600810a6ca4d7e5918dc2ebbaea6fdb8b1d9bf6b480a6f

Official source: ByteDance / Volcengine

Contract parameters

Intent fieldControlOptions
ratioselect16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
resolutionselect480p / 720p / 1080p / 4k
durationselect4 / 5 / 8 / 10 / 15
audioswitch—

Supported capability

  • allowed_values · ratio · 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
  • allowed_values · resolution · 480p, 720p, 1080p, 4k
  • allowed_values · duration · 4, 5, 8, 10, 15
  • max_assets · reference_asset_ids · 15
  • prompt_optional_with_reference · prompt

Structured request example

text

Intent

{
  "audio": false,
  "duration": 4,
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    }
  ],
  "duration": 4,
  "generate_audio": false,
  "model": "seedance-2.0",
  "ratio": "16:9",
  "resolution": "480p",
  "seconds": "4"
}

reference

Intent

{
  "audio": false,
  "duration": 4,
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "image_url": {
        "url": "https://example.com/reference.png"
      },
      "role": "reference_image",
      "type": "image_url"
    }
  ],
  "duration": 4,
  "generate_audio": false,
  "model": "seedance-2.0",
  "ratio": "16:9",
  "resolution": "480p",
  "seconds": "4"
}