Seedance 2.5
Video Generationup to -20%bytedance/seedance-2.5Seedance 2.5 — мультимодальная модель создания видео нового поколения из линейки Doubao от ByteDance, выпущенная 2026-08-07. Она принимает смешанный ввод из текста, изображений, видео и аудио — до 30 изображений, 10 видео и 10 аудиоклипов, всего до 50 референсных материалов — и поддерживает генерацию видео из текста, из изображения и из видео. Длительность одного клипа задаётся любым целым числом секунд от 4 до 30, разрешение — 480p, 720p или 1080p (по умолчанию 720p), доступны шесть соотношений сторон и адаптивный вариант. Вывод по умолчанию содержит синхронизированное аудио, а промпты можно писать на разных языках. В этом поколении улучшены следование инструкциям, многокадровое повествование и согласованность на длинных отрезках. Доступна через OpenAI-compatible протокол.
Цены
up to -20%от $0.11/с| Разрешение | Режим | Звук | Цена / секунду |
|---|---|---|---|
| 480p | Текст в видео | Любое | $0.11/с |
| 480p | Видео в видео | Любое | $0.14/с |
| 720p | Текст в видео | Любое | $0.24/с |
| 720p | Видео в видео | Любое | $0.3/с |
| 1080p | Текст в видео | Любое | $0.48/с$0.6/с |
| 1080p | Видео в видео | Любое | $0.568/с$0.71/с |
| Все остальные комбинации | $0.568/с$0.71/с | ||
Оплата взимается за секунду сгенерированного видео. Поддерживаемые комбинации параметров и цены определяются в реальном времени через API и могут различаться в зависимости от версии модели.
Providers
/v1/videos/v1/videosПримеры кода
import timeimport requestsBASE = "https://api.ofox.io/v1/videos"HEADERS = {"Authorization": "Bearer YOUR_OFOX_API_KEY"}# Create the generation tasktask = requests.post(BASE, headers=HEADERS, json={"model": "bytedance/seedance-2.5","prompt": "A golden retriever running on the beach at sunset","duration": 4,"resolution": "720p","generate_audio": True,"provider": {"type": "byteplus"},# Or: "provider": {"type": "volcengine"}}).json()# Poll until the task reaches a terminal statewhile True:task = requests.get(f"{BASE}/{task['id']}", headers=HEADERS).json()if task["status"] in ("completed", "failed", "cancelled", "expired"):breaktime.sleep(10)# Prefer mirror_urls (persistent) then fall back to unsigned_urls (24h)print((task.get("mirror_urls") or task.get("unsigned_urls") or [None])[0])