# Seedance 2.0 Mini API

> Видео Seedance 2.0 Mini от ByteDance со звуком: по описанию, по первому и последнему кадру или по референсам, до 15 секунд. Самая дешёвая версия Seedance, качество 480p или 720p. Референсы: фото, видео и аудио. Своё видео можно отредактировать описанием, а на Канале 2 и продлить вперёд или назад. Два канала: обычный и, как правило, подешевле.

Разработчик: ByteDance
Ключ модели в API: `seedance`

## Подключение в три шага

1. [Получите ключ](https://api.cyhub.ai/docs/connection.md?lang=ru): Ключ создаётся в кабинете после подтверждения почты. Один ключ открывает все модели.
2. [Узнайте цену](https://api.cyhub.ai/docs/generations.md?lang=ru): POST /v1/price считает стоимость запуска заранее, деньги при этом не списываются.
3. [Запустите задачу и заберите результат](https://api.cyhub.ai/docs/tasks.md?lang=ru): POST /v1/tasks ставит задачу, GET /v1/tasks/{id} показывает её статус и файлы.

## Готовый код

Замените YOUR_API_KEY своим ключом. Код ставит задачу и ждёт результата. В cURL второй запрос повторяйте, подставив вместо TASK_ID поле id из ответа первого, пока status не станет succeeded.

```bash
curl -X POST "https://api.cyhub.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance",
  "settings": {
    "mode": "text_to_video",
    "prompt": "Кот в очках играет на баяне на летней веранде, камера медленно наезжает",
    "model": "seedance_2_mini",
    "quality": "720p",
    "duration": 8,
    "aspect_ratio": "16:9"
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```python
import time

import requests

API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

body = {
    "model": "seedance",
    "settings": {
        "mode": "text_to_video",
        "prompt": "Кот в очках играет на баяне на летней веранде, камера медленно наезжает",
        "model": "seedance_2_mini",
        "quality": "720p",
        "duration": 8,
        "aspect_ratio": "16:9",
    },
}

response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
    time.sleep(5)
    task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])
```

```javascript
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "seedance",
  "settings": {
    "mode": "text_to_video",
    "prompt": "Кот в очках играет на баяне на летней веранде, камера медленно наезжает",
    "model": "seedance_2_mini",
    "quality": "720p",
    "duration": 8,
    "aspect_ratio": "16:9"
  }
};

async function main() {
  let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
  if (!response.ok) throw new Error(await response.text());
  let task = await response.json();
  while (task.status === "queued" || task.status === "running") {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
    task = await response.json();
  }
  console.log(task.status, task.result);
}

main();
```

[Получить ключ](https://cyhub.ai/cabinet/keys)

## Цена до запуска

Цены на 15.10.2026: от 20 ₽. Точную цену своих настроек покажет POST /v1/price.

Отправьте те же настройки в POST /v1/price: ответ покажет цену запуска, деньги при этом не списываются.

```bash
curl -X POST "https://api.cyhub.ai/v1/price" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance",
  "settings": {
    "mode": "text_to_video",
    "prompt": "Кот в очках играет на баяне на летней веранде, камера медленно наезжает",
    "model": "seedance_2_mini",
    "quality": "720p",
    "duration": 8,
    "aspect_ratio": "16:9"
  }
}'
```

- amount_minor: цена запуска в копейках (для рублей)
- currency: валюта кошелька
- available_minor: сколько сейчас доступно на балансе для новых задач

## <a id="text_to_video"></a>По описанию

> Видео только по тексту, файлы не передаются.

Значение поля mode: `text_to_video`

На этой странице версия Seedance 2.0 Mini: передайте model = seedance_2_mini. Без поля model запустится seedance_2_5.

Цена в этом режиме от 20 ₽.

### Параметры

Параметры модели передаются внутри settings. Пропущенные необязательные поля берут значение по умолчанию.

#### `prompt` (Обязательно)

Что происходит в видео: от 3 до 20 000 символов, можно на разных языках.

- Тип: Строка
- Минимум символов: 1
- Максимум символов: 20000

#### `model` (Необязательно)

Версия. 2.5 новее всех и делает ролики до 30 секунд, Pro 2.0 единственная с 4K, Fast 2.0 быстрая, Mini 2.0 самая дешёвая.

- Тип: Строка
- Допустимые значения: `seedance_2_mini` (Mini 2.0)
- По умолчанию: `"seedance_2_5"`

#### `quality` (Необязательно)

Качество видео, от него зависит цена. 1080p есть у 2.5 и Pro 2.0, 4K только у Pro 2.0. У черновика (draft) качество всегда 480p, это поле для него не действует.

- Тип: Строка
- Допустимые значения: `480p`, `720p`
- По умолчанию: `"720p"`

#### `duration` (Необязательно)

Длина видео в секундах: от 4 до 30 у версии 2.5, до 15 у семейства 2.0. Цена за каждую секунду.

- Тип: Целое число
- Минимум: 4
- Максимум: 30
- По умолчанию: `5`

#### `generate_audio` (Необязательно)

Сгенерировать звук вместе с видео.

- Тип: Да/нет
- По умолчанию: `true`

#### `channel` (Необязательно)

Через какой канал пойдёт генерация: модель та же, отличаются цена и проверки. Канал 1 обычный и принимает фото людей. Канал 2 обычно дешевле, но отклоняет фотографии реальных людей и запрещённые сюжеты, и онлайн-поиска у него нет. С видео на входе у Канала 2 есть нижний порог цены, растущий с длиной ролика, и с коротким видео он может выйти дороже. Отказ канала не оплачивается.

- Тип: Строка
- Допустимые значения: `channel_1` (Канал 1), `channel_2` (Канал 2)
- По умолчанию: `"channel_1"`

#### `draft` (Необязательно)

Черновик: недорогой ролик в 480p, чтобы до дорогого качества проверить сцену, движение и звук. Стоит как обычный ролик 480p, поле quality для него не действует. Есть только у версии 2.5 на Канале 2: с другой версией или каналом задача не принимается. Если черновик понравился, его можно один раз пересобрать в 1080p режимом upscale_draft в течение 7 дней после создания: сцена, движение и звук останутся теми же, а пересборка стоит как обычный ролик 1080p.

- Тип: Да/нет
- По умолчанию: `false`

#### `aspect_ratio` (Необязательно)

Пропорции видео. adaptive есть только у версии 2.5: пропорции подбирает сама модель по описанию.

- Тип: Строка
- Допустимые значения: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`
- По умолчанию: `"16:9"`

#### `web_search` (Необязательно)

Онлайн-поиск: модель подтянет свежие сведения из интернета. Только на Канале 1.

- Тип: Да/нет
- По умолчанию: `false`

Параметры, которых нет в списке, не принимаются: ответ 422 unknown_setting.

> Эти настройки API задаёт сам, передавать их не нужно: `files_as_is` = `true`

### Пример запроса

Отправьте этот JSON в POST /v1/tasks с ключом API. Чтобы узнать цену заранее, тот же JSON можно отправить в POST /v1/price.

Видео по описанию

```json
{
  "model": "seedance",
  "settings": {
    "mode": "text_to_video",
    "prompt": "Кот в очках играет на баяне на летней веранде, камера медленно наезжает",
    "model": "seedance_2_mini",
    "quality": "720p",
    "duration": 8,
    "aspect_ratio": "16:9"
  }
}
```

Цена считается при приёме задачи, валюта `RUB`.

[Полный пример запуска](https://api.cyhub.ai/docs/generations.md?lang=ru)

### Результат

- Видео MP4.
- Генерация обычно занимает несколько минут, длинные ролики и высокое качество дольше.
- С draft: true приходит черновик в 480p. У такой задачи есть поле draft: до какого времени её можно пересобрать в 1080p, можно ли сейчас и готовый запрос для пересборки.

| Вид (kind) | Форматы | Сколько | Пояснение |
|---|---|---|---|
| `video` | mp4 | 1 |  |

Так выглядит готовая задача в ответе GET /v1/tasks/{id} (часть полей опущена). Подпись caption бывает у задачи или у отдельного файла и может быть пустой, имя файла задаёт модель.

```json
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Подпись к результату: модель и настройки",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[Как читать результат и скачивать файлы](https://api.cyhub.ai/docs/tasks.md?lang=ru#result)

## <a id="image_to_video"></a>По кадрам

> Первый кадр или первый и последний: модель оживляет их по описанию.

Значение поля mode: `image_to_video`

На этой странице версия Seedance 2.0 Mini: передайте model = seedance_2_mini. Без поля model запустится seedance_2_5.

Цена в этом режиме от 21 ₽.

### Параметры

Параметры модели передаются внутри settings. Пропущенные необязательные поля берут значение по умолчанию.

#### `prompt` (Обязательно)

Что происходит в видео: от 3 до 20 000 символов, можно на разных языках.

- Тип: Строка
- Минимум символов: 1
- Максимум символов: 20000

#### `model` (Необязательно)

Версия. 2.5 новее всех и делает ролики до 30 секунд, Pro 2.0 единственная с 4K, Fast 2.0 быстрая, Mini 2.0 самая дешёвая.

- Тип: Строка
- Допустимые значения: `seedance_2_mini` (Mini 2.0)
- По умолчанию: `"seedance_2_5"`

#### `quality` (Необязательно)

Качество видео, от него зависит цена. 1080p есть у 2.5 и Pro 2.0, 4K только у Pro 2.0. У черновика (draft) качество всегда 480p, это поле для него не действует.

- Тип: Строка
- Допустимые значения: `480p`, `720p`
- По умолчанию: `"720p"`

#### `duration` (Необязательно)

Длина видео в секундах: от 4 до 30 у версии 2.5, до 15 у семейства 2.0. Цена за каждую секунду.

- Тип: Целое число
- Минимум: 4
- Максимум: 30
- По умолчанию: `5`

#### `generate_audio` (Необязательно)

Сгенерировать звук вместе с видео.

- Тип: Да/нет
- По умолчанию: `true`

#### `channel` (Необязательно)

Через какой канал пойдёт генерация: модель та же, отличаются цена и проверки. Канал 1 обычный и принимает фото людей. Канал 2 обычно дешевле, но отклоняет фотографии реальных людей и запрещённые сюжеты, и онлайн-поиска у него нет. С видео на входе у Канала 2 есть нижний порог цены, растущий с длиной ролика, и с коротким видео он может выйти дороже. Отказ канала не оплачивается.

- Тип: Строка
- Допустимые значения: `channel_1` (Канал 1), `channel_2` (Канал 2)
- По умолчанию: `"channel_1"`

#### `draft` (Необязательно)

Черновик: недорогой ролик в 480p, чтобы до дорогого качества проверить сцену, движение и звук. Стоит как обычный ролик 480p, поле quality для него не действует. Есть только у версии 2.5 на Канале 2: с другой версией или каналом задача не принимается. Если черновик понравился, его можно один раз пересобрать в 1080p режимом upscale_draft в течение 7 дней после создания: сцена, движение и звук останутся теми же, а пересборка стоит как обычный ролик 1080p.

- Тип: Да/нет
- По умолчанию: `false`

#### `image_urls` (Обязательно)

Одна ссылка: первый кадр. Две ссылки: первый и последний кадры.

- Тип: Список (Строка, uri)
- Максимум элементов: 2

#### `aspect_ratio` (Необязательно)

Пропорции видео, работают только у семейства 2.0 на Канале 1. У версии 2.5 и на Канале 2 у любой версии размер ролика задаёт первый кадр, и выбранное значение не учитывается: у 2.5 выбор здесь один, adaptive.

- Тип: Строка
- Допустимые значения: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`
- По умолчанию: `"16:9"`

Параметры, которых нет в списке, не принимаются: ответ 422 unknown_setting.

> Эти настройки API задаёт сам, передавать их не нужно: `files_as_is` = `true`

### Входные данные

- Картинки передаются ссылками на JPEG, PNG, WEBP, BMP, TIFF, GIF до 30 МБ каждая, стороны от 300 до 6 000 пикселей.
- На Канале 2 размер ролика задаёт кадр у любой версии.

| Поле | Что принимает | Форматы | Файлов | Размер файла до |
|---|---|---|---|---|
| `image_urls` | Картинки | jpeg, jpg, png, webp, bmp, tiff, gif | 2 | 30 МБ |

[Как передать файлы](https://api.cyhub.ai/docs/files.md?lang=ru)

### Пример запроса

Отправьте этот JSON в POST /v1/tasks с ключом API. Чтобы узнать цену заранее, тот же JSON можно отправить в POST /v1/price.

Оживить кадр

```json
{
  "model": "seedance",
  "settings": {
    "mode": "image_to_video",
    "prompt": "Девушка поворачивается к камере и улыбается, волосы развеваются на ветру",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "duration": 5,
    "model": "seedance_2_mini"
  }
}
```

Цена считается при приёме задачи, валюта `RUB`.

[Полный пример запуска](https://api.cyhub.ai/docs/generations.md?lang=ru)

### Результат

- Видео MP4.
- Генерация обычно занимает несколько минут, длинные ролики и высокое качество дольше.
- С draft: true приходит черновик в 480p. У такой задачи есть поле draft: до какого времени её можно пересобрать в 1080p, можно ли сейчас и готовый запрос для пересборки.

| Вид (kind) | Форматы | Сколько | Пояснение |
|---|---|---|---|
| `video` | mp4 | 1 |  |

Так выглядит готовая задача в ответе GET /v1/tasks/{id} (часть полей опущена). Подпись caption бывает у задачи или у отдельного файла и может быть пустой, имя файла задаёт модель.

```json
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Подпись к результату: модель и настройки",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[Как читать результат и скачивать файлы](https://api.cyhub.ai/docs/tasks.md?lang=ru#result)

## <a id="multimodal"></a>По референсам

> Персонажи, стиль, движение и звук с ваших фото, видео и аудио в новом ролике. Нужно хотя бы одно фото или видео.

Значение поля mode: `multimodal`

На этой странице версия Seedance 2.0 Mini: передайте model = seedance_2_mini. Без поля model запустится seedance_2_5.

Цена в этом режиме от 20 ₽.

### Параметры

Параметры модели передаются внутри settings. Пропущенные необязательные поля берут значение по умолчанию.

#### `prompt` (Обязательно)

Что происходит в видео: от 3 до 20 000 символов, можно на разных языках.

- Тип: Строка
- Минимум символов: 1
- Максимум символов: 20000

#### `model` (Необязательно)

Версия. 2.5 новее всех и делает ролики до 30 секунд, Pro 2.0 единственная с 4K, Fast 2.0 быстрая, Mini 2.0 самая дешёвая.

- Тип: Строка
- Допустимые значения: `seedance_2_mini` (Mini 2.0)
- По умолчанию: `"seedance_2_5"`

#### `quality` (Необязательно)

Качество видео, от него зависит цена. 1080p есть у 2.5 и Pro 2.0, 4K только у Pro 2.0. У черновика (draft) качество всегда 480p, это поле для него не действует.

- Тип: Строка
- Допустимые значения: `480p`, `720p`
- По умолчанию: `"720p"`

#### `duration` (Необязательно)

Длина видео в секундах: от 4 до 30 у версии 2.5, до 15 у семейства 2.0. Цена за каждую секунду.

- Тип: Целое число
- Минимум: 4
- Максимум: 30
- По умолчанию: `5`

#### `generate_audio` (Необязательно)

Сгенерировать звук вместе с видео.

- Тип: Да/нет
- По умолчанию: `true`

#### `channel` (Необязательно)

Через какой канал пойдёт генерация: модель та же, отличаются цена и проверки. Канал 1 обычный и принимает фото людей. Канал 2 обычно дешевле, но отклоняет фотографии реальных людей и запрещённые сюжеты, и онлайн-поиска у него нет. С видео на входе у Канала 2 есть нижний порог цены, растущий с длиной ролика, и с коротким видео он может выйти дороже. Отказ канала не оплачивается.

- Тип: Строка
- Допустимые значения: `channel_1` (Канал 1), `channel_2` (Канал 2)
- По умолчанию: `"channel_1"`

#### `draft` (Необязательно)

Черновик: недорогой ролик в 480p, чтобы до дорогого качества проверить сцену, движение и звук. Стоит как обычный ролик 480p, поле quality для него не действует. Есть только у версии 2.5 на Канале 2: с другой версией или каналом задача не принимается. Если черновик понравился, его можно один раз пересобрать в 1080p режимом upscale_draft в течение 7 дней после создания: сцена, движение и звук останутся теми же, а пересборка стоит как обычный ролик 1080p.

- Тип: Да/нет
- По умолчанию: `false`

#### `aspect_ratio` (Необязательно)

Пропорции видео. adaptive есть только у версии 2.5: пропорции подбирает сама модель по описанию и референсам. На Канале 2 с видео-референсами так у любой версии, и выбранное значение не учитывается.

- Тип: Строка
- Допустимые значения: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`
- По умолчанию: `"16:9"`

#### `image_urls` (Необязательно)

Ссылки на фото-референсы: до 30 у версии 2.5, до 9 у семейства 2.0.

- Тип: Список (Строка, uri)
- Максимум элементов: 30

#### `video_urls` (Необязательно)

Ссылки на видео-референсы: до 10 у версии 2.5, до 3 у семейства 2.0. Каждое видео уходит в модель целиком, и его секунды добавляются к цене.

- Тип: Список (Строка, uri)
- Максимум элементов: 10

#### `audio_urls` (Необязательно)

Ссылки на аудио-референсы: до 10 у версии 2.5, до 3 у семейства 2.0. Аудио только вместе с фото или видео.

- Тип: Список (Строка, uri)
- Максимум элементов: 10

Параметры, которых нет в списке, не принимаются: ответ 422 unknown_setting.

> Эти настройки API задаёт сам, передавать их не нужно: `files_as_is` = `true`

### Входные данные

- Картинки передаются ссылками на JPEG, PNG, WEBP, BMP, TIFF, GIF до 30 МБ каждая, стороны от 300 до 6 000 пикселей.
- Видео передаются ссылками на MP4, MOV: у версии 2.5 до 200 МБ каждое и вместе не длиннее 30 секунд, у семейства 2.0 до 50 МБ и вместе не длиннее 15 секунд. Каждое от 2 секунд, от 24 до 60 кадров в секунду и не меньше 407 696 точек в кадре (например, 640×640 или 480×854).
- Аудио передаётся ссылками на WAV, MP3 до 15 МБ каждое: у версии 2.5 от 2 до 30 секунд и все вместе не длиннее 30, у семейства 2.0 от 2 до 15 секунд и все вместе не длиннее 15.
- У семейства 2.0 не больше 12 файлов всех видов вместе.
- Файлы уходят в модель как есть и целиком. К длине ролика в цене добавляются секунды всех видео-референсов, неполная секунда каждого видео считается целой. На Канале 2 цена с видео не ниже порога, который растёт с длиной ролика.
- Длину видео для цены мы узнаём, скачав его по ссылке, поэтому ссылка должна вести прямо на файл, без переадресации, и отдавать его быстро. Иначе цену не посчитать, и задача не принимается.
- В описании на файлы можно ссылаться по порядку ссылок каждого вида: @image1, @video1, @audio1 и так далее.
- На Канале 2 с видео-референсами пропорции подбирает сама модель у любой версии.
- Изменить или продлить само видео: режимы video_edit и video_extend. Здесь видео только образец, но у версии 2.5 на Канале 1 описание правки модель может принять за правку и отказать: тогда выберите video_edit.

| Поле | Что принимает | Форматы | Файлов | Размер файла до |
|---|---|---|---|---|
| `image_urls` | Картинки | jpeg, jpg, png, webp, bmp, tiff, gif | 30 | 30 МБ |
| `video_urls` | Видео | mp4, mov | 10 | 200 МБ |
| `audio_urls` | Аудио | wav, mp3 | 10 | 15 МБ |

[Как передать файлы](https://api.cyhub.ai/docs/files.md?lang=ru)

### Пример запроса

Отправьте этот JSON в POST /v1/tasks с ключом API. Чтобы узнать цену заранее, тот же JSON можно отправить в POST /v1/price.

Персонаж и движение камеры

```json
{
  "model": "seedance",
  "settings": {
    "mode": "multimodal",
    "prompt": "Девушка с @image1 идёт по ночному городу под дождём, камера движется как в @video1",
    "image_urls": [
      "https://example.com/girl.png"
    ],
    "video_urls": [
      "https://example.com/camera-move.mp4"
    ],
    "duration": 8,
    "model": "seedance_2_mini"
  }
}
```

Цена считается при приёме задачи, валюта `RUB`.

[Полный пример запуска](https://api.cyhub.ai/docs/generations.md?lang=ru)

### Результат

- Видео MP4.
- Генерация обычно занимает несколько минут, длинные ролики и высокое качество дольше.
- С draft: true приходит черновик в 480p. У такой задачи есть поле draft: до какого времени её можно пересобрать в 1080p, можно ли сейчас и готовый запрос для пересборки.

| Вид (kind) | Форматы | Сколько | Пояснение |
|---|---|---|---|
| `video` | mp4 | 1 |  |

Так выглядит готовая задача в ответе GET /v1/tasks/{id} (часть полей опущена). Подпись caption бывает у задачи или у отдельного файла и может быть пустой, имя файла задаёт модель.

```json
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Подпись к результату: модель и настройки",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[Как читать результат и скачивать файлы](https://api.cyhub.ai/docs/tasks.md?lang=ru#result)

## <a id="video_edit"></a>Правка видео

> Модель меняет ваше видео по описанию: заменить предмет или персонажа, фон, стиль. Остальное остаётся как было, длина и пропорции как у видео.

Значение поля mode: `video_edit`

На этой странице версия Seedance 2.0 Mini: передайте model = seedance_2_mini. Без поля model запустится seedance_2_5.

Цена в этом режиме от 25 ₽, с файлом на 4 с.

### Параметры

Параметры модели передаются внутри settings. Пропущенные необязательные поля берут значение по умолчанию.

#### `prompt` (Обязательно)

Что поменять в видео: от 3 до 20 000 символов, можно на разных языках. Остальное в видео останется как было.

- Тип: Строка
- Минимум символов: 1
- Максимум символов: 20000

#### `model` (Необязательно)

Версия. 2.5 новее всех и делает ролики до 30 секунд, Pro 2.0 единственная с 4K, Fast 2.0 быстрая, Mini 2.0 самая дешёвая.

- Тип: Строка
- Допустимые значения: `seedance_2_mini` (Mini 2.0)
- По умолчанию: `"seedance_2_5"`

#### `quality` (Необязательно)

Качество видео, от него зависит цена. 1080p есть у 2.5 и Pro 2.0, 4K только у Pro 2.0. У черновика (draft) качество всегда 480p, это поле для него не действует.

- Тип: Строка
- Допустимые значения: `480p`, `720p`
- По умолчанию: `"720p"`

#### `duration` (Необязательно)

Не действует: ролик выходит той же длины, что ваше видео.

- Тип: Целое число
- Минимум: 4
- Максимум: 30
- По умолчанию: `5`

#### `generate_audio` (Необязательно)

Сгенерировать звук вместе с видео.

- Тип: Да/нет
- По умолчанию: `true`

#### `channel` (Необязательно)

Через какой канал пойдёт генерация: модель та же, отличаются цена и проверки. Канал 1 обычный и принимает фото людей. Канал 2 обычно дешевле, но отклоняет фотографии реальных людей и запрещённые сюжеты, и онлайн-поиска у него нет. С видео на входе у Канала 2 есть нижний порог цены, растущий с длиной ролика, и с коротким видео он может выйти дороже. Отказ канала не оплачивается.

- Тип: Строка
- Допустимые значения: `channel_1` (Канал 1), `channel_2` (Канал 2)
- По умолчанию: `"channel_1"`

#### `draft` (Необязательно)

В правке и продлении видео черновика нет: оставьте false.

- Тип: Да/нет
- По умолчанию: `false`

#### `video_urls` (Обязательно)

Ссылка на видео, которое нужно изменить. От 4 до 30 секунд у версии 2.5, до 15 у семейства 2.0. В описании это @video1.

- Тип: Список (Строка, uri)
- Максимум элементов: 1

#### `image_urls` (Необязательно)

Ссылки на фото-референсы: до 30 у версии 2.5, до 9 у семейства 2.0.

- Тип: Список (Строка, uri)
- Максимум элементов: 30

#### `audio_urls` (Необязательно)

Ссылки на аудио-референсы: до 10 у версии 2.5, до 3 у семейства 2.0. Аудио только вместе с фото или видео.

- Тип: Список (Строка, uri)
- Максимум элементов: 10

Параметры, которых нет в списке, не принимаются: ответ 422 unknown_setting.

> Эти настройки API задаёт сам, передавать их не нужно: `files_as_is` = `true`

### Входные данные

- Видео передаётся ссылкой на MP4, MOV: у версии 2.5 до 200 МБ и не длиннее 30 секунд, у семейства 2.0 до 50 МБ и не длиннее 15 секунд. От 4 секунд, от 24 до 60 кадров в секунду и не меньше 407 696 точек в кадре (например, 640×640 или 480×854).
- Картинки передаются ссылками на JPEG, PNG, WEBP, BMP, TIFF, GIF до 30 МБ каждая, стороны от 300 до 6 000 пикселей.
- Аудио передаётся ссылками на WAV, MP3 до 15 МБ каждое: у версии 2.5 от 2 до 30 секунд и все вместе не длиннее 30, у семейства 2.0 от 2 до 15 секунд и все вместе не длиннее 15.
- У семейства 2.0 не больше 12 файлов всех видов вместе.
- Видео уходит в модель как есть и целиком: нужен другой кусок, обрежьте файл заранее. Цена считается по длине видео: столько же секунд у нового ролика, и ещё столько же добавляет само видео на входе, неполная секунда считается целой.
- Длину видео для цены мы узнаём, скачав его по ссылке, поэтому ссылка должна вести прямо на файл, без переадресации, и отдавать его быстро. Иначе цену не посчитать, и задача не принимается.
- В описании ваше видео это @video1, а фото и звук идут по порядку ссылок: @image1, @audio1 и так далее.

| Поле | Что принимает | Форматы | Файлов | Размер файла до |
|---|---|---|---|---|
| `video_urls` | Видео | mp4, mov | 1 | 200 МБ |
| `image_urls` | Картинки | jpeg, jpg, png, webp, bmp, tiff, gif | 30 | 30 МБ |
| `audio_urls` | Аудио | wav, mp3 | 10 | 15 МБ |

[Как передать файлы](https://api.cyhub.ai/docs/files.md?lang=ru)

### Пример запроса

Отправьте этот JSON в POST /v1/tasks с ключом API. Чтобы узнать цену заранее, тот же JSON можно отправить в POST /v1/price.

Заменить предмет в видео

```json
{
  "model": "seedance",
  "settings": {
    "mode": "video_edit",
    "prompt": "Замени красный кораблик в @video1 на жёлтую резиновую уточку",
    "video_urls": [
      "https://example.com/boat.mp4"
    ],
    "model": "seedance_2_mini"
  }
}
```

Цена считается при приёме задачи, валюта `RUB`.

[Полный пример запуска](https://api.cyhub.ai/docs/generations.md?lang=ru)

### Результат

- Видео MP4.
- Генерация обычно занимает несколько минут, длинные ролики и высокое качество дольше.
- Ролик той же длины и с теми же пропорциями, что ваше видео. У версии 2.5 длина точно как у видео, у семейства 2.0 до целой секунды вверх.

| Вид (kind) | Форматы | Сколько | Пояснение |
|---|---|---|---|
| `video` | mp4 | 1 |  |

Так выглядит готовая задача в ответе GET /v1/tasks/{id} (часть полей опущена). Подпись caption бывает у задачи или у отдельного файла и может быть пустой, имя файла задаёт модель.

```json
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Подпись к результату: модель и настройки",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[Как читать результат и скачивать файлы](https://api.cyhub.ai/docs/tasks.md?lang=ru#result)

## <a id="video_extend"></a>Продление видео

> Модель продолжает ваше видео новым куском заданной длины, после ролика или перед ним. Приходят два ролика: новый кусок и он же, склеенный с вашим видео.

Значение поля mode: `video_extend`

На этой странице версия Seedance 2.0 Mini: передайте model = seedance_2_mini. Без поля model запустится seedance_2_5.

Цена в этом режиме от 22 ₽, с файлом на 2 с.

### Параметры

Параметры модели передаются внутри settings. Пропущенные необязательные поля берут значение по умолчанию.

#### `prompt` (Обязательно)

Что происходит в новом куске: от 3 до 20 000 символов, можно на разных языках. Напишите и то, что видео нужно продлить, и в какую сторону.

- Тип: Строка
- Минимум символов: 1
- Максимум символов: 20000

#### `model` (Необязательно)

Версия. 2.5 новее всех и делает ролики до 30 секунд, Pro 2.0 единственная с 4K, Fast 2.0 быстрая, Mini 2.0 самая дешёвая.

- Тип: Строка
- Допустимые значения: `seedance_2_mini` (Mini 2.0)
- По умолчанию: `"seedance_2_5"`

#### `quality` (Необязательно)

Качество видео, от него зависит цена. 1080p есть у 2.5 и Pro 2.0, 4K только у Pro 2.0. У черновика (draft) качество всегда 480p, это поле для него не действует.

- Тип: Строка
- Допустимые значения: `480p`, `720p`
- По умолчанию: `"720p"`

#### `duration` (Необязательно)

Длина нового куска в секундах: от 4 до 30 у версии 2.5, до 15 у семейства 2.0. Цена за каждую секунду, и к ней добавляются секунды вашего видео.

- Тип: Целое число
- Минимум: 4
- Максимум: 30
- По умолчанию: `5`

#### `generate_audio` (Необязательно)

Сгенерировать звук вместе с видео.

- Тип: Да/нет
- По умолчанию: `true`

#### `channel` (Необязательно)

Через какой канал пойдёт генерация: модель та же, отличаются цена и проверки. Канал 1 обычный и принимает фото людей. Канал 2 обычно дешевле, но отклоняет фотографии реальных людей и запрещённые сюжеты, и онлайн-поиска у него нет. С видео на входе у Канала 2 есть нижний порог цены, растущий с длиной ролика, и с коротким видео он может выйти дороже. Отказ канала не оплачивается.

- Тип: Строка
- Допустимые значения: `channel_1` (Канал 1), `channel_2` (Канал 2)
- По умолчанию: `"channel_1"`

#### `draft` (Необязательно)

В правке и продлении видео черновика нет: оставьте false.

- Тип: Да/нет
- По умолчанию: `false`

#### `video_urls` (Обязательно)

Ссылка на видео, которое нужно продлить. От 2 до 30 секунд у версии 2.5, до 15 у семейства 2.0. В описании это @video1.

- Тип: Список (Строка, uri)
- Максимум элементов: 1

#### `extend_direction` (Необязательно)

С какой стороны приклеить новый кусок к вашему видео: forward после ролика, backward перед ним. Модель направление берёт из описания, поэтому напишите его и там.

- Тип: Строка
- Допустимые значения: `forward` (После ролика), `backward` (Перед роликом)
- По умолчанию: `"forward"`

#### `image_urls` (Необязательно)

Ссылки на фото-референсы: до 30 у версии 2.5, до 9 у семейства 2.0.

- Тип: Список (Строка, uri)
- Максимум элементов: 30

#### `audio_urls` (Необязательно)

Ссылки на аудио-референсы: до 10 у версии 2.5, до 3 у семейства 2.0. Аудио только вместе с фото или видео.

- Тип: Список (Строка, uri)
- Максимум элементов: 10

Параметры, которых нет в списке, не принимаются: ответ 422 unknown_setting.

> Эти настройки API задаёт сам, передавать их не нужно: `files_as_is` = `true`

### Входные данные

- Видео передаётся ссылкой на MP4, MOV: у версии 2.5 до 200 МБ и не длиннее 30 секунд, у семейства 2.0 до 50 МБ и не длиннее 15 секунд. От 2 секунд, от 24 до 60 кадров в секунду и не меньше 407 696 точек в кадре (например, 640×640 или 480×854).
- Картинки передаются ссылками на JPEG, PNG, WEBP, BMP, TIFF, GIF до 30 МБ каждая, стороны от 300 до 6 000 пикселей.
- Аудио передаётся ссылками на WAV, MP3 до 15 МБ каждое: у версии 2.5 от 2 до 30 секунд и все вместе не длиннее 30, у семейства 2.0 от 2 до 15 секунд и все вместе не длиннее 15.
- У семейства 2.0 не больше 12 файлов всех видов вместе.
- Направление модель понимает из описания: напишите, что видео нужно продлить, и что происходит дальше, а для продления назад «продли назад» и что было до начала. extend_direction задаёт только, с какой стороны мы приклеим новый кусок к вашему видео.
- На Канале 1 продлевать умеет только версия 2.5: для семейства 2.0 выберите Канал 2.
- Видео уходит в модель как есть и целиком: нужен другой кусок, обрежьте файл заранее. К длине нового куска в цене добавляются секунды вашего видео, неполная секунда считается целой. На Канале 2 цена не ниже порога, который растёт с длиной куска.
- Длину видео для цены мы узнаём, скачав его по ссылке, поэтому ссылка должна вести прямо на файл, без переадресации, и отдавать его быстро. Иначе цену не посчитать, и задача не принимается.
- В описании ваше видео это @video1, а фото и звук идут по порядку ссылок: @image1, @audio1 и так далее.

| Поле | Что принимает | Форматы | Файлов | Размер файла до |
|---|---|---|---|---|
| `video_urls` | Видео | mp4, mov | 1 | 200 МБ |
| `image_urls` | Картинки | jpeg, jpg, png, webp, bmp, tiff, gif | 30 | 30 МБ |
| `audio_urls` | Аудио | wav, mp3 | 10 | 15 МБ |

[Как передать файлы](https://api.cyhub.ai/docs/files.md?lang=ru)

### Пример запроса

Отправьте этот JSON в POST /v1/tasks с ключом API. Чтобы узнать цену заранее, тот же JSON можно отправить в POST /v1/price.

Что было дальше

```json
{
  "model": "seedance",
  "settings": {
    "mode": "video_extend",
    "prompt": "Продли @video1: кораблик проплывает под мостиком и скрывается за поворотом",
    "video_urls": [
      "https://example.com/boat.mp4"
    ],
    "duration": 5,
    "channel": "channel_2",
    "model": "seedance_2_mini"
  }
}
```

Цена считается при приёме задачи, валюта `RUB`.

[Полный пример запуска](https://api.cyhub.ai/docs/generations.md?lang=ru)

### Результат

- Видео MP4.
- Генерация обычно занимает несколько минут, длинные ролики и высокое качество дольше.
- Первым приходит новый кусок, вторым он же, склеенный с вашим видео в сторону extend_direction. Склейка той же высоты и ширины, что новый кусок, звук вашего видео сохраняется.
- Если склеить не вышло, приходит только новый кусок, а в texts пояснение. Оплата та же: кусок готов.

| Вид (kind) | Форматы | Сколько | Пояснение |
|---|---|---|---|
| `video` | mp4 | 1 | Новый кусок. |
| `video` | mp4 | 0 или 1 | Ваше видео и новый кусок одним роликом. Нет, если склеить не вышло. |

`result.texts`: Пояснение, если склеить не вышло.

Так выглядит готовая задача в ответе GET /v1/tasks/{id} (часть полей опущена). Подпись caption бывает у задачи или у отдельного файла и может быть пустой, имя файла задаёт модель.

```json
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Подпись к результату: модель и настройки",
    "texts": [
      "Текст результата, например слова песни"
    ],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      },
      {
        "index": 1,
        "kind": "video",
        "filename": "video.mp4",
        "size": 12582912,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
      }
    ]
  }
}
```

[Как читать результат и скачивать файлы](https://api.cyhub.ai/docs/tasks.md?lang=ru#result)

## Смотрите также

- [Нейросеть Seedance 2.0 Mini: возможности и цены](https://api.cyhub.ai/models/seedance-2-mini)
- Другие версии: [Seedance 2.5 API](https://api.cyhub.ai/models/seedance-2-5/api.md), [Seedance 2.0 API](https://api.cyhub.ai/models/seedance-2/api.md), [Seedance 2.0 Fast API](https://api.cyhub.ai/models/seedance-2-fast/api.md)
- Похожие модели: [Kling 3.0 API](https://api.cyhub.ai/models/kling-3/api.md), [Kling Motion 3.0 API](https://api.cyhub.ai/models/kling-motion/api.md), [Veo 3.1 API](https://api.cyhub.ai/models/veo-3-1/api.md), [Wan 3.0 API](https://api.cyhub.ai/models/wan-3/api.md), [MiniMax H3 (Hailuo 03) API](https://api.cyhub.ai/models/minimax-h3/api.md), [Gemini Omni API](https://api.cyhub.ai/models/gemini-omni/api.md)
- [Документация API](https://api.cyhub.ai/docs.md?lang=ru)
- [Ошибки API и что с ними делать](https://api.cyhub.ai/docs/errors.md?lang=ru)
