# Seedance 2.5

> Create text, image, multimodal-reference, editing, and extension video tasks with Seedance 2.5 through UniAll.

Canonical URL: https://docs.uniall.ai/models/video/seedance-2-5
Locale: en

`{BASE_URL}` is `https://api.uniall.ai` throughout this page.

Updated: 2026-08-12

## 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, and optional web search.

| Capability | Required input | Key rule |
| --- | --- | --- |
| Text-to-video | Prompt | Set `resolution` and `duration`. |
| 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 `operation: "edit_video"` and `duration: "auto"`. |
| Video extension | Prompt and one video | Set `operation: "extend_video"` explicitly. |

## Endpoints And Authentication

| Action | Method | Path |
| --- | --- | --- |
| Create task | `POST` | `/v1/videos` |
| Query task | `GET` | `/v1/videos/{task_id}` |
| Download completed video | `GET` | `/v1/videos/{task_id}/content` |

Compatible creation and query aliases remain available to existing clients:

```http
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}`.

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

## Request Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `model` | string | Yes | Must be `seedance2.5`. |
| `resolution` | string | Yes | `480p` or `720p`. |
| `size` | string | No | Compatibility alias for `resolution`. If both are present, they must match. |
| `duration` | integer/string | Yes | Integer from `4` through `30`, or `auto`. Operation-specific rules apply. |
| `prompt` | string | Conditional | Text instruction. Required for text generation, editing, and extension; optional for media-only reference requests. |
| `aspect_ratio` | string | No | `auto`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, or `9:16`. |
| `ratio` | string | No | Compatibility alias for `aspect_ratio`; `adaptive` is normalized to `auto`. |
| `output_format` | string | No | `mp4` or `mov`; default `mp4`. Compatible clients may use `extra_body.output_format`. |
| `content` | object[] | No | Multimodal image, video, and audio items with explicit roles. |
| `operation` | string | Conditional | Explicitly required for `edit_video` and `extend_video`; use `reference_to_video` for multimodal reference generation when an operation is sent. |
| `generate_audio` | boolean | No | Whether the task should generate audio. |
| `seed` | integer | No | Random seed for reproducible variation where supported. |
| `watermark` | boolean | No | Whether to add a watermark. |
| `return_last_frame` | boolean | No | Whether to return the final generated frame when available. |
| `tools` | object[] | No | Only `[{"type":"web_search"}]` is accepted. |

The following fields are not part of the public Seedance 2.5 contract and are rejected: `draft`, `frames`, `camera_fixed`, and `service_tier: "flex"`.

## Minimal Text-To-Video Request

```bash
curl -X POST "{BASE_URL}/v1/videos" \
  -H "Authorization: Bearer sk-***" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance2.5",
    "prompt": "A cinematic city street after rain",
    "resolution": "720p",
    "duration": 8,
    "aspect_ratio": "16:9",
    "output_format": "mp4"
  }'
```

## Media Inputs

Use `content[]` for new multimodal integrations. Each item carries one media type and an explicit role.

| Item type | URL field | Supported roles |
| --- | --- | --- |
| `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](/models/video/seedance-2-0/material-library) for creating reusable `asset://` inputs.

The compatibility fields `image`, `images`, `video`, `videos`, `audios`, and `last_image` remain accepted. Do not send conflicting values through both `content[]` and compatibility fields.

### Media Limits

- Up to `30` images.
- Up to `10` videos.
- Up to `10` audio files.
- Up to `50` media items in total.
- A multimodal request may omit text.
- An audio-only reference request is valid.

## Operation Rules

| Mode | `operation` | `duration` | `aspect_ratio` |
| --- | --- | --- | --- |
| Text-to-video | Omit | `auto` or integer `4..30` | Any supported value |
| First-frame video | Omit | `auto` or integer `4..30` | Omit or `auto` |
| First-and-last-frame video | Omit | `auto` or integer `4..30` | Omit or `auto` |
| Multimodal reference | `reference_to_video` when specified | `auto` or integer `4..30` | Follow the media mode; frame inputs require `auto` |
| Video editing | `edit_video` required | `auto` only | Omit or `auto` |
| Video extension | `extend_video` required | `auto` or integer `4..30` | Omit or `auto` |

Do not rely on prompt keywords to select editing or extension. Those requests must carry an explicit `operation`.

## Request Examples

### First-And-Last-Frame Video

```json
{
  "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

```json
{
  "model": "seedance2.5",
  "operation": "reference_to_video",
  "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"
    }
  ]
}
```

### Video Editing

```json
{
  "model": "seedance2.5",
  "prompt": "Replace the sky and preserve the subject",
  "video": "https://example.com/source.mp4",
  "operation": "edit_video",
  "resolution": "720p",
  "duration": "auto",
  "aspect_ratio": "auto"
}
```

### Video Extension

```json
{
  "model": "seedance2.5",
  "prompt": "Continue the camera movement into the illuminated square.",
  "video": "asset://mat_xxxxxxxxxxxxx",
  "operation": "extend_video",
  "resolution": "720p",
  "duration": 8,
  "aspect_ratio": "auto",
  "output_format": "mov"
}
```

### Web Search

```json
{
  "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.

## Create Response And Task Lifecycle

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

Store the public `id` or `task_id`. Poll `GET /v1/videos/{task_id}` every 2 to 5 seconds and stop when `status` is `completed` or `failed`. A completed task returns a public result URL; you can also retrieve the file through the authenticated `/v1/videos/{task_id}/content` endpoint.

See [Video Generation Overview](/models/video/overview#video-task-lifecycle) for public status fields, completed and failed response examples, and download handling. Client applications should use only the public task ID, status, result, usage, and error fields documented by UniAll.

## Billing Notes

Seedance 2.5 is settled by valid completion Token usage after the task finishes. Any pre-deduction is an estimate; use the completed task's effective `usage` and settlement record as the final amount.

| Input type | Reference base rate per 1 million completion Tokens |
| --- | --- |
| Request without video input | About `$10.294117647` (`70 CNY / 6.8`) |
| Request containing video input | About `$6.176470588` (`42 CNY / 6.8`) |

- `480p` and `720p` use the same Token unit rate.
- These values are completion-Token reference rates, not fixed per-second prices.
- Account and pricing-group rules can change the final user price. Use the current UniAll pricing page and task settlement record as the authoritative source.

## Common Errors

| Error | Cause | Fix |
| --- | --- | --- |
| Missing parameter | `resolution` or `duration` is absent | Send both required fields. |
| Invalid resolution | `1080p`, `4k`, or another unsupported value was sent | Use `480p` or `720p`. |
| Conflicting aliases | `resolution` and `size` contain different values | Remove `size` or make the values identical. |
| Invalid edit duration | `edit_video` uses an integer duration | Set `duration` to `auto`. |
| 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 | `draft`, `frames`, `camera_fixed`, or `service_tier: "flex"` was sent | Remove the unsupported field. |

## Related Pages

- [Video Generation Overview](/models/video/overview)
- [Seedance 2.0](/models/video/seedance-2-0)
- [Seedance Material Library](/models/video/seedance-2-0/material-library)
- [Models](/models)
