Skip to content

Seedance Video

Seedance Video uses an asynchronous video task API. Create a task first, then poll the retrieve endpoint for status and the final video URL.

Recommended integration

For new integrations, use the unified /v1/video/generations endpoint with the official-style top-level content array for text, images, videos, and audio.

Which Endpoint To Use

ScenarioRecommended endpointNotes
New integration/v1/video/generationsUnified video endpoint. It returns OpenAI-style video task objects and works well when you use multiple video models
Existing official Seedance / Ark client/api/v3/contents/generations/tasksOfficial-compatible path and task object shape for lower-friction migration
Existing simple image-to-video form/v1/video/generations with simplified fieldsYou can send prompt, image_url, images, video_url, or audio_url; Cubicspaces converts them into official-style content

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}
Moderate imagesPOST/v1/images/moderations

Supported Models

ModelNotes
doubao-seedance-2.0Seedance 2.0 standard model
doubao-seedance-2.0-fastSeedance 2.0 fast model; availability depends on account permissions and platform configuration

Supported Modes

ModeHow to call
Text to videoSend text items in the top-level content array
Image to videoSend image items in content; use role for first frame, last frame, or reference images
Video referenceSend video items in content with role: "reference_video"
Audio referenceSend audio items in content with role: "reference_audio" together with image or video media
Image moderationSubmit public image URLs to /v1/images/moderations, then use the returned asset:// URL in content

All asset://{...} values in this page are placeholders. In real requests, replace them with the full asset:// URL returned by the image moderation endpoint.

Top-Level Parameters

ParameterRequiredDescription
modelYesSeedance model name, such as doubao-seedance-2.0
contentRecommendedMultimodal content array for prompts, media inputs, media types, and roles
durationNoDuration in integer seconds. Default is usually 5; Seedance 2.0 commonly supports 4 to 15
ratioNoOutput aspect ratio. Supported values include adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
resolutionNoOutput resolution. Common values are 480p, 720p, and 1080p; doubao-seedance-2.0-fast does not support 1080p
generate_audioNoWhether to generate synchronized audio. Set false for silent video
watermarkNoWhether to add a watermark
seedNoRandom seed, useful when you want a more repeatable style
callback_urlNoTask callback URL. You can also poll the retrieve endpoint instead

Compatible Request Shapes

Cubicspaces supports two request shapes. For long-term integrations, prefer the official-style content array. Existing clients can keep using simplified fields.

Official-style content

content is an ordered array. Text, images, videos, and audio are all represented as content items. In prompts, refer to media by order, such as "image 1", "video 1", or "audio 1".

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Use image 1 as the product reference and video 1 as the camera-motion reference. Generate a 5-second product showcase."
    },
    {
      "type": "image_url",
      "role": "reference_image",
      "image_url": {
        "url": "asset://{product_asset_id}"
      }
    },
    {
      "type": "video_url",
      "role": "reference_video",
      "duration": 5,
      "video_url": {
        "url": "https://example.com/camera-motion.mp4"
      }
    }
  ],
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9"
}

Simplified fields

Simplified fields are useful for ordinary form-based integrations. Cubicspaces converts them into official-style content and appends prompt as a text item.

Simplified fieldConversion
promptA text item in content
image_urlOne image_url content item
imagesMultiple image_url content items; either string arrays or { "url": "...", "role": "..." } arrays are accepted
video_urlOne video_url content item
videosMultiple video_url content items
audio_urlOne audio_url content item
audiosMultiple audio_url content items
resolution_name, sizeUsed as resolution when resolution is empty
secondsUsed as duration when greater than 0
json
{
  "model": "doubao-seedance-2.0",
  "prompt": "Generate a smooth first-and-last-frame transition from image 1 to image 2.",
  "images": [
    { "url": "asset://{first_frame_asset_id}", "role": "first_frame" },
    { "url": "asset://{last_frame_asset_id}", "role": "last_frame" }
  ],
  "duration": 8,
  "resolution": "720p",
  "ratio": "16:9"
}

metadata passthrough

If you need an official field that is not available as a unified top-level field, put it in metadata. Cubicspaces merges metadata into the upstream request body. metadata.model is ignored; the top-level model and platform model mapping remain authoritative.

json
{
  "model": "doubao-seedance-2.0",
  "prompt": "Generate a fixed-camera product showcase video.",
  "metadata": {
    "camera_fixed": true,
    "service_tier": "default",
    "return_last_frame": true
  },
  "duration": 5,
  "resolution": "720p"
}

Examples

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.0",
    "content": [
      {
        "type": "text",
        "text": "A cinematic aerial shot of a futuristic cubic city at sunrise"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": false,
    "watermark": false
  }'

Official-Compatible Endpoint

If your client already uses the official task API shape, call the official-compatible path directly. After creation succeeds, use the response id to retrieve the 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.0",
    "content": [
      {
        "type": "text",
        "text": "A cinematic aerial shot of a futuristic cubic city at sunrise"
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": false
  }'

Image-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.0",
    "content": [
      {
        "type": "text",
        "text": "Use image 1 as the product appearance reference. Generate a clean 5-second studio showcase while preserving the subject."
      },
      {
        "type": "image_url",
        "role": "reference_image",
        "image_url": {
          "url": "asset://{image_asset_id}"
        }
      }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "1:1",
    "watermark": false
  }'

First And Last Frame

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Generate a smooth transition video from image 1 to image 2."
    },
    {
      "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": "16:9"
}

Video Reference Input

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Use video 1 as the camera-motion and pacing reference, then generate a new scene in the same style."
    },
    {
      "type": "video_url",
      "role": "reference_video",
      "video_url": {
        "url": "https://example.com/reference.mp4"
      }
    }
  ],
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9"
}

Image and Audio Reference

json
{
  "model": "doubao-seedance-2.0",
  "content": [
    {
      "type": "text",
      "text": "Use image 1 and audio 1 to create a product showcase video."
    },
    {
      "type": "image_url",
      "role": "reference_image",
      "image_url": {
        "url": "asset://{image_asset_id}"
      }
    },
    {
      "type": "audio_url",
      "role": "reference_audio",
      "audio_url": {
        "url": "https://example.com/reference.wav"
      }
    }
  ],
  "duration": 5,
  "ratio": "1:1",
  "generate_audio": true
}

content Items

FieldRequiredDescription
content[].typeYestext, image_url, video_url, or audio_url
content[].textConditionalUsed when type is text
content[].image_url.urlConditionalPublic image URL, or an approved image asset://<asset ID>
content[].video_url.urlConditionalPublic video URL. Cubicspaces checks that the URL is downloadable
content[].audio_url.urlConditionalPublic audio URL, or an upstream-supported audio asset URL
content[].roleConditionalMedia role; see the combination rules below
content[].durationNoReference duration for this media item, commonly used for video or audio references; unit is seconds

Media Combination Rules

ScenarioRecommended inputrole requirements
Text-to-videoText-only contentNo media role needed
Single image-to-videoOne image_url content itemfirst_frame, or omit the role
First-and-last-frame videoTwo image_url content itemsFirst image is first_frame; last image is last_frame
Multimodal reference videoSend reference images/videos/audios in contentImages use reference_image, videos use reference_video, audio uses reference_audio

Limits and guidance:

  • At most 9 reference images. First-and-last-frame requests should contain exactly 2 images.
  • At most 3 reference videos. Each video can be up to 15 seconds, and the total reference-video duration must not exceed 15 seconds.
  • At most 3 reference audio files. Each audio file can be up to 15 seconds, and the total reference-audio duration must not exceed 15 seconds.
  • Audio cannot be the only media input; provide at least one image or video as well.
  • Do not mix first-frame / first-and-last-frame roles with reference_image, reference_video, or reference_audio.
  • In prompts, refer to media by order, such as "image 1", "video 1", or "audio 1". Do not write Asset IDs directly in the prompt.

Media File Limits

MediaLimits
ImageCommon formats include jpeg, jpg, png, webp, bmp, tiff, and gif; each image should be below 30 MB; recommended aspect ratio is between 0.4 and 2.5; recommended width and height are between 300 and 6000 px
Videomp4 or mov; recommended resolution is 480p or 720p; the standard model may use 1080p when supported by the account and model, while the fast model does not support 1080p; each video should be below 50 MB; recommended frame rate is 4 to 60 FPS; the public URL must download video bytes directly, not an HTML login page
Audiomp3 or wav; each audio file should be below 15 MB

The current public API does not support base64 or inline binary media. Upload media to a publicly reachable URL first. For images, you can also use the moderation endpoint and pass the returned asset_url.

Moderate Images

When Seedance uses real-person or library-managed image assets, submit public image URLs to the image moderation endpoint first. After approval and ingestion, use the returned items[].asset_url as content[].image_url.url.

Submit all images used by the same Seedance generation request together in one image moderation request under the images array. Do not split images from the same generation request across multiple moderation calls; separate moderation batches can lead to inconsistent asset review batches or asset bindings.

http
POST /v1/images/moderations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Request Parameters

ParameterRequiredDescription
modelYesUsed to select Seedance capability. Use doubao-seedance-2.0
imagesYesImage URL array; all images used by the same generation request must be submitted in the same batch
asset_typeNoAsset type, defaults to Image; keep the default for image moderation

Images must be public http or https URLs. Base64 and inline binary content are not supported.

Request Example

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

Response Example

json
{
  "code": "success",
  "message": "",
  "data": {
    "object": "asset_moderation",
    "status": "approved",
    "review_batch_id": "review-batch-id",
    "task_id": "moderation-task-id",
    "items": [
      {
        "source_url": "https://example.com/person.png",
        "asset_url": "asset://{person_asset_id}",
        "submit_review_status": 1,
        "passed": true
      },
      {
        "source_url": "https://example.com/product.png",
        "asset_url": "asset://{product_asset_id}",
        "submit_review_status": 1,
        "passed": true
      }
    ]
  }
}

When passed is true and submit_review_status is 1, the image is approved.

Response and Retrieval

A successful create request returns a standard video task object:

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

Retrieve the task:

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

If you submitted the task through the official-compatible path, you can also use the response id to retrieve it through the official-compatible path:

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

When the task is completed, read the video URL from data.result_url. If the upstream provider returns token usage, the response also includes data.usage.completion_tokens and data.usage.total_tokens.

Status Values

StatusMeaning
queuedQueued
runningGenerating
succeededCompleted
failedFailed; inspect error.message

Notes

  • Use ratio: "adaptive" when you are unsure, or omit ratio and let upstream defaults apply.
  • Video reference URLs must be directly downloadable by the platform server. Do not pass URLs that require login, return HTML pages, or block server-side fetching.
  • Image references can use public URLs or asset://<asset ID> returned by the image moderation endpoint.
  • Actual model, resolution, and tool availability can vary by account permissions and platform configuration.