Seedance 2.5
{BASE_URL} is https://api.uniall.ai throughout this page.
Updated: 2026-10-19
Overview
UniAll exposes Seedance 2.5 through one stable public model ID: seedance2.5. It supports text-to-video, first-frame and first-and-last-frame generation, multimodal references, video editing, video extension, reusable asset:// media, optional web search, and 480p Draft previews followed by 1080p finalization.
| Capability | Required input | Key rule |
|---|---|---|
| Text-to-video | Prompt | Defaults to 720p and automatic duration; explicit controls are optional. |
| First-frame video | One first-frame image | Omit aspect_ratio or use auto. |
| First-and-last-frame video | One first-frame and one last-frame image | Omit aspect_ratio or use auto. |
| Multimodal reference | Images, videos, or audio | Text is optional; audio-only reference requests are allowed. |
| Video editing | Prompt and one video | Set omni_reference_task_type: "edit" and use automatic duration. |
| Video extension | Prompt and one video | Set omni_reference_task_type: "extend" explicitly. |
| Draft to final video | Your completed Draft task ID | Create a 480p preview, then finalize it at 1080p within seven days using inherited settings. |
Endpoints And Authentication
| Action | Method | Path |
|---|---|---|
| Create task | POST | /v1/videos |
| Query task | GET | /v1/videos/{task_id} |
Compatible creation and query aliases remain available to existing clients:
POST /v1/videos/generations
POST /v1/video/generations
GET /v1/videos/generations/{task_id}
GET /v1/video/generations/{task_id}
New integrations should use /v1/videos and /v1/videos/{task_id}.
Authorization: Bearer <UNIAI_API_KEY>
Content-Type: application/json
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | seedance2.5. |
prompt | string | Conditional | Text instruction. Required for text-only generation, editing, and extension. May be omitted with image, video, or audio references; omit when finalizing a Draft. |
resolution | string | No | 480p, 720p, or 1080p. Ordinary requests default to 720p; Draft defaults to and requires 480p; Draft finalization defaults to and requires 1080p. |
duration | integer/string | No | "auto", -1, or an integer from 4 to 30. Defaults to automatic duration. Editing requires automatic duration; omit when finalizing a Draft. |
aspect_ratio | string | No | auto, 21:9, 16:9, 4:3, 1:1, 3:4, or 9:16. Frame inputs, editing, and extension require omission or auto. Omit when finalizing a Draft. |
content | object[] | No | Text, image, video, or audio parts. A text part uses {"type":"text","text":"..."}. See media roles below. |
omni_reference_task_type | string | No | auto, reference, edit, or extend. Set edit or extend explicitly for those workflows; omit when finalizing a Draft. |
draft | boolean | No | true creates a 480p preview; defaults to false. Do not set true when finalizing a Draft. |
draft_task_id | string | Conditional | The completed Draft's UniAI task ID, owned by the same user and created less than seven days ago. Use it to create the 1080p final video. |
output_format | string | No | mp4 or mov; defaults to mp4. |
generate_audio | boolean | No | Whether to generate audio. Explicit false is preserved. Inherited during Draft finalization; omit it then. |
watermark | boolean | No | Whether to add a watermark. Explicit false is preserved. |
return_last_frame | boolean | No | Whether to return the generated last frame when available. Explicit false is preserved. |
seed | integer | No | -1 to 2147483647. Omit when finalizing a Draft. |
priority | integer | No | 0 to 9; explicit 0 is preserved. |
execution_expires_after | integer | No | Execution expiry in seconds, from 3600 to 259200. |
safety_identifier | string | No | 1 to 64 visible ASCII characters, without spaces or control characters. Use a non-sensitive identifier. |
tools | object[] | No | Web search uses [{"type":"web_search"}]. Omit when finalizing a Draft. |
service_tier | string | No | Only default is supported. flex is unavailable. |
size | string | No | Compatibility alias for resolution; if both are present, they must describe the same resolution. Prefer resolution. |
seconds | integer/string | No | Compatibility alias for duration. Prefer duration. Omit when finalizing a Draft. |
ratio | string | No | Compatibility alias for aspect_ratio; adaptive is normalized to auto. Omit when finalizing a Draft. |
operation | string | No | Compatible workflow selector: reference_to_video, edit_video, or extend_video. Prefer omni_reference_task_type in new examples and avoid conflicting selectors. Omit when finalizing a Draft. |
Use top-level parameters. Compatible clients may use extra_body for controls; any field present both there and at the top level must have identical values. Explicit false and 0 are values, not omitted settings.
4K, frames, camera_fixed, and the flex service tier are unsupported.
Minimal Text-To-Video Request
curl -X POST "https://api.uniall.ai/v1/videos" \
-H "Authorization: Bearer <UNIAI_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.5",
"prompt": "A mechanical bird unfolds its wings on a wooden table."
}'
Omitting resolution and duration uses 720p and automatic duration for ordinary generation. To choose explicit output settings and advanced controls:
{
"model": "seedance2.5",
"prompt": "A mechanical bird unfolds its wings on a wooden table.",
"resolution": "1080p",
"duration": 4,
"aspect_ratio": "16:9",
"output_format": "mp4",
"generate_audio": true,
"watermark": false,
"return_last_frame": true,
"seed": 250628,
"priority": 0,
"execution_expires_after": 86400,
"safety_identifier": "video-demo-01"
}
Media Inputs
Use content[] for new multimodal integrations. Each item carries one media type and an explicit role.
| Item type | URL field | Supported roles |
|---|---|---|
text | text | Generation or editing instruction |
image_url | image_url.url | first_frame, last_frame, reference_image |
video_url | video_url.url | reference_video |
audio_url | audio_url.url | reference_audio |
Media URLs may be public HTTP(S) URLs or valid asset:// references. HTTP(S) media must remain reachable by the UniAll service without cookies or custom request headers. See the Seedance Material Library for creating reusable asset:// inputs. Wait for available, then copy the returned uri; do not construct it from mat_*. Use the material before expires_at.
The image and audio compatibility fields image, images, audios, and last_image remain accepted. Do not send conflicting values through both content[] and compatibility fields.
For video reference, use a content[] item with type: "video_url" and role: "reference_video". Top-level video / video_url fields use editing or extension semantics and cannot directly replace a reference-video item. For editing or extension, explicitly set omni_reference_task_type to edit or extend.
Media Limits
- Up to
30images. - Up to
10videos. - Up to
10audio files. - Up to
50media items in total. - A multimodal request may omit text.
- An audio-only reference request is valid.
Operation Rules
| Mode | omni_reference_task_type | duration | aspect_ratio |
|---|---|---|---|
| Text-to-video | Omit or auto | Omit, "auto", -1, or integer 4..30 | Any supported value |
| First-frame / first-and-last-frame video | Omit or auto | Omit, "auto", -1, or integer 4..30 | Omit or auto |
| Multimodal reference | reference when specified | Omit, "auto", -1, or integer 4..30 | Follow the media mode; frame inputs require auto |
| Video editing | edit required | Omit, "auto", or -1 | Omit or auto |
| Video extension | extend required | Omit, "auto", -1, or integer 4..30 | Omit or auto |
| Draft finalization | Omit; inherited | Omit; inherited | Omit; inherited |
Editing and extension require both a prompt and a source video. Do not rely on prompt keywords to select the workflow. Existing operation selectors remain compatible; new examples use omni_reference_task_type.
Request Examples
First-And-Last-Frame Video
{
"model": "seedance2.5",
"prompt": "Move naturally from the first composition to the last while preserving the subject.",
"resolution": "720p",
"duration": 10,
"aspect_ratio": "auto",
"content": [
{
"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"
}
]
}
For a single first frame, send only the first_frame item. In both frame modes, fixed aspect ratios are rejected because the source frame determines the composition.
Multimodal Reference
{
"model": "seedance2.5",
"omni_reference_task_type": "reference",
"resolution": "720p",
"duration": 12,
"content": [
{
"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"
}
]
}
Audio-Only Reference Without A Prompt
{
"model": "seedance2.5",
"resolution": "480p",
"duration": 4,
"content": [
{
"type": "audio_url",
"audio_url": {
"url": "https://example.com/reference.wav"
},
"role": "reference_audio"
}
]
}
Video Editing
{
"model": "seedance2.5",
"prompt": "Replace the sky and preserve the subject",
"video": "https://example.com/source.mp4",
"omni_reference_task_type": "edit",
"resolution": "720p",
"duration": "auto",
"aspect_ratio": "auto"
}
Video Extension
{
"model": "seedance2.5",
"prompt": "Continue the camera movement into the illuminated square.",
"video": "asset://asset-EXAMPLE",
"omni_reference_task_type": "extend",
"resolution": "720p",
"duration": 8,
"aspect_ratio": "auto",
"output_format": "mov"
}
Web Search
{
"model": "seedance2.5",
"prompt": "Create a concise visual recap of the latest public spaceflight milestone.",
"resolution": "720p",
"duration": 8,
"tools": [
{
"type": "web_search"
}
]
}
Web search can be combined with media inputs. No other tools shape is accepted.
Draft Preview To 1080p Final Video
1. Create A 480p Draft
Set draft: true. Omitting resolution selects 480p; any other explicit tier is rejected. A Draft may also use the media-reference inputs on this page.
curl -X POST "https://api.uniall.ai/v1/videos" \
-H "Authorization: Bearer <UNIAI_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.5",
"prompt": "A mechanical bird unfolds its wings on a wooden table.",
"draft": true,
"duration": 4,
"aspect_ratio": "16:9",
"generate_audio": true,
"seed": 250628
}'
2. Save The UniAI Task ID And Wait For Completion
Poll using the create response's id or task_id until status is completed. Replace the placeholder task_YOUR_COMPLETED_DRAFT below with the actual UniAI task ID you received.
curl "https://api.uniall.ai/v1/videos/task_YOUR_COMPLETED_DRAFT" \
-H "Authorization: Bearer <UNIAI_API_KEY>"
3. Create The Final Video
The parent must be a completed Seedance 2.5 Draft owned by the same UniAI user and created less than seven days ago. Pending, failed, expired, non-Draft, or another user's tasks cannot be reused.
curl -X POST "https://api.uniall.ai/v1/videos" \
-H "Authorization: Bearer <UNIAI_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2.5",
"draft_task_id": "task_YOUR_COMPLETED_DRAFT",
"output_format": "mov",
"watermark": false,
"return_last_frame": true,
"priority": 0
}'
Finalization defaults to 1080p; you may explicitly set resolution: "1080p". Other resolutions are rejected. A successful submission returns a new final-video task ID; poll it in the same way.
The final video inherits the Draft's prompt, all media, duration, aspect ratio, seed, generate_audio, and task type. Omit these fields instead of repeating or overriding them; also omit tools, operation, and omni_reference_task_type. Do not repeat the original content or resend even generate_audio: false.
You may separately set output_format, watermark, return_last_frame, priority, execution_expires_after, and safety_identifier. Do not set draft: true.
A content array containing exactly one Draft reference is also accepted:
{
"model": "seedance2.5",
"content": [
{
"type": "draft_task",
"draft_task": {
"id": "task_YOUR_COMPLETED_DRAFT"
}
}
]
}
Its id must also be the public task ID returned by UniAI. Do not mix it with text or media parts. If draft_task_id is also present, both IDs must match.
Create Response And Task Lifecycle
{
"id": "task_xxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxx",
"object": "video.generation.job",
"model": "seedance2.5",
"status": "queued",
"progress": 0,
"created_at": 1792368000
}
Store the public id or task_id and poll GET /v1/videos/{task_id} every 2 to 5 seconds until status is completed or failed. After completion, prefer the returned video_url to download the video; compatible responses may also expose it in result.video_url or result.outputs. Do not treat result URLs as permanent storage.
Query an ordinary task in the same way:
curl "https://api.uniall.ai/v1/videos/task_YOUR_VIDEO" \
-H "Authorization: Bearer <UNIAI_API_KEY>"
If you requested return_last_frame: true, read the returned last-frame result when available. 1080p output uses HEVC/10bit and needs a compatible player. MP4 and MOV select the output container.
Do not automatically retry Seedance 2.5 creation requests after failure, a client timeout, or an uncertain outcome. If you have a task ID, continue querying that task. If no ID was received, establish the original request's outcome first. This rule also applies to Draft finalization.
See Video Generation Overview for public status fields, completed/failed responses, and error handling. This model's no-automatic-retry rule takes precedence over general retry guidance.
Billing Notes
Use each task's actual Token usage and final settlement record; pre-deduction is only an estimate. A Draft and its final video are separate billable tasks. The Draft does not offset the final video and is not counted again as an input video for finalization. Check the current UniAll price available to your account.
Common Errors
| Error | Cause | Fix |
|---|---|---|
| Missing input | No prompt, media, or valid Draft reference | Supply the required input for the selected workflow. |
| Invalid resolution | 4K or a mismatched Draft/final-video tier | Use 480p/720p/1080p for ordinary tasks, only 480p for Drafts, and only 1080p for finalization. |
| Conflicting aliases | resolution and size contain different values | Remove size or make the values identical. |
| Invalid edit duration | Editing uses an integer duration | Omit duration or use "auto"/-1. |
| Invalid aspect ratio | A frame, edit, or extension request uses a fixed ratio | Omit aspect_ratio or set it to auto. |
| Media limit exceeded | Per-type or total media limits were exceeded | Reduce media to the documented limits. |
| Media unavailable | A URL is private, expired, or unreachable from the public internet | Use a stable public URL or an available asset:// material. |
| Invalid tools | tools is not exactly the supported web-search structure | Send [{"type":"web_search"}] or omit tools. |
| Unsupported field | frames, camera_fixed, or service_tier: "flex" was sent | Remove the unsupported field. |
| Invalid Draft reference | Missing, incomplete, non-Draft, expired, or another user's task | Use your completed Draft's UniAI task ID within seven days of creation. |
| Repeated inherited fields | Finalization resends the prompt, media, duration, ratio, seed, audio, or task type | Omit inherited fields; send the Draft ID and permitted output controls only. |
| Invalid parameter type or range | String booleans or out-of-range priority, seed, or expiry | Use JSON booleans and the integer ranges in the parameter table. |