Seedance 2.5 API: цена, параметры и код
Seedance 2.5 — видеомодель ByteDance: за одну генерацию она создаёт до 30 с видео со встроенным звуком по текстовому промпту или по референсам — до 30 изображений, 10 видео и 10 аудиофрагментов. На NezhaGate это асинхронный API в стиле OpenAI: $0.10 за секунду в 480P, $0.158 в 720P, а неудачная задача ничего не стоит.
Обновлено 2026-10-03
Коротко о Seedance 2.5
ByteDance выпустила Seedance 2.5 31 июля 2026 года (ByteDance Seed). Главное отличие — длительность: до 30 с за одну генерацию со встроенным звуком, тогда как у Seedance 2.0 предел 15 с. На NezhaGate модель доступна по тому же API-ключу, что и все остальные.
| ID модели | seedance-2.5 |
|---|---|
| Эндпоинт | POST https://nezhagate.com/v1/videos/generations, затем GET /v1/videos/jobs/{id} |
| Длительность | любое целое число секунд от 4 до 30 (duration) |
| Разрешение | 480P, 720P (по умолчанию); 1080P скоро |
| Соотношение сторон | 16:9 (по умолчанию), 9:16, 1:1, 4:3, 3:4 (size) |
| Референсы | до 30 изображений, 10 видео (суммарно до 30 с) и 10 аудиофрагментов в одном запросе |
| Звук | встроенная звуковая дорожка, по умолчанию включена (audio: false её отключает) |
| Промпт | до 11 000 символов; китайские и английские символы считаются одинаково |
| Результат | ссылка на mp4 в data[0].url; файл размещаем мы, он хранится 60 дней |
Цена
Оплачивается каждая секунда сгенерированного видео. Референсные изображения, видео и аудио не оплачиваются. Если задача завершилась ошибкой или по тайм-ауту, её стоимость возвращается полностью.
| Разрешение | За секунду | 5 с | 10 с | 15 с | 30 с |
|---|---|---|---|---|---|
| 480P | $0.10 | $0.50 | $1.00 | $1.50 | $3.00 |
| 720P | $0.158 | $0.79 | $1.58 | $2.37 | $4.74 |
Официальная цена ByteDance на BytePlus для видео 16:9 — $0.103 за секунду в 480p и $0.231 в 720p; в 720P экономия 31%. Ролик фиксированной длины 30 с в 720P на seedance-2.5-30s стоит $1.50. Цены всех провайдеров рядом: сравнение цен Seedance API.
Отправка задачи и получение видео
Генерация видео асинхронная: запрос на отправку сразу возвращает HTTP 202 и id задачи, затем вы опрашиваете задачу, пока status не станет succeeded, и читаете data[0].url. Создайте ключ в консоли и сохраните его в переменной окружения API_KEY.
curl
# 1) отправка: возвращает {"id": "img_...", "status": "queued"}
curl https://nezhagate.com/v1/videos/generations \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on and sweeps across a stormy sea. Slow push-in, warm light, film grain.",
"duration": 10,
"resolution": "720P",
"size": "16:9"
}'
# 2) опрашивайте каждые 15 с, пока "status" не станет "succeeded", затем прочитайте data[0].url
curl https://nezhagate.com/v1/videos/jobs/JOB_ID -H "Authorization: Bearer $API_KEY"Python
import os
import time
import requests
BASE = "https://nezhagate.com/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["API_KEY"]}
job = requests.post(f"{BASE}/videos/generations", headers=HEADERS, json={
"model": "seedance-2.5",
"prompt": "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on "
"and sweeps across a stormy sea. Slow push-in, warm light, film grain.",
"duration": 10,
"resolution": "720P",
"size": "16:9",
}).json()
print("job", job["id"])
while True:
time.sleep(15)
r = requests.get(f"{BASE}/videos/jobs/{job['id']}", headers=HEADERS).json()
if r["status"] == "succeeded":
print(r["data"][0]["url"])
break
if r["status"] == "failed":
raise SystemExit(r["error"]["message"]) # refunded in fullNode.js
const BASE = "https://nezhagate.com/v1";
const headers = { Authorization: `Bearer ${process.env.API_KEY}`, "Content-Type": "application/json" };
const job = await (await fetch(`${BASE}/videos/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.5",
prompt: "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on and sweeps across a stormy sea.",
duration: 10,
resolution: "720P",
size: "16:9",
}),
})).json();
while (true) {
await new Promise((ok) => setTimeout(ok, 15000));
const r = await (await fetch(`${BASE}/videos/jobs/${job.id}`, { headers })).json();
if (r.status === "succeeded") { console.log(r.data[0].url); break; }
if (r.status === "failed") throw new Error(r.error.message);
}Референсные изображения, видео и аудио
Добавьте референсы в тот же запрос и ссылайтесь на них в промпте по порядку: @Image1, @Image2 — для images, @Video1 — для video_references, @Audio1 — для audio_reference. Каждый элемент может быть публичным URL или base64 data URI (такой файл мы храним у себя 7 дней).
{
"model": "seedance-2.5",
"prompt": "The dancer from @Image1 performs the moves of @Video1 on the rooftop from @Image2, cut to the beat of @Audio1.",
"images": ["https://example.com/dancer.png", "https://example.com/rooftop.png"],
"video_references": ["https://example.com/moves.mp4"],
"audio_reference": ["https://example.com/beat.mp3"],
"duration": 12,
"resolution": "720P",
"size": "9:16"
}У Seedance нет режима первого кадра: каждое изображение служит референсом персонажа, объекта, места или стиля, поэтому референсное изображение не обязательно окажется первым кадром ролика. Назовите каждый референс в промпте и укажите, что из него нужно сохранить.
Ограничения, из-за которых запрос не пройдёт
- Больше 30 изображений, 10 видео или 10 аудиофрагментов либо референсные видео общей длительностью больше 30 с: запрос отклоняется при отправке, а не обрезается.
- Промпт длиннее 11 000 символов.
- Длительность вне диапазона от 4 до 30 с или соотношение сторон не из пяти перечисленных выше (21:9 недоступно).
- Контент, который не прошёл модерацию. Фотографии реальных людей могут быть отклонены; персонажи, которых вы сгенерировали сами, включая фотореалистичных, подходят в качестве референсов.
В каждом из этих случаев возвращается понятное сообщение об ошибке, а стоимость задачи, которая завершилась ошибкой уже после отправки, возвращается полностью.
Сколько длится рендер
Учитываются реальные запросы клиентов. Не учитываются наши собственные тесты, запросы, отклонённые из-за ошибок клиента (4xx), и контент, который модель отказалась генерировать. Неудачные вызовы никогда не оплачиваются. Данные обновляются каждые 10 мин.
Более длинные ролики и более высокое разрешение требуют больше времени, как и часы пиковой нагрузки. Сохраните id задачи и опрашивайте её; не отправляйте запрос повторно — каждая отправка создаёт новую платную задачу. Рендер, не завершившийся вовремя, получает статус failed с причиной в error, и его стоимость возвращается полностью.
Частые вопросы
Сколько стоит Seedance 2.5 API?
Какой длины может быть видео Seedance 2.5?
Поддерживает ли Seedance 2.5 режим «изображение в видео»?
Можно ли использовать референсное видео или аудио?
Сколько длится рендер Seedance 2.5?
Доступно ли 1080P?
Тот же OpenAI-совместимый ключ подходит для всех остальных чат-, графических и видеомоделей NezhaGate. Оплата по факту использования; за неудачные задачи деньги возвращаются полностью.
Получить API-ключ Попробовать в песочнице Сравнить провайдеровДругие руководства: Seedance API: видео 30 с — цена, примеры, код