# Seedance 2.5

> ByteDance Seedance 2.5 video generation with 4-30 second output, first and last frame control, up to 50 image, video, and audio references, optional synchronized audio, and 480p, 720p, or 1080p delivery.

## Overview

- Submit: `https://api.poyo.ai/api/generate/submit`
- Status: `https://api.poyo.ai/api/generate/status/{task_id}`
- Page: https://poyo.ai/models/seedance-2-5
- Model page ID: `seedance-2-5`
- API model ID: `seedance-2.5`
- Category: Video
- Auth: `Authorization: Bearer $POYO_API_KEY`
- Create a key at https://poyo.ai/dashboard/api-key

This model uses PoYo's unified async API. POST the JSON body below, then poll status with the returned `task_id` or receive a webhook on `callback_url`. Failed tasks are not charged.

## Pricing

- 480p - with video input: 17 credits ($0.085) per billed second
- 480p - no video input: 28 credits ($0.140) per second
- 720p - with video input: 38 credits ($0.190) per billed second
- 720p - no video input: 63 credits ($0.315) per second
- 1080p - with video input: 68.5 credits ($0.343) per billed second
- 1080p - no video input: 114 credits ($0.570) per second

For more details, see https://poyo.ai/models/seedance-2-5.

## API Information

The request envelope is always `{ model, input, callback_url? }`. Input fields below are nested under `input`.

### Request envelope

- `model` (`ModelEnum`, required):
  - Options: `"seedance-2.5"`
- `callback_url` (`string`, optional):

### Input Schema

The API accepts the following `input` parameters:

- `prompt` (`string`, required):
  - Length: 1 to unbounded characters
- `image_urls` (`list`, optional):
  - Array of string
  - Length: 0 to 2
- `reference_image_urls` (`list`, optional):
  - Array of string
  - Length: 0 to 30
- `reference_video_urls` (`list`, optional):
  - Array of string
  - Length: 0 to 10
- `reference_audio_urls` (`list`, optional):
  - Array of string
  - Length: 0 to 10
- `resolution` (`ResolutionEnum`, required):
  - Options: `"480p"`, `"720p"`, `"1080p"`
- `duration` (`integer`, required):
  - Range: `4` to `30`
- `aspect_ratio` (`AspectRatioEnum`, optional):
  - Options: `"auto"`, `"21:9"`, `"16:9"`, `"4:3"`, `"1:1"`, `"3:4"`, `"9:16"`
- `generate_audio` (`boolean`, optional):

Required Parameters Example:

```json
{
  "model": "seedance-2.5",
  "input": {
    "prompt": "A cinematic aerial view of a city at night",
    "duration": 5,
    "resolution": "1080p"
  }
}
```

Full Example:

```json
{
  "model": "seedance-2.5",
  "input": {
    "prompt": "A cinematic aerial view of a city at night",
    "duration": 5,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}
```

first-last-frame:

```json
{
  "model": "seedance-2.5",
  "input": {
    "prompt": "Transition smoothly between the two frames",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ],
    "duration": 5,
    "resolution": "720p"
  }
}
```

reference-to-video:

```json
{
  "model": "seedance-2.5",
  "input": {
    "prompt": "Use @Video1 for motion and @Audio1 for rhythm",
    "reference_video_urls": [
      "https://example.com/reference.mp4"
    ],
    "reference_audio_urls": [
      "https://example.com/reference.wav"
    ],
    "duration": 5,
    "resolution": "480p"
  }
}
```

### Output Schema

Submit returns a `task_id`. Poll `GET /api/generate/status/{task_id}` until `status` is `finished` or `failed`. Completed media is in `data.files`.

Example Response:

```json
{
  "code": 200,
  "data": {
    "task_id": "task_example",
    "status": "finished",
    "files": [
      {
        "file_url": "https://storage.poyo.ai/models/seedance-2-5/examples/default-multiscene-story-output.mp4",
        "file_type": "video"
      }
    ]
  }
}
```

## Usage Examples

### cURL

```bash
curl --request POST \
  --url https://api.poyo.ai/api/generate/submit \
  --header "Authorization: Bearer $POYO_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"model":"seedance-2.5","input":{"prompt":"A cinematic aerial view of a city at night","duration":5,"resolution":"1080p","aspect_ratio":"16:9","generate_audio":true}}'
```

### Python

```python
import json
import os
import time
import requests

API = "https://api.poyo.ai"
headers = {
    "Authorization": f"Bearer {os.environ['POYO_API_KEY']}",
    "Content-Type": "application/json",
}
payload = json.loads("{\n  \"model\": \"seedance-2.5\",\n  \"input\": {\n    \"prompt\": \"A cinematic aerial view of a city at night\",\n    \"duration\": 5,\n    \"resolution\": \"1080p\",\n    \"aspect_ratio\": \"16:9\",\n    \"generate_audio\": true\n  }\n}")

submit = requests.post(f"{API}/api/generate/submit", headers=headers, json=payload)
submit.raise_for_status()
task_id = submit.json()["data"]["task_id"]

while True:
    status = requests.get(f"{API}/api/generate/status/{task_id}", headers=headers)
    status.raise_for_status()
    data = status.json()["data"]
    if data["status"] in ("finished", "failed"):
        print(data)
        break
    time.sleep(2)
```

### JavaScript

```javascript
const headers = {
  Authorization: `Bearer ${process.env.POYO_API_KEY}`,
  "Content-Type": "application/json",
};

const submit = await fetch("https://api.poyo.ai/api/generate/submit", {
  method: "POST",
  headers,
  body: JSON.stringify({
  "model": "seedance-2.5",
  "input": {
    "prompt": "A cinematic aerial view of a city at night",
    "duration": 5,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}),
});

const submitted = await submit.json();
const taskId = submitted.data.task_id;

while (true) {
  const statusResponse = await fetch(`https://api.poyo.ai/api/generate/status/${taskId}`, { headers });
  const status = await statusResponse.json();
  if (["finished", "failed"].includes(status.data.status)) {
    console.log(status.data);
    break;
  }
  await new Promise((resolve) => setTimeout(resolve, 2000));
}
```

## Additional Resources

### Documentation

- [Model Playground](https://poyo.ai/models/seedance-2-5)
- [API Documentation](https://docs.poyo.ai/api-manual/video-series/seedance-2.5)
- [API Documentation (Markdown)](https://docs.poyo.ai/api-manual/video-series/seedance-2.5.md)
- [Task status](https://docs.poyo.ai/api-manual/task-management/query-task-status)
- [Webhooks](https://docs.poyo.ai/api-manual/task-management/webhooks)

### Other agent-readable surfaces

- [Platform overview](https://poyo.ai/llms.txt)
- [Documentation index](https://docs.poyo.ai/llms.txt)
- [Full documentation text](https://docs.poyo.ai/llms-full.txt)
- Any other model: `https://poyo.ai/models/<model-id>/llms.txt`
