Skip to content

Seedance 2.5 Video

Seedance 2.5 uses an asynchronous video task API: create a task first, then poll the retrieve endpoint for its status and final video URL. It uses the dedicated model name doubao-seedance-2.5, and its parameter ranges differ from Seedance 2.0.

Model selection

Use doubao-seedance-2.5 with both the unified and official-compatible video APIs.

For the Pro/Fast 2.0 models, see the separate Seedance 2.0 guide.

Endpoints

CapabilityMethodPath
Create video task (official-compatible)POST/api/v3/contents/generations/tasks
Retrieve video task (official-compatible)GET/api/v3/contents/generations/tasks/{task_id}
Create video taskPOST/v1/video/generations
Retrieve video taskGET/v1/video/generations/{task_id}
Create asynchronous image moderation taskPOST/v1/images/moderations/tasks
Retrieve asynchronous image moderation taskGET/v1/images/moderations/tasks/{task_id}

Capabilities

CapabilityInput
Text to videoSend only text items in content
Single-image videoSend one image_url; use first_frame or reference_image
First-and-last-frame videoSend two image_url items with first_frame and last_frame
Multiple reference imagesSend multiple reference_image items and refer to them as “image 1”, “image 2”, and so on
Video referenceUse video_url with role: "reference_video"
Audio referenceUse audio_url with role: "reference_audio" together with text, an image, or a video
Image moderationModerate images first, then use the returned asset://<asset ID> in the generation request

Seedance 2.5 Parameters

ParameterRequiredDescription
modelYesUse doubao-seedance-2.5 with both the unified and official-compatible APIs
contentYesArray of text, image, video, and audio items; include at least text, an image, or a video
durationNo4 to 30 seconds; -1 selects duration intelligently; usually defaults to 5
resolutionNoOnly 480p and 720p are supported
ratioNoadaptive, 21:9, 16:9, 4:3, 1:1, 3:4, or 9:16
generate_audioNoWhether to generate synchronized audio
watermarkNoWhether to add a watermark
seedNoRandom seed; omit it to let the model select one
return_last_frameNoWhen true, a successful result may include a final-frame image URL
execution_expires_afterNoTask execution timeout from 3600 to 259200 seconds
toolsNoUse [ { "type": "web_search" } ] to enable web search when available for the account
safety_identifierNoUnique end-user identifier, up to 64 characters

For first-frame and first-and-last-frame tasks, use ratio: "adaptive". This preserves the input image ratio and keeps parameter validation consistent.

Output Pixel Sizes

Resolution16:94:31:13:49:1621:9
480p854×480752×560640×640560×752480×854992×432
720p1280×7201112×834960×960834×1112720×12801470×630

With adaptive, the model selects an appropriate ratio from the input media and task. Read the final dimensions from the completed task.

content Items

content is an array whose items are selected by type. Image, video, and audio URLs must be nested inside the corresponding { "url": "..." } object; do not pass them as plain strings.

typeRequired fieldOptional roleDescription
texttextNoneText prompt; multiple text items are used in order
image_urlimage_url.urlreference_image, first_frame, last_framePublic image URL or an approved asset://<asset ID>
video_urlvideo_url.urlreference_videoDirectly downloadable video URL; defaults to a reference video when role is omitted
audio_urlaudio_url.urlreference_audioDirectly downloadable audio URL; defaults to reference audio when role is omitted
json
[
  { "type": "text", "text": "Describe the video to generate" },
  { "type": "image_url", "role": "reference_image", "image_url": { "url": "asset://reviewed-image-id" } },
  { "type": "video_url", "role": "reference_video", "video_url": { "url": "https://example.com/reference.mp4" } },
  { "type": "audio_url", "role": "reference_audio", "audio_url": { "url": "https://example.com/reference.mp3" } }
]

Common combinations include text only, text plus image, text plus video, text plus audio, and multimodal combinations of images, videos, and audio. Audio cannot be the only input; content must contain at least one text, image_url, or video_url item.

The platform accepts up to 30 reference images, 10 reference videos, and 10 reference audio files. Practical limits can also depend on file size, total media duration, and account permissions.

Text-to-Video

bash
curl -X POST https://cubicspaces.cloud/v1/video/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "doubao-seedance-2.5",
    "content": [
      {
        "type": "text",
        "text": "A cinematic aerial shot of a futuristic city waking at sunrise, with a smooth forward camera movement"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": true,
    "watermark": false
  }'

A successful create request returns a public task ID:

json
{
  "id": "task_xxx",
  "task_id": "task_xxx",
  "object": "video",
  "model": "doubao-seedance-2.5",
  "status": "queued",
  "progress": 0,
  "created_at": 1780000000
}

Image Moderation

For people, products, or other library-managed reference images, submit public URLs to the image moderation API first. After approval, pass the returned items[].asset_url unchanged as content[].image_url.url.

All images used by the same generation request must be submitted together in one asynchronous moderation task. Do not split them across separate moderation batches.

Asynchronous Moderation

Use an asynchronous task for single images, multiple images, batches, and high concurrency:

bash
curl -X POST https://cubicspaces.cloud/v1/images/moderations/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "doubao-seedance-2.5",
    "images": [
      "https://example.com/person.png",
      "https://example.com/product.png"
    ],
    "client_request_id": "seedance-25-batch-001"
  }'

The create call immediately returns a task ID with status: "queued". One moderation task accepts up to 20 images.

json
{
  "code": "success",
  "message": "",
  "data": {
    "id": "amt_xxx",
    "model": "doubao-seedance-2.5",
    "status": "queued",
    "total": 2,
    "completed": 0,
    "approved": 0,
    "rejected": 0,
    "failed": 0
  }
}

Retrieve the moderation task:

bash
curl https://cubicspaces.cloud/v1/images/moderations/tasks/amt_xxx \
  -H "Authorization: Bearer YOUR_API_KEY"

Poll every 2 to 5 seconds. Processing statuses are queued and running; terminal statuses are succeeded, partial_succeeded, failed, and expired. Only image items with status: "approved" can use their asset_url in a generation request.

Image-to-Video

This example uses an asset_url returned by image moderation:

bash
curl -X POST https://cubicspaces.cloud/v1/video/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "doubao-seedance-2.5",
    "content": [
      {
        "type": "text",
        "text": "Preserve the appearance of the person in image 1. Show them playing with a small dog in a sunny meadow while keeping facial features consistent."
      },
      {
        "type": "image_url",
        "role": "reference_image",
        "image_url": {
          "url": "asset://reviewed-person-asset-id"
        }
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": true
  }'

First and Last Frame

json
{
  "model": "doubao-seedance-2.5",
  "content": [
    {
      "type": "text",
      "text": "Transition smoothly from image 1 to image 2 while keeping the subject and camera motion coherent."
    },
    {
      "type": "image_url",
      "role": "first_frame",
      "image_url": { "url": "asset://first-frame-asset-id" }
    },
    {
      "type": "image_url",
      "role": "last_frame",
      "image_url": { "url": "asset://last-frame-asset-id" }
    }
  ],
  "duration": 8,
  "resolution": "720p",
  "ratio": "adaptive"
}

Video and Audio References

json
{
  "model": "doubao-seedance-2.5",
  "content": [
    {
      "type": "text",
      "text": "Use the camera motion from video 1 and the rhythm from audio 1 to create a new scene in the same style."
    },
    {
      "type": "video_url",
      "role": "reference_video",
      "video_url": { "url": "https://example.com/reference.mp4" }
    },
    {
      "type": "audio_url",
      "role": "reference_audio",
      "audio_url": { "url": "https://example.com/reference.wav" }
    }
  ],
  "duration": 10,
  "resolution": "720p",
  "ratio": "16:9"
}

Official-Compatible API

Existing official-style clients can use these paths directly:

http
POST /api/v3/contents/generations/tasks
GET /api/v3/contents/generations/tasks/{task_id}

Create a task:

bash
curl -X POST https://cubicspaces.cloud/api/v3/contents/generations/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "doubao-seedance-2.5",
    "content": [
      {
        "type": "text",
        "text": "A cinematic tracking shot of an orange cat running through a city street after the rain"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": true
  }'

The create response is an unwrapped official-compatible object:

json
{
  "id": "task_xxx",
  "model": "doubao-seedance-2.5",
  "status": "queued",
  "created_at": 1780000000
}

Retrieve the task:

bash
curl https://cubicspaces.cloud/api/v3/contents/generations/tasks/task_xxx \
  -H "Authorization: Bearer YOUR_API_KEY"

Example successful response:

json
{
  "id": "task_xxx",
  "model": "doubao-seedance-2.5",
  "status": "succeeded",
  "content": {
    "video_url": "https://example.com/generated-video.mp4"
  },
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "usage": {
    "completion_tokens": 108900,
    "total_tokens": 108900
  }
}

Retrieve a Unified Video Task

bash
curl https://cubicspaces.cloud/v1/video/generations/task_xxx \
  -H "Authorization: Bearer YOUR_API_KEY"

Use the public task_xxx returned by the create request and the same API key that created the task.

json
{
  "code": "success",
  "message": "",
  "data": {
    "task_id": "task_xxx",
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://example.com/generated-video.mp4",
    "properties": {
      "origin_model_name": "doubao-seedance-2.5"
    },
    "usage": {
      "prompt_tokens": 0,
      "completion_tokens": 108900,
      "total_tokens": 108900
    }
  }
}

data.usage.completion_tokens and data.usage.total_tokens are the final effective usage after the task completes. Before completion, data.usage may be omitted.

Status Values

APIProcessingSuccessFailure or termination
Official-compatiblequeued, runningsucceededfailed, expired, cancelled
Unified videoNOT_START, SUBMITTED, QUEUED, IN_PROGRESSSUCCESSFAILURE

Notes

  • Image, video, and audio URLs must be directly downloadable by the platform server. Do not use URLs that return login or HTML pages.
  • Images can use public URLs or asset://<asset ID> values returned by image moderation.
  • Submit all images for the same generation task in the same moderation batch.
  • Refer to media by order in the prompt, such as “image 1”, “video 1”, or “audio 1”. Do not place Asset IDs in the prompt.
  • content.video_url and data.result_url can expire. Download and retain the result promptly.
  • Model and extended-feature availability can vary by account permissions and current platform capabilities.