Skip to content
Open CastalyConsole

Video

seedance-2.5 API

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

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

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

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

Prompt: A small research submersible descends through the deep ocean, its headlights sweeping over a drifting field of bioluminescent jellyfish and a sunken stone archway. Camera follows from behind, particles float in the beams, blue-black water, calm and mysterious, photoreal, no text.

Request that produced this sample
{
"model": "seedance-2.5",
"prompt": "A small research submersible descends through the deep ocean, its headlights sweeping over a drifting field of bioluminescent jellyfish and a sunken stone archway. Camera follows from behind, particles float in the beams, blue-black water, calm and mysterious, photoreal, 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.5",
"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.5
content[] Yes text, image_url, video_url, and audio_url; use role to identify media purpose
resolution No 480p / 720p / 1080p
ratio No 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive
duration No -1 for automatic timing, or 4–30 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
omni_reference_task_type No auto / reference / edit / extend; editing and extension impose stricter ratio/duration rules
output_format No mp4 / mov
return_last_frame No Return the final frame as an image

This model supports 480p, 720p, and 1080p. Use -1 for automatic timing or choose 4–30 seconds. A request can combine up to 30 images, 10 videos, and 10 audio clips. Ordinary reference generation accepts an explicit ratio or adaptive; editing, extension, and first/last-frame workflows require ratio: "adaptive", and editing requires duration: -1. Virtual-person images must be uploaded to the asset library first; Modelflare does not provide real-person verification.

Seedance 2.5 classifies reference, editing, extension, and frame-guided workflows from the media roles and task type. The examples keep the official contract while using Modelflare’s endpoint and model ID.

Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"omni_reference_task_type": "reference",
"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"}
],
"ratio": "16:9", "duration": 15, "output_format": "mp4"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5", "omni_reference_task_type": "edit",
"content": [
{"type":"text","text":"Remove the background pedestrians but preserve the main subject"},
{"type":"video_url","video_url":{"url":"https://example.com/source.mov"},"role":"reference_video"}
],
"ratio": "adaptive", "duration": -1, "output_format": "mov"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5", "omni_reference_task_type": "extend",
"content": [{"type":"video_url","video_url":{"url":"https://example.com/source.mp4"},"role":"reference_video"}],
"ratio": "adaptive", "duration": 11, "output_format": "mov"
}'
Terminal windowbash
curl https://modelflare.dev/v1/videos \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5", "content": [
{"type":"text","text":"The subject smiles while the camera makes a smooth orbit"},
{"type":"image_url","image_url":{"url":"https://example.com/first.jpg"},"role":"first_frame"},
{"type":"image_url","image_url":{"url":"https://example.com/last.jpg"},"role":"last_frame"}
],
"ratio": "adaptive", "duration": -1, "return_last_frame": true
}'

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.5 The model documented on this page.
Media contract · v1

Contract ID: media.seedance-2-5.v1Adapter: video.seedance.25.v1@v1Fingerprint: 37c632491a1b23a8dd328d9b89b3f14cd4a7c163ab55f73f27aefb4e0418caa5

Official source: ByteDance / Volcengine

Contract parameters

Intent fieldControlOptions
ratioselect16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
resolutionselect480p / 720p / 1080p
durationselect-1 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 / 25 / 26 / 27 / 28 / 29 / 30
audioswitch—
workflowselectauto / reference / edit / extend
output_formatselectmp4 / mov
return_last_frameswitch—

Supported capability

  • allowed_values · ratio · 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
  • allowed_values · resolution · 480p, 720p, 1080p
  • allowed_values · duration · -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
  • max_assets · reference_asset_ids · 50
  • prompt_optional_with_reference · prompt

Structured request example

text

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "auto"
}

Provider request

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

reference

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "reference"
}

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": -1,
  "generate_audio": false,
  "model": "seedance-2.5",
  "omni_reference_task_type": "reference",
  "output_format": "mp4",
  "ratio": "16:9",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}

edit

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "edit"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "role": "reference_video",
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/reference.mp4"
      }
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5",
  "omni_reference_task_type": "edit",
  "output_format": "mp4",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}

extend

Intent

{
  "audio": false,
  "duration": -1,
  "output_format": "mp4",
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "workflow": "extend"
}

Provider request

{
  "content": [
    {
      "text": "A red paper kite over a quiet harbour at dusk.",
      "type": "text"
    },
    {
      "role": "reference_video",
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/reference.mp4"
      }
    }
  ],
  "duration": -1,
  "generate_audio": false,
  "model": "seedance-2.5",
  "omni_reference_task_type": "extend",
  "output_format": "mp4",
  "ratio": "adaptive",
  "resolution": "480p",
  "return_last_frame": false,
  "seconds": "-1"
}