Перейти к содержимому
EN

Seedance 2.5

Seedance 2.5 (bytedance/seedance-2.5) — видеомодель ByteDance для длинных историй: мультимодальные референсы (картинки, ролики, аудио), первый и последний кадр, нативный звук, сид повторяемости. Генерация асинхронная: POST /v1/videos возвращает задачу, дальше опрос статуса и скачивание mp4.

Поле Описание
model bytedance/seedance-2.5 (или короткое seedance-2.5)
prompt Описание сцены, обязательное; до 30 000 символов
seconds Любое целое от 4 до 30; по умолчанию 4. Особое значение -1 — режим редактирования (см. ниже)
size Размер WxH из таблицы ниже; по умолчанию 1280x720
input_reference Image-to-video: одна картинка как стартовый кадр, {"image_url": "data:image/...;base64,..."} — только data:-URL
input_references Reference-to-video: от 1 до 30 картинок в массиве, тоже только data:-URL
input_video Видео-референс: {"video_url": "https://..."} или data:-URL. Движение, танец или хореография переносится на персонажа с картинок. Один ролик в API (в кабинете и боте — до 10). С seconds: "-1" — режим редактирования: модель переснимает сам ролик по промпту
input_audio Аудио-референс: {"audio_url": "https://..."} или data:-URL. Звук ролика пойдёт по ритму и настроению трека, но это не копия входа. Один трек в API (в кабинете и боте — до 10)
seed Сид повторяемости: целое 0…2147483647. Тот же промпт с тем же сидом даёт тот же ролик; без него апстрим берёт случайный

Восемнадцать допустимых размеров — шесть соотношений сторон в трёх разрешениях:

Соотношение 480p 720p 1080p
16:9 852x480 1280x720 1920x1080
9:16 480x852 720x1280 1080x1920
1:1 480x480 720x720 1080x1080
4:3 640x480 960x720 1440x1080
3:4 480x640 720x960 1080x1440
21:9 1120x480 1680x720 2520x1080

Значение вне списка вернёт 400 с перечнем допустимых вариантов — сверяйтесь с полем sizes в каталоге, если сомневаетесь.

  • Картинки (input_reference, input_references): только data:-URL, до 30 референсов, дополнительной платы за них нет.
  • Ролик (input_video): mp4 или mov, от 2 до 30 секунд (длиннее — обрезаем), кадр от 407 696 пикселей (например, 720×576), ссылка до 50 MB или data: до 40 MB. Совместим с input_references, несовместим с input_reference (первый кадр).
  • Аудио (input_audio): mp3, wav, m4a, aac, ogg, opus или flac; от 1 до 30 секунд (длиннее — обрезаем), до 20 MB.
  • Ссылки — только https на публичный адрес; редиректы не выполняются. Мы скачиваем файл до создания задачи, поэтому ошибка в нём сразу вернёт 400 с причиной.
  • В промпте ролик — @video1, картинки — @image1, @image2…, аудио — @audio1.
  • Первый и последний кадр (переход): доступен в веб-кабинете и боте; отдельного поля для конечного кадра в API пока нет.
import requests
job = requests.post(
"https://api.mixen.ai/v1/videos",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "bytedance/seedance-2.5",
"prompt": "Дрон облетает маяк на скалистом берегу, рассвет, брызги волн",
"seconds": "8",
"size": "1920x1080",
},
).json()
print(job["id"], job["status"])

Картинка передаётся одной строкой data:-URL — внешние ссылки не принимаются. Полный цикл: читаем файл, кодируем в base64, запускаем задачу, опрашиваем до готовности, скачиваем mp4:

import base64
import time
import requests
with open("portrait.jpg", "rb") as f:
img = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()
job = requests.post(
"https://api.mixen.ai/v1/videos",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "bytedance/seedance-2.5",
"prompt": "Портрет оживает: взгляд в камеру, лёгкая улыбка, шевелятся волосы, мягкий свет",
"seconds": "10",
"size": "720x1280",
"input_reference": {"image_url": img},
},
).json()
print(job["id"], job["status"])
while True:
time.sleep(7)
st = requests.get(f"https://api.mixen.ai/v1/videos/{job['id']}",
headers={"Authorization": f"Bearer {API_KEY}"}).json()
if st["status"] in ("completed", "failed"):
print(st["status"], st.get("error"))
break
if st["status"] == "completed":
with requests.get(f"https://api.mixen.ai/v1/videos/{job['id']}/content",
headers={"Authorization": f"Bearer {API_KEY}"},
stream=True) as r:
r.raise_for_status()
with open("out.mp4", "wb") as f:
for chunk in r.iter_content(1 << 16):
f.write(chunk)
print("saved out.mp4")

От одной до тридцати картинок — модель собирает сцену, удерживая персонажей и стиль из референсов:

{
"model": "bytedance/seedance-2.5",
"prompt": "Девушка из @image1 идёт по улице из @image2, вечерние огни",
"seconds": "6",
"size": "1280x720",
"input_references": [
"data:image/png;base64,iVBORw0...",
"data:image/png;base64,iVBORw0..."
]
}

Движение берётся из ролика, персонаж — из картинок, звук — по ритму трека:

{
"model": "bytedance/seedance-2.5",
"prompt": "Девушка с @image1 повторяет танец из @video1 в ритм @audio1, неоновый зал",
"seconds": "10",
"size": "720x1280",
"input_references": ["data:image/jpeg;base64,/9j/4AAQ..."],
"input_video": {"video_url": "https://example.com/dance.mp4"},
"input_audio": {"audio_url": "https://example.com/beat.mp3"}
}

Переделка СВОЕГО ролика промптом — без картинок: "seconds": "-1" и один input_video. Модель переснимает тот же ролик с правками из промпта: наследуются длительность и формат кадра, выход рендерится в 720p, звук сохраняется. size в этом режиме не учитывается, референсы и кадры не передаются:

{
"model": "bytedance/seedance-2.5",
"prompt": "Add golden sunset light, warm cinematic grade",
"seconds": "-1",
"input_video": {"video_url": "https://example.com/clip.mp4"}
}

Опрос и скачивание — как обычно (GET /v1/videos/{id} → GET /v1/videos/{id}/content). В кабинете ролик приводится к ≤15 с, в API — к ≤30 с; оплачивается пересъёмка (выход 720p × длина) плюс вход токенами — точную сумму заранее вернёт POST /videos/price.

Дальше как обычно: GET /v1/videos/{id} раз в 5–10 секунд до completed, затем GET /v1/videos/{id}/content за mp4. Полный цикл — гайд по видео.

Тарификация посекундная и зависит от разрешения: 480p — 15.65 ₽ за секунду, 720p — 33.66 ₽, 1080p — 82.80 ₽. Ролик- и аудио-референс оплачиваются поверх секунд выхода — сумма зависит от кадра и длины ролика и от длины аудио, поэтому итог виден после завершения задачи (точную сумму заранее возвращает POST /videos/price). Картинки-референсы бесплатны. Редактирование (seconds: "-1") считается по ставке 720p × длина исходника плюс вход ролика токенами. Актуальные цены — каталог.

  • Длительности от 4 до 30 секунд — непрерывный ряд: длинные планы и целые сцены одной моделью.
  • Шесть форматов кадра, включая широкий 21:9, в трёх разрешениях до 1080p.
  • Три вида референсов в одном запросе: до 30 картинок, ролик и аудио.
  • Переход «первый → последний кадр» поддерживается (кабинет и бот).
  • Сид повторяемости для воспроизводимых дублей; нативный звук в готовом ролике.
  • Видео- и аудио-референс — по одному в API; списком (до 10 каждого) — только кабинет и бот.
  • Редактирование готового ролика (seconds: "-1"): выход наследует длительность и формат исходника, рендер 720p.

Все модели — в каталоге. Общий порядок работы с видео — гайд по видео.