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.

Endpoints

CapabilityMethodPath
Create video task (v3 compatible)POST/api/v3/contents/generations/tasks
Retrieve video task (v3 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

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

Examples

Text-to-Video

bash
curl -X POST https://cubicspace.cn/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
  }'

Image-to-Video

bash
curl -X POST https://cubicspace.cn/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://reviewed-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://reviewed-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

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://cubicspace.cn/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://reviewed-person-asset-id",
        "submit_review_status": 1,
        "passed": true
      },
      {
        "source_url": "https://example.com/product.png",
        "asset_url": "asset://reviewed-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

Official-Compatible API

The official-compatible video task endpoints are supported:

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

Full URLs:

text
POST https://cubicspace.cn/api/v3/contents/generations/tasks
GET  https://cubicspace.cn/api/v3/contents/generations/tasks/{task_id}

Unified Video API

A successful create request returns a standard video task object:

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

Retrieve the task:

bash
curl https://cubicspace.cn/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. A different token receives task_not_exist.

Example response after the task succeeds:

json
{
  "code": "success",
  "message": "",
  "data": {
    "task_id": "task_xxx",
    "action": "generate",
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://example.com/generated-video.mp4",
    "properties": {
      "prompt": "A cat running across a meadow",
      "origin_model_name": "doubao-seedance-2.0"
    },
    "usage": {
      "prompt_tokens": 0,
      "completion_tokens": 38800,
      "total_tokens": 38800
    }
  }
}
  • Read the final video URL from data.result_url.
  • data.usage.completion_tokens and data.usage.total_tokens are the final effective token counts returned by the upstream provider after completion, not the estimate used when the task was created.
  • Before completion, the final usage does not exist yet and data.usage may be omitted.
  • data.quota, when present, is an internal billing-quota value rather than a token count. Use data.usage for usage reporting.

Status Values

The create response uses lowercase queued. Subsequent responses from /v1/video/generations/{task_id} use these values in data.status:

Query statusMeaning
NOT_START / SUBMITTED / QUEUEDWaiting or queued
IN_PROGRESSGenerating
SUCCESSCompleted; read data.result_url and final data.usage
FAILUREFailed; inspect data.fail_reason

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.