# Seedance 2.5 (https://wanapi.app/ru/docs/seedance-2-5)





Seedance 2.5 поддерживает текст, первый и последний кадры, референсы изображений, видео и аудио; разрешения: 480p, 720p, 1080p. Генерируйте до 30 секунд на запрос. [Описание модели и Playground](/ru/models/seedance-2-5).

## Подключение к Wan API [#подключение-к-wan-api]

Используйте `https://api.wanapi.app` как базовый URL API. Создайте ключ в [настройках API](/ru/settings/apikeys): один ключ подходит для всех моделей. Передавайте его как `Authorization: Bearer YOUR_API_KEY`. Храните ключи на сервере. Playground использует вашу сессию сайта и тот же баланс аккаунта; вставлять ключ в браузер не требуется.

Для доступа нужен активный аккаунт с достаточным балансом. `GET /v1/models` возвращает модели, доступные вашему ключу. Модели Seedance используют `POST /v1/videos`; выберите модель в теле JSON.

| Параметр             | Seedance 2.5                                                                       |
| -------------------- | ---------------------------------------------------------------------------------- |
| Идентификатор модели | `bytedance/seedance-2.5`                                                           |
| `resolution`         | `480p`, `720p`, `1080p`; по умолчанию: `720p`.                                     |
| `duration`           | 4–30 секунд видео или `-1` для автоматического выбора; по умолчанию: `-1`.         |
| `aspectRatio`        | `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`; по умолчанию: `adaptive`. |
| `generateAudio`      | `true` по умолчанию. `false` не снижает тариф за токены.                           |
| Результат            | Одно видео на запрос, 24 fps.                                                      |

Раздел [поля запроса](#поля-запроса) описывает все 14 полей верхнего уровня. Используйте приведённые имена полей, включая `aspectRatio` и `generateAudio`.

## Отправка задачи Seedance 2.5 [#отправка-задачи-seedance-25]

Это запрос генерации четырёхсекундного видео из текста в 720p. Задайте ваш ключ в `WAN_API_KEY` на сервере. Отправьте запрос один раз и сохраните полученный `id`.

```bash
curl https://api.wanapi.app/v1/videos \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "720p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true
}'
```

## Проверка задачи Seedance 2.5 [#проверка-задачи-seedance-25]

Сохраните полученный `id` как `TASK_ID`, затем проверяйте статус с тем же ключом. Отправка возвращает подтверждение задачи; видео доступно после завершения. Начните с опроса каждые пять секунд; см. [статусы задач и скачивание](#проверка-статуса-и-скачивание-видео).

```bash
curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $WAN_API_KEY"
```

## Цены Seedance 2.5 [#цены-seedance-25]

Тарифы указаны в USD за один миллион видеотокенов. Итоговая стоимость зависит от входных и выходных видеотокенов. На расход влияют разрешение, длительность и референсные видео; используйте тариф для запросов с референсным видео или без него. Отдельного тарифа для аудио нет.

<SeedanceModelPricing model="findSeedanceModel('seedance-2-5')" />

[Цены и оценки Seedance 2.5](/ru/models/seedance-2-5#pricing). Проверьте оценку в [Playground](/ru/models/seedance-2-5#playground) перед отправкой.

## Поля запроса [#поля-запроса]

Передайте объект JSON. Для новой сцены обязательны `model` и непустой промпт либо хотя бы один медиафайл; остальные поля необязательны. Для финального рендера передайте только `model`, `draftTaskId` и `resolution: "1080p"` (необязательно `n: 1` и параметры финального рендера в `providerOptions.bytedance`). Неизвестные поля отклоняются.

| Поле              | Тип                | Условия                                                                                                                                                                                                                                         |
| ----------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string             | Обязательно: `bytedance/seedance-2.5`.                                                                                                                                                                                                          |
| `draftTaskId`     | string             | Публичный идентификатор вашего завершённого черновика Seedance 2.5. Для финального рендера передайте только `model`, `draftTaskId` и `resolution: "1080p"` (необязательно `n: 1` и параметры финального рендера в `providerOptions.bytedance`). |
| `prompt`          | string             | Текстовые инструкции: до 20 000 символов в этом сервисе. Для новой сцены требуется промпт или медиафайл; при использовании `draftTaskId` не указывайте это поле.                                                                                |
| `image`           | URL или объект URL | URL изображения первого кадра либо объект с `type: "url"`, `url` и необязательным `mediaType`. Используйте только одно из полей: `image` или `frameImages`.                                                                                     |
| `frameImages`     | array              | Один `first_frame` и необязательный `last_frame`. Каждая запись содержит `frameType` и `image`; см. пример кадров ниже.                                                                                                                         |
| `inputReferences` | array              | До 30 изображений и 10 видео. Каждая запись содержит `type: "url"`, `url` и `mediaType`. Также принимается URL в форме `data`/`mediaType`.                                                                                                      |
| `aspectRatio`     | string             | `adaptive` (по умолчанию), `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`. Для режимов первого кадра требуется adaptive.                                                                                                                           |
| `resolution`      | string             | `480p`, `720p`, `1080p`. По умолчанию: `720p`. Также принимает `854x480`, `1280x720`, `1920x1080` как уровни разрешения; используйте `aspectRatio` для выбора соотношения сторон.                                                               |
| `duration`        | integer            | 4–30 секунд видео или `-1` для автоматического выбора. По умолчанию: `-1`.                                                                                                                                                                      |
| `fps`             | integer            | Фиксированное значение `24`; не указывайте или передайте `24`.                                                                                                                                                                                  |
| `generateAudio`   | boolean            | Генерация аудио. По умолчанию: `true`; отключение не меняет тариф за токены.                                                                                                                                                                    |
| `n`               | integer            | Фиксированное значение `1`; одно видео на запрос.                                                                                                                                                                                               |
| `providerOptions` | object             | Необязательный объект `bytedance` с нативными параметрами из раздела [параметры провайдера](#параметры-провайдера). Неизвестные параметры отклоняются.                                                                                          |

### Параметры провайдера [#параметры-провайдера]

Поместите эти нативные параметры в `providerOptions.bytedance`. Для пропущенных параметров используются указанные значения по умолчанию. Финальный рендер из `draftTaskId` принимает только `output_format`, `watermark`, `return_last_frame`, `execution_expires_after`, `priority`, `safety_identifier`, `service_tier` и совпадающий `content_filter`.

| Параметр                   | Тип       | По умолчанию | Условия                                                                                                                                                       |
| -------------------------- | --------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `referenceAudio`           | string\[] | —            | До 10 URL аудио HTTP(S) для референсов.                                                                                                                       |
| `draft`                    | boolean   | `false`      | `true` создаёт черновик 480p и требует `resolution: "480p"`.                                                                                                  |
| `output_format`            | string    | `mp4`        | `mp4` или `mov`.                                                                                                                                              |
| `omni_reference_task_type` | string    | `auto`       | `auto`, `reference`, `edit` или `extend`. Для `edit` и `extend` требуются референсное видео и `aspectRatio: "adaptive"`; для `edit` требуется `duration: -1`. |
| `content_filter`           | boolean   | `true`       | `false` отключает фильтрацию содержимого для этого запроса. Цена не меняется. Финальный рендер наследует значение черновика.                                  |
| `watermark`                | boolean   | `false`      | Добавить водяной знак.                                                                                                                                        |
| `return_last_frame`        | boolean   | `false`      | Также вернуть последний кадр как изображение в `lastFrame`.                                                                                                   |
| `execution_expires_after`  | integer   | `172800`     | 3600–259200 секунд. Незавершённая за это время задача истекает и не оплачивается.                                                                             |
| `priority`                 | integer   | `0`          | 0–9.                                                                                                                                                          |
| `safety_identifier`        | string    | —            | 1–64 байта для идентификации вашего конечного пользователя; можно использовать хеш.                                                                           |
| `service_tier`             | string    | `default`    | Только `default`.                                                                                                                                             |

### Сочетания входных данных и ограничения медиа [#сочетания-входных-данных-и-ограничения-медиа]

* Используйте `image` для первого кадра или `frameImages` для первого и необязательного последнего кадра. Последний кадр без первого и повторяющиеся типы кадров отклоняются.

* Кадры нельзя сочетать с `inputReferences` или `providerOptions.bytedance.referenceAudio`.

* Режим референсов принимает до 30 изображений, 10 видео и 10 аудиоклипов, всего не более 50 референсов.

* Для кадров требуется `aspectRatio: "adaptive"`. Референсное аудио можно использовать без изображения или видео.

* Медиаданные должны быть общедоступными URL HTTP(S). Загрузка байтов и URL с учётными данными не принимаются.

* Изображения: JPEG, PNG, WebP, BMP, TIFF или GIF, HEIC или HEIF; менее 30 MB; каждая сторона 300–6000 пикселей; соотношение сторон 0.4–2.5.

* Видео: MP4 или MOV; не более 200 MB на файл; каждый клип 2–30 секунд, суммарно не более 30 секунд; 300–6000 пикселей на сторону, соотношение сторон 0.4–2.5, 24–60 fps.

* Аудио: MP3 или WAV; не более 15 MB на файл; каждый клип 2–30 секунд, суммарно не более 30 секунд.

* Размер, кодировка и длительность удалённых медиа проверяются при обработке; проверка URL сама по себе не гарантирует пригодность файла.

* Используйте `draftTaskId` для рендера завершённого черновика в 1080p. Нативные параметры задачи указываются в `providerOptions.bytedance`; другие нативные поля не принимаются.

## Примеры кадров и референсов [#примеры-кадров-и-референсов]

Отправьте эти тела запроса в тот же эндпоинт `POST /v1/videos`. Перед отправкой замените каждый URL `example.com` своим URL с прямым доступом к медиа. Сохраняйте доступность входных URL до завершения задачи.

### Первый и последний кадры [#первый-и-последний-кадры]

Для одного первого кадра используйте `image: "https://example.com/first-frame.jpg"` и не указывайте `frameImages`. Чтобы задать оба крайних кадра клипа, используйте:

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "The camera slowly moves from the opening scene to the closing scene.",
  "frameImages": [
    {
      "frameType": "first_frame",
      "image": "https://example.com/first-frame.jpg"
    },
    {
      "frameType": "last_frame",
      "image": "https://example.com/last-frame.jpg"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": 4
}
```

### Референсы изображений, видео и аудио [#референсы-изображений-видео-и-аудио]

Поместите изображения и видео в `inputReferences`, явно указав MIME-тип. URL аудио поместите в `providerOptions.bytedance.referenceAudio`. Не добавляйте кадры в этот запрос.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "Use the character from the image and the camera movement from the video.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/character.jpg",
      "mediaType": "image/jpeg"
    },
    {
      "type": "url",
      "url": "https://example.com/motion.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "providerOptions": {
    "bytedance": {
      "referenceAudio": [
        "https://example.com/sound.wav"
      ]
    }
  },
  "resolution": "720p",
  "duration": 4
}
```

### Редактирование или продление референсного видео [#редактирование-или-продление-референсного-видео]

Задайте `providerOptions.bytedance.omni_reference_task_type` как `edit` или `extend` и укажите хотя бы одно референсное видео. Для обоих режимов требуется `aspectRatio: "adaptive"`; для `edit` также требуется `duration: -1`.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "Replace the sky with a sunset. Keep the camera movement.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/source.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": -1,
  "providerOptions": {
    "bytedance": {
      "omni_reference_task_type": "edit"
    }
  }
}
```

### Предпросмотр черновика [#предпросмотр-черновика]

Используйте `providerOptions.bytedance.draft: true` с `resolution: "480p"` для создания черновика. Для черновика действует обычный тариф 480p за токены. После завершения используйте его публичный идентификатор задачи для отдельного финального рендера в 1080p.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "480p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true,
  "providerOptions": {
    "bytedance": {
      "draft": true
    }
  }
}
```

### Рендер черновика в 1080p [#рендер-черновика-в-1080p]

Отправьте это тело в `POST /v1/videos`, указав публичный идентификатор `task_…` завершённого черновика. Черновик должен принадлежать вашему аккаунту, использовать те же модель и канал и быть создан менее 7 дней назад. Этот нативный срок жизни черновика не связан со сроком хранения видео.

```json
{
  "model": "bytedance/seedance-2.5",
  "draftTaskId": "task_YOUR_COMPLETED_DRAFT",
  "resolution": "1080p"
}
```

Не передавайте повторно `prompt`, медиа, `duration`, `aspectRatio`, `generateAudio`, `fps`, `draft`, `referenceAudio` или `omni_reference_task_type`. Эти настройки берутся из черновика. В `providerOptions.bytedance` можно задать `output_format`, `watermark`, `return_last_frame`, `execution_expires_after`, `priority`, `safety_identifier` и `service_tier`. Значение `content_filter` наследуется из черновика; если вы передаёте его, оно должно совпадать. API возвращает **новый идентификатор задачи**; опрашивайте `GET /v1/videos/{new_task_id}` для получения финального видео и его URL Bunny.

Финальный рендер оплачивается отдельно по текущему тарифу 1080p и категории референсного видео исходного черновика, с учётом фактических токенов результата. Опрос не повторяет генерацию и не вызывает повторное списание. Если результат отправки неизвестен, не отправляйте запрос повторно автоматически.

## Вывод MOV [#вывод-mov]

Задайте `providerOptions.bytedance.output_format` как `mov` для MOV или `mp4` для MP4 (по умолчанию). Этот параметр работает для новой сцены и финального рендера из черновика.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "A red ball on a plain table. Static camera.",
  "resolution": "480p",
  "duration": 4,
  "providerOptions": {
    "bytedance": {
      "output_format": "mov"
    }
  }
}
```

После завершения `videos[0].url` содержит подписанный URL Bunny исходного файла `.mov`, а `videos[0].mediaType` — `video/quicktime`. MOV не преобразуется в MP4. Воспроизведение в браузере зависит от поддержки кодека; скачайте файл, если браузер не может его воспроизвести. Файлы загружаются в Bunny; в базе данных хранятся только ссылки на файлы и метаданные задач. Медиа в Base64 не принимаются.

## Проверка статуса и скачивание видео [#проверка-статуса-и-скачивание-видео]

Принятая задача возвращает подобный объект. Идентификаторы и временные метки приведены для примера:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "queued",
  "progress": 0,
  "created_at": 1792022400
}
```

Опрашивайте `GET /v1/videos/{task_id}` с вашим ключом API. Ответ содержит тот же публичный идентификатор задачи и модель. Определяйте момент окончания опроса по `status`; `progress` не является оценкой оставшегося времени.

| Статус        | Значение                       | Следующий шаг                               |
| ------------- | ------------------------------ | ------------------------------------------- |
| `queued`      | Задача принята.                | Продолжайте проверять статус.               |
| `in_progress` | Идёт генерация.                | Продолжайте проверять статус.               |
| `completed`   | Видео готово.                  | Прочитайте `videos[0].url` и скачайте файл. |
| `failed`      | Генерация завершилась ошибкой. | Прекратите опрос и проверьте `error`.       |

Ответ завершённой задачи содержит `videos` — массив объектов с `url` и `mediaType`. Временные метки указаны в секундах Unix; `completed_at` появляется при регистрации завершения.

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "completed",
  "progress": 100,
  "created_at": 1792022400,
  "completed_at": 1792022460,
  "videos": [
    {
      "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
      "mediaType": "video/mp4"
    }
  ]
}
```

При `providerOptions.bytedance.return_last_frame: true` завершённая задача также содержит `lastFrame` — объект с `url` и `mediaType` (`image/jpeg`).

Если полученный URL является относительным путём, дополните его относительно `https://api.wanapi.app` и авторизуйтесь вашим ключом API. Для примера выше:

```bash
curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -o video.mp4
```

Если возвращён подписанный HTTPS URL медиа, используйте его напрямую, не передавая ключ API этому хосту. Срок действия URL может истечь. Сохраняйте нужные видео в собственном хранилище. Опрос и скачивание готового результата не создают новую генерацию.

Неудачная задача содержит объект `error` с `code` и `message`, например:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Video generation failed"
  }
}
```

## Оплата и обработка ошибок [#оплата-и-обработка-ошибок]

Итоговое списание определяется фактическим расходом видеотокенов и текущим тарифом модели. Оценка Playground — максимальная оценка, а не фиксированная цена. Более длинные клипы и высокое разрешение могут увеличить расход токенов. Неудачные запросы не оплачиваются.

* **Неверные параметры:** исправьте поля или сочетание входных данных перед повторной отправкой. Проверьте форматы и ограничения медиа, а также синтаксис URL.
* **Авторизация или доступ к модели:** используйте действительный ключ API.
* **Недостаточный баланс:** пополните счёт перед новым платным запросом. Лимит ключа не пополняет баланс аккаунта.
* **Временная ошибка опроса:** повторите GET с увеличивающимися интервалами и предельным временем ожидания. Ошибка запроса статуса не означает ошибку генерации.
* **Тайм-аут отправки или отсутствие идентификатора задачи:** результат может быть неизвестен. Не повторяйте POST автоматически: это может создать вторую платную задачу.
* **Ошибка скачивания:** повторите скачивание существующего результата перед новой генерацией.

Сохраните идентификатор задачи и обратитесь в [поддержку](/ru/contact), если нужно выяснить результат отправки.

[Скачать схему OpenAPI для Seedance 2.5](https://wanapi.app/models/seedance-2-5/openapi.json).
