Skip to content

Seedance video generation

Seedance 2.0 submits async video tasks through the official generation endpoint. It supports text-to-video, first-frame / first-and-last-frame, reference image/video/audio, video continuation, video editing, and multimodal composition.

http
POST /v1/video/generations

Asset library items can be referenced in as . On successful submission, a task_id is returned; poll with Task query.

Available models

Headers

NameTypeRequiredDescription
stringYesRequest authentication. Use a Bearer Token, for example:
stringYesRequest content type. Must be set to

Request body

NameTypeRequiredDescription
stringYesModel name
array<object>YesMultimodal input array; order affects role assignment
objectNoVideo generation parameters; all optional

content items

NameTypeRequiredDescription
stringYesContent type: , , , ,
stringConditionalRequired when ; prompt text
stringConditionalRequired when ; public image URL or
stringConditionalRequired when ; public video URL or asset reference
stringConditionalRequired when ; public audio URL or asset reference
stringConditionalRequired when ; draft task ID (must be the only content item)
stringNoMedia role: (first frame), (last frame), (reference image), (reference/source video), (reference audio; requires )

metadata

NameTypeRequiredDescription
integerNoDuration in seconds. Valid range or (model decides). Default
stringNo, , , . Default
stringNo, , , , . Default
integerNoTotal frame count; mutually exclusive with . Takes precedence over duration when set
integerNoRandom seed. Same seed + same input yields similar results
booleanNoLock camera (suppress camera motion). Default
booleanNoBottom-right watermark. Default
booleanNoGenerate/synthesize audio. Must be when using . Default
booleanNoReturn last-frame image URL for continuation. Default
booleanNoDraft mode (faster, slightly lower quality). Default
stringNoService tier. Default
integerNoMax execution time in seconds. Range . Default
stringNoCompletion callback URL

Generation mode reference

Modecontent essentials
Text-to-video + optional reference image/video/audio
First-frame image-to-video +
First-and-last-frame video + +
Reference-image video +
Video continuation +
Video editing + +
Multimodal composition + mixed reference types
Asset library referenceUse for each URL

Request example

json
{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "First-person fruit tea ad: 0-2s pick an apple; 2-4s cut to pouring into a shaker and shaking"
    },
    {
      "type": "image_url",
      "image_url": { "url": "https://example.com/apple.jpg" },
      "role": "reference_image"
    }
  ],
  "metadata": {
    "duration": 8,
    "resolution": "720p",
    "ratio": "16:9"
  }
}
json
{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "Animate naturally from the first frame"
    },
    {
      "type": "image_url",
      "image_url": { "url": "https://example.com/first.jpg" },
      "role": "first_frame"
    }
  ],
  "metadata": {
    "duration": 10,
    "resolution": "720p",
    "ratio": "adaptive"
  }
}
json
{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "First-person fruit tea ad"
    },
    {
      "type": "image_url",
      "image_url": { "url": "asset://asset-xxx" },
      "role": "reference_image"
    },
    {
      "type": "video_url",
      "video_url": { "url": "asset://asset-xxx" },
      "role": "reference_video"
    }
  ],
  "metadata": {
    "duration": 8,
    "resolution": "720p",
    "ratio": "16:9"
  }
}

Response example

json
{
  "task_id": "cgt-20260412163502-x8k2m"
}

Response fields

NameTypeDescription
stringTask ID for task query

Notes

WARNING

content mixing rules (violations may return 400):

  • cannot appear together with / ;
  • cannot be the only content input; pair it with at least an image or video;
  • must be the only element in the content array.

Asset library

Reference asset library resources in the main via . Workflow:

  1. Create an asset group and obtain GroupId;
  2. Import a public HTTPS asset into that group (async transcoding / moderation) and obtain task_id;
  3. Poll until the asset is ready, then reference the returned AssetId in video requests.

Create asset group (POST /v1/seedance/asset/CreateAssetGroup)

NameTypeRequiredDescription
stringYesAsset group name, max 64 characters
stringNoAsset group description, max 300 characters
bash
curl -X POST https://octopusx.ai/v1/seedance/asset/CreateAssetGroup \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
  "Name": "test",
  "Description": "this is description"
}'

Import asset (POST /v1/seedance/asset/CreateAsset)

NameTypeRequiredDescription
stringYesAsset group ID from data.Id returned by Create asset group
stringYesPublic HTTPS URL of the asset to import
stringYesAsset type: , ,
stringYesAsset name

On success, an AssetId is returned. Prefer in video requests instead of repeating the public URL.

Get asset (POST /v1/seedance/asset/GetAsset)

NameTypeRequiredDescription
stringYesTask ID returned when importing the asset

Poll processing progress and details. Once the asset is ready, use it in generation requests.