Skip to main content

Seedance 2.0 Series Guide

Updated: 2026-07-29

Use the Seedance 2.0 series through UniAll. New integrations should use one of the three stable public model IDs and select the resolution and generation capability through request parameters.

1. Choose a Model

Public ModelSupported ResolutionsRecommended Use
seedance2.0480p, 720p, 1080p, 4kFull capabilities with quality prioritized
seedance2.0-fast480p, 720pFaster generation
seedance2.0-mini480p, 720pLightweight and speed-focused tasks

All three models support:

  • text-to-video;
  • single-image-to-video;
  • first-and-last-frame generation;
  • multimodal image, video, and audio references;
  • video editing and extension;
  • generated audio, watermarks, and random seeds;
  • web search for text-only requests;
  • returning the generated video's last frame;
  • existing asset:// asset IDs.

2. Endpoints and Authentication

Use the OpenAI-compatible video task endpoints:

POST /v1/videos
GET /v1/videos/{task_id}
GET /v1/videos/{task_id}/content

Request headers:

Authorization: Bearer sk-***
Content-Type: application/json

Use this value for {BASE_URL} in the examples:

https://api.uniall.ai

The following compatibility endpoints remain available:

POST /v1/videos/generations
GET /v1/videos/generations/{task_id}

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

New integrations should use /v1/videos consistently.

3. Common Parameters

ParameterTypeRequiredDescription
modelstringYesOne of the three public models, or a fixed-resolution model ID during the compatibility period.
promptstringConditionalVideo prompt. When using content[], include at least one type=text item instead.
resolutionstringYes for new public modelsOutput resolution from the selected model's supported values.
sizestringNoCompatibility alias for resolution.
durationinteger/stringYesOutput duration from 4 to 15 seconds. The compatible value auto is accepted, but an explicit integer is recommended.
aspect_ratiostringNoauto, 21:9, 16:9, 4:3, 3:2, 2:3, 1:1, 3:4, or 9:16.
ratiostringNoCompatibility alias for aspect_ratio; adaptive is equivalent to auto.
contentobject[]NoRecommended multimodal input format described in the next section.
operationstringRequired for specific capabilitiesreference_to_video, edit_video, or extend_video.
generate_audiobooleanNoWhether to generate a video with audio.
watermarkbooleanNoWhether to add a watermark.
seedintegerNoRandom seed.
return_last_framebooleanNoWhether to return a last-frame URL in the completed result.
toolsobject[]NoCurrently supports only [{"type":"web_search"}].

Compatibility rules:

  • resolution and size must match when both are present.
  • aspect_ratio and ratio must express the same ratio when both are present.
  • ratio: "adaptive" is equivalent to aspect_ratio: "auto".
  • operation, generate_audio, watermark, seed, return_last_frame, and tools may also be placed inside extra_body. Do not repeat the same parameter at the top level and in extra_body.
  • draft, frames, camera_fixed, and service_tier: "flex" are outside the current public contract.

4. Multimodal content[] Format

Use content[] for complex inputs:

{
"content": [
{
"type": "text",
"text": "Video prompt"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png"
},
"role": "reference_image"
},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/video.mp4"
},
"role": "reference_video"
},
{
"type": "audio_url",
"audio_url": {
"url": "https://example.com/audio.mp3"
},
"role": "reference_audio"
}
]
}

Supported types and roles:

typeroleMeaning
textNoneOne or more prompt items.
image_urlimageInput image for single-image-to-video.
image_urlreference_imageReference image.
image_urlfirst_frameFirst-frame image.
image_urllast_frameLast-frame image.
video_urlsource_videoSource video for editing or extension.
video_urlreference_videoReference video.
audio_urlreference_audioReference audio.

Input constraints:

  • content[] must contain at least one non-empty text item.
  • Use no more than 9 images, 3 videos, and 3 audio files.
  • first_frame and last_frame must be provided together, with one image for each role.
  • First-and-last-frame mode cannot include videos, audio, or other images.
  • Do not mix the image and reference_image roles in one request.
  • Use no more than one source_video.
  • Reference audio requires at least one image or video. Audio-only and text-plus-audio requests are not accepted.
  • With multiple reference assets, use @Image1, @Video1, and @Audio1 in the prompt to identify assets by order.

Simple requests remain compatible with image, images, last_image, video, videos, and audios. Use content[] for new capabilities and multimodal combinations so each input role is explicit.

5. Request Examples

5.1 Text-to-Video

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0",
"prompt": "A futuristic city street after rain, neon reflections, and a slow cinematic camera push forward.",
"resolution": "1080p",
"duration": 5,
"ratio": "16:9",
"generate_audio": true
}'

5.2 Single-Image-to-Video

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0-fast",
"resolution": "720p",
"duration": 6,
"content": [
{
"type": "text",
"text": "The person turns naturally toward the camera, clothing moves gently in the wind, and identity remains consistent."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/person.png"
},
"role": "image"
}
]
}'

5.3 First-and-Last-Frame Video

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0",
"resolution": "720p",
"duration": 6,
"content": [
{
"type": "text",
"text": "Transition naturally from day to night with continuous motion and stable building structure."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/first.png"
},
"role": "first_frame"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/last.png"
},
"role": "last_frame"
}
]
}'

5.4 Multimodal Reference-to-Video

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0-mini",
"resolution": "720p",
"duration": 8,
"operation": "reference_to_video",
"content": [
{
"type": "text",
"text": "Show the product from @Image1 with the camera motion from @Video1 and the rhythm from @Audio1."
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/product.png"
},
"role": "reference_image"
},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/motion.mp4"
},
"role": "reference_video"
},
{
"type": "audio_url",
"audio_url": {
"url": "https://example.com/music.mp3"
},
"role": "reference_audio"
}
]
}'

5.5 Video Editing

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0",
"resolution": "720p",
"duration": 6,
"operation": "edit_video",
"content": [
{
"type": "text",
"text": "Replace the background with a neon street at night while preserving the person's motion and identity."
},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/source.mp4"
},
"role": "source_video"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/style.png"
},
"role": "reference_image"
}
]
}'

5.6 Video Extension

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0-fast",
"resolution": "720p",
"duration": 5,
"operation": "extend_video",
"content": [
{
"type": "text",
"text": "Continue the camera motion as the person walks forward, preserving the lighting and scene."
},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/source.mp4"
},
"role": "source_video"
}
]
}'

Web search works only with text input. Do not include images, video, or audio in the same request.

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0-mini",
"prompt": "Create a concise news video from today's publicly available technology news without showing brand logos.",
"resolution": "720p",
"duration": 5,
"tools": [
{
"type": "web_search"
}
]
}'

web_search allows the model to retrieve public information, but it does not guarantee that every generation will perform a search.

5.8 Return the Last Frame

curl -X POST "{BASE_URL}/v1/videos" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.0",
"prompt": "A paper boat slowly stops beside a stone bridge, with a stable final frame.",
"resolution": "720p",
"duration": 5,
"return_last_frame": true
}'

When the task completes, the last frame is returned as result.last_frame_url and is not mixed into the video outputs array.

5.9 Use A Managed Material

Create and query reusable inputs through the Seedance 2.0 Material Library. When the material reaches status=available, replace a regular media URL with the returned uri:

{
"type": "video_url",
"video_url": {
"url": "asset://asset-xxxxxxxxxxxxx"
},
"role": "source_video"
}

Use the URI only in the matching structured image, video, or audio field. Do not put it in the prompt. UniAll.ai verifies the current user's ownership, material status, and expiry before creating the video task.

6. Task Status And Result

A successful create request returns an asynchronous task:

{
"id": "task_xxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxx",
"object": "video.generation.job",
"model": "seedance2.0",
"status": "queued",
"progress": 0,
"created_at": 1784640000
}

After creation, save id or task_id, then poll GET /v1/videos/{task_id} until the task reaches completed or failed. See Video Generation Overview for the shared polling interval, status fields, error contract, result URL, and authenticated download flow.

When a Seedance request produces a last frame, the completed response may also include result.last_frame_url.

7. Fixed-Resolution Model Compatibility

Existing clients may continue using fixed-resolution model IDs:

Model SeriesCompatible Model IDs
Standardseedance2.0-480p, seedance2.0-720p, seedance2.0-1080p, seedance2.0-4k
Fastseedance2.0-fast-480p, seedance2.0-fast-720p
Miniseedance2.0-mini-480p, seedance2.0-mini-720p

The following earlier IDs also remain compatible:

  • seedance2.0-video-480p
  • seedance2.0-video-720p
  • seedance2.0-fast-video-480p
  • seedance2.0-fast-video-720p

Fixed-resolution model IDs determine the resolution and do not require an additional resolution field. They support the same parameters and capabilities as the corresponding public model. If resolution or size is still present, its value must match the resolution in the model ID.

New projects should migrate to the three public model IDs so output resolution can be changed through a request parameter.

8. Common Errors

ScenarioResultFix
New public model is missing resolution/sizeHTTP 400Pass a supported resolution.
resolution and size differHTTP 400Pass one field, or make both values identical.
aspect_ratio and ratio conflictHTTP 400Pass one field, or make both express the same ratio.
Missing durationHTTP 400Pass an integer from 4 to 15.
content[] has no text itemHTTP 400Add a non-empty type=text item.
First and last frames are not pairedHTTP 400Pass both first_frame and last_frame.
Audio-only or text-plus-audio inputHTTP 400Add at least one image or video.
Web-search request contains mediaHTTP 400Keep only text input in a search request.
Too many images, videos, or audio filesHTTP 400Keep the counts at or below 9, 3, and 3.
draft, frames, camera_fixed, or service_tier=flex is usedHTTP 400Remove the unsupported parameter.

For safety-review, media-format, or parameter errors, fix the input and create a new task instead of repeatedly submitting the same invalid request.