Skip to content

Create Video

Use the unified video endpoint to submit asynchronous video generation tasks. New integrations should use the official-style top-level content array, with text, images, videos, and audio in the same array.

Endpoint

http
POST /v1/video/generations

content is a multimodal content array. Text, images, videos, and audio inputs are all placed in the same array. Use type for the media type and role for the media purpose.

Text to Video

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "A cinematic aerial shot of a futuristic cubic city at sunrise"
    }
  ],
  "duration": 5,
  "ratio": "16:9",
  "generate_audio": false,
  "watermark": false
}

Image to Video

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Animate image 1 naturally with a cinematic camera move"
    },
    {
      "type": "image_url",
      "role": "first_frame",
      "image_url": {
        "url": "https://example.com/input.jpg"
      }
    }
  ],
  "duration": 5,
  "ratio": "16:9"
}

First and Last Frame

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Create a smooth transition from image 1 to image 2"
    },
    {
      "type": "image_url",
      "role": "first_frame",
      "image_url": {
        "url": "https://example.com/start.jpg"
      }
    },
    {
      "type": "image_url",
      "role": "last_frame",
      "image_url": {
        "url": "https://example.com/end.jpg"
      }
    }
  ],
  "duration": 5,
  "ratio": "16:9"
}

Multimodal Reference

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Use image 1, video 1, and audio 1 to create a product showcase video"
    },
    {
      "type": "image_url",
      "role": "reference_image",
      "image_url": {
        "url": "asset://reviewed-image-asset-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.wav"
      }
    }
  ],
  "duration": 5,
  "ratio": "1:1",
  "generate_audio": true
}

Top-level Fields

FieldRequiredDescription
modelYesVideo model name, for example doubao-seedance-2.0 or doubao-seedance-2.0-fast
contentRecommendedOfficial-style multimodal content array. Recommended for new integrations
durationNoDuration in seconds. Seedance 2.0 commonly supports 4 to 15; default is usually 5
ratioNoAspect ratio, for example adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
resolutionNoOutput resolution, for example 480p, 720p, 1080p. Availability depends on the model and account
generate_audioNoWhether to generate synchronized audio
watermarkNoWhether to add a watermark

content

FieldRequiredDescription
content[].typeYestext, image_url, video_url, or audio_url
content[].textConditionalRequired when type is text
content[].image_url.urlConditionalPublic image URL, or an approved asset://<asset ID>
content[].video_url.urlConditionalPublic video URL
content[].audio_url.urlConditionalPublic audio URL
content[].roleConditionalAsset role

Supported roles:

Assetrole
Imagefirst_frame, last_frame, reference_image
Videoreference_video
Audioreference_audio

Asset Limits

  • Base64 and inline binary media are not supported in the public request body.
  • Image, video, and audio URLs must be directly reachable by the platform server.
  • Up to 9 reference images.
  • Up to 3 reference videos. Each video should be at most 15 seconds, and the total reference video duration should not exceed 15 seconds.
  • Up to 3 reference audios. Each audio should be at most 15 seconds, and the total reference audio duration should not exceed 15 seconds.
  • Audio cannot be the only asset. Provide at least one image or video together with audio.
  • Do not mix first-frame/last-frame scenarios with reference_image, reference_video, or reference_audio.

Real-person Images and Moderation

If an input image contains a real person or private information, the upstream may return a PrivacyInformation safety error. For stable use of these assets, submit the image to the moderation endpoint first:

http
POST /v1/images/moderations

After approval, use the returned items[].asset_url in content[].image_url.url.

Response

Task submission returns a task ID:

json
{
  "id": "video_xxx",
  "task_id": "video_xxx",
  "object": "video",
  "model": "doubao-seedance-2.0",
  "status": "queued",
  "created_at": 1770000000
}

Query the task:

http
GET /v1/video/generations/{task_id}

Read the video URL from the task query response after the task succeeds. See the model-specific page for the exact response fields.