# Seedance 2.0 Series Guide This file is the focused AI-readable context for one UniAll documentation page. URL: https://docs.uniall.ai/models/video/seedance-2-0/series-guide Locale: en Markdown: https://docs.uniall.ai/ai/pages/models/video/seedance-2-0/series-guide.md Description: Use Seedance 2.0, Seedance 2.0 Fast, and Seedance 2.0 Mini through UniAll with multimodal input, video editing, extension, and task polling. Agent guidance: - Use this page when the user is asking about this specific route or model capability. - Preserve endpoint paths, JSON keys, model IDs, and placeholder values exactly. - `{BASE_URL}` means `https://api.uniall.ai`; treat `sk-***` and `task_xxx` as safe placeholders, not real secrets. ## Page Markdown 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 Model | Supported Resolutions | Recommended Use | | --- | --- | --- | | `seedance2.0` | `480p`, `720p`, `1080p`, `4k` | Full capabilities with quality prioritized | | `seedance2.0-fast` | `480p`, `720p` | Faster generation | | `seedance2.0-mini` | `480p`, `720p` | Lightweight 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: ```http POST /v1/videos GET /v1/videos/{task_id} GET /v1/videos/{task_id}/content ``` Request headers: ```http Authorization: Bearer sk-*** Content-Type: application/json ``` Use this value for `{BASE_URL}` in the examples: ```uri https://api.uniall.ai ``` The following compatibility endpoints remain available: ```http 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 | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `model` | string | Yes | One of the three public models, or a fixed-resolution model ID during the compatibility period. | | `prompt` | string | Conditional | Video prompt. When using `content[]`, include at least one `type=text` item instead. | | `resolution` | string | Yes for new public models | Output resolution from the selected model's supported values. | | `size` | string | No | Compatibility alias for `resolution`. | | `duration` | integer/string | Yes | Output duration from `4` to `15` seconds. The compatible value `auto` is accepted, but an explicit integer is recommended. | | `aspect_ratio` | string | No | `auto`, `21:9`, `16:9`, `4:3`, `3:2`, `2:3`, `1:1`, `3:4`, or `9:16`. | | `ratio` | string | No | Compatibility alias for `aspect_ratio`; `adaptive` is equivalent to `auto`. | | `content` | object[] | No | Recommended multimodal input format described in the next section. | | `operation` | string | Required for specific capabilities | `reference_to_video`, `edit_video`, or `extend_video`. | | `generate_audio` | boolean | No | Whether to generate a video with audio. | | `watermark` | boolean | No | Whether to add a watermark. | | `seed` | integer | No | Random seed. | | `return_last_frame` | boolean | No | Whether to return a last-frame URL in the completed result. | | `tools` | object[] | No | Currently 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: ```json { "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: | `type` | `role` | Meaning | | --- | --- | --- | | `text` | None | One or more prompt items. | | `image_url` | `image` | Input image for single-image-to-video. | | `image_url` | `reference_image` | Reference image. | | `image_url` | `first_frame` | First-frame image. | | `image_url` | `last_frame` | Last-frame image. | | `video_url` | `source_video` | Source video for editing or extension. | | `video_url` | `reference_video` | Reference video. | | `audio_url` | `reference_audio` | Reference 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 ```bash 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 ```bash 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 ```bash 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 ```bash 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 ```bash 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 ```bash 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" } ] }' ``` ### 5.7 Text-Only Web Search Web search works only with text input. Do not include images, video, or audio in the same request. ```bash 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 ```bash 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](/models/video/seedance-2-0/material-library). When the material reaches `status=available`, replace a regular media URL with the returned `uri`: ```json { "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: ```json { "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](/models/video/overview#video-task-lifecycle) 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 Series | Compatible Model IDs | | --- | --- | | Standard | `seedance2.0-480p`, `seedance2.0-720p`, `seedance2.0-1080p`, `seedance2.0-4k` | | Fast | `seedance2.0-fast-480p`, `seedance2.0-fast-720p` | | Mini | `seedance2.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 | Scenario | Result | Fix | | --- | --- | --- | | New public model is missing `resolution`/`size` | HTTP `400` | Pass a supported resolution. | | `resolution` and `size` differ | HTTP `400` | Pass one field, or make both values identical. | | `aspect_ratio` and `ratio` conflict | HTTP `400` | Pass one field, or make both express the same ratio. | | Missing `duration` | HTTP `400` | Pass an integer from `4` to `15`. | | `content[]` has no text item | HTTP `400` | Add a non-empty `type=text` item. | | First and last frames are not paired | HTTP `400` | Pass both `first_frame` and `last_frame`. | | Audio-only or text-plus-audio input | HTTP `400` | Add at least one image or video. | | Web-search request contains media | HTTP `400` | Keep only text input in a search request. | | Too many images, videos, or audio files | HTTP `400` | Keep the counts at or below 9, 3, and 3. | | `draft`, `frames`, `camera_fixed`, or `service_tier=flex` is used | HTTP `400` | Remove 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. ## 9. Related Pages - [Seedance 2.0](/models/video/seedance-2-0) - [Seedance 2.0 Material Library](/models/video/seedance-2-0/material-library) - [Video Generation Overview](/models/video/overview#video-task-lifecycle)