> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixroute.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Doubao Seedance 2.5

> Doubao Seedance 2.5 video generation through MixRoute, with text-to-video and image-to-video examples.

Doubao Seedance 2.5 is a ByteDance video model. Use the complete route ID `doubao-seedance-2-5-260628`; the version suffix is part of the ID.

Full field definitions: [Doubao API](/api-reference/endpoint/doubao).

## Model Parameters and Limits

| Setting | Value |
| - | - |
| `model` | `doubao-seedance-2-5-260628` |
| Input modes | Text, first-frame images, first/last-frame images, or multimodal references. |
| `metadata.content` | Required input array. Include a text item for text-only generation and keep it consistent with prompt. |
| `metadata.duration` | 4-30 / -1 seconds; -1 selects duration automatically. |
| `metadata.resolution` | `480p`, `720p`, `1080p`; default 720p. |
| `metadata.ratio` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `adaptive` |
| Audio | `metadata.generate_audio` defaults to true; false produces silent video. |
| Format | `metadata.output_format`: `mp4` (default), `mov` |
| Frame rate | 24 fps |

* Keep `model`, `prompt`, and `asset` at the root; every provider field belongs in `metadata`. Set `asset=true` for the media-input examples.
* Frame roles and `reference_*` roles are separate input modes; do not combine them.
* The default ratio is adaptive. First-frame, first/last-frame, editing, and extension modes require adaptive. Editing requires duration=-1 and a 4-30 second source video.
* Multimodal references allow up to 30 images, 10 videos, and 10 audio clips; audio-only references are supported.

## Examples

Set `MIXROUTE_API_KEY` and replace image/video/audio placeholders with accessible source media before calling.

### Text-to-Video

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/video/generations" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "doubao-seedance-2-5-260628",
  "prompt": "A ceramic mug slowly rotates on a white tabletop in soft daylight.",
  "asset": false,
  "metadata": {
    "content": [
      {
        "type": "text",
        "text": "A ceramic mug slowly rotates on a white tabletop in soft daylight."
      }
    ],
    "duration": 4,
    "resolution": "480p",
    "ratio": "1:1",
    "generate_audio": false,
    "watermark": false
  }
}'
```

### Python

```python theme={null}
import json
import os
import requests

payload = json.loads(r'''
{
  "model": "doubao-seedance-2-5-260628",
  "prompt": "A ceramic mug slowly rotates on a white tabletop in soft daylight.",
  "asset": false,
  "metadata": {
    "content": [
      {
        "type": "text",
        "text": "A ceramic mug slowly rotates on a white tabletop in soft daylight."
      }
    ],
    "duration": 4,
    "resolution": "480p",
    "ratio": "1:1",
    "generate_audio": false,
    "watermark": false
  }
}
''')
response = requests.post(
    "https://api.mixroute.ai/v1/video/generations",
    headers={"Authorization": "Bearer " + os.environ["MIXROUTE_API_KEY"]},
    json=payload,
    timeout=60,
)
response.raise_for_status()
result = response.json()
if result.get("code") not in (None, 0, 200, "0", "200", "success"):
    raise RuntimeError(result.get("message") or result)
print(result)
```

### First-Frame Image

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/video/generations" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "doubao-seedance-2-5-260628",
  "prompt": "A ceramic mug slowly rotates on a white tabletop in soft daylight.",
  "asset": true,
  "metadata": {
    "content": [
      {
        "type": "text",
        "text": "A ceramic mug slowly rotates on a white tabletop in soft daylight."
      },
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/first-frame.png"
        },
        "role": "first_frame"
      }
    ],
    "duration": 4,
    "resolution": "480p",
    "ratio": "adaptive",
    "generate_audio": false,
    "watermark": false
  }
}'
```

## Task Result

Retain the submitted MixRoute task ID and use [Query Video Task](/api-reference/endpoint/query-video-task). Read the video URL only after a successful terminal status; submission does not mean generation is complete.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.