У вас есть один кадр с обложки статьи, а нужен короткий ролик из него. 22.09.2026 в 12:50 UTC я отправил первый запрос к seedance-1.0-pro-fast через API altrouter: из трёх наших запросов первые два вернули 400, третий создал задачу не с той длиной, что мы просили, а через 39 секунд у нас был mp4 на 5 секунд за $0,104.
Модель доступна в altrouter по OpenAI-совместимому API, оплатить можно картой РФ, СБП или криптой, а за подтверждённый Telegram один раз начисляется $1 на пробу: регистрация.
Это именно наш замер, а не цифры из прайса. Мы руками отправили запросы 22.09.2026, использовали ключ из переменной окружения и оплатили через свой API единственный ролик в этой серии.
Первый запуск: запрос без кадра
Начал с минимального тела запроса. В промпте попросил медленный наезд камеры и мягкий свет, но ссылку на исходное изображение не передал.
# 12:50:23 — без кадра
$ curl -s https://api.altrouter.ai/v1/videos \
-H "Authorization: Bearer $ALTROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"seedance-1.0-pro-fast","prompt":"Slow camera push-in, soft light"}'
HTTP 400 за 0,006 с
{"error":{"message":"Text-to-video is not available for `seedance-1.0-pro-fast` - a reference image is required.","type":"invalid_request_error","param":"prompt","code":null}}
400 здесь означает, что задача не создана, поэтому денег за этот запрос не списали. Ответ прямо говорит: для этой конфигурации altrouter нужна reference image — исходная картинка, которую модель будет оживлять.
У ByteDance модель умеет режим «текст → видео» и режим «кадр → видео». В каталоге altrouter для seedance-1.0-pro-fast доступен только второй режим: параметр image обязателен.
Это наш минус, и его лучше увидеть до интеграции. Если нужен именно ролик из текстового описания, эта конфигурация задачу не создаст. Для сравнения разных Seedance мы уже разбирали 1.0 Pro, Pro Fast и 1.5 Pro и отдельно проходили дебаг 1.5 Pro.
Второй запуск: кадр передан строкой
Добавил URL картинки, но передал его строкой. Для второго запроса использовал обложку статьи:
# 12:50:23 — кадр строкой
$ ... -d '{"model":"seedance-1.0-pro-fast","prompt":"Slow camera push-in, soft light","image":"https://altrouter.ai/og/blog/seedance-2-iz-rossii/cover.png"}'
HTTP 400 за 0,004 с
{"error":{"message":"Expected array, received string","type":"invalid_request_error","param":"image","code":null}}
image тогда принимался только как массив ссылок на исходные кадры. Ошибка снова бесплатная: API отклонил тело до создания задачи. Вечером 22.09 мы это исправили: теперь одна ссылка строкой принимается как список из одного кадра.
Для видеозапросов altrouter использует асинхронную схему. POST /v1/videos создаёт задачу, а готовый файл появляется позже через GET /v1/videos/{id}.
Третий запуск: API сам вернул 5 секунд
В третьем запросе исправил image, но оставил "seconds":10, чтобы проверить поведение параметра длины.
# 12:50:23 — кадр массивом и seconds: 10
$ ... -d '{"model":"seedance-1.0-pro-fast","prompt":"Slow camera push-in, soft light","image":["https://altrouter.ai/og/blog/seedance-2-iz-rossii/cover.png"],"seconds":10}'
HTTP 202 за 0,22 с
{"id":"vid_21d1d75ceec72dd47fc8fa9ac3291f61","object":"video","model":"seedance-1.0-pro-fast","status":"in_progress","created_at":1790081423,"seconds":5}
HTTP 202 значит, что задача принята, но ролик ещё не готов. В ответе сразу видно главное: мы отправили 10 секунд, а API вернул "seconds":5.
Лишнее значение тогда не вызвало ошибку: API подогнал его к пределу модели, и оплатить пришлось именно пять секунд. Вечером 22.09 мы это исправили: теперь длина, которую модель не рендерит, получает бесплатный HTTP 400 с допустимыми значениями, и задача не создаётся.

В каталоге на 22.09.2026 для модели указаны фиксированная длина 5 секунд и разрешение 720p по умолчанию или 1080p. Параметров формата кадра и звука у этой конфигурации нет.
Как работают холд и списание
Холд — это деньги, замороженные под задачу до результата, но ещё не списанные. Сразу после создания задачи поле held_usd в GET /v1/credits выросло на $0,1248.
После успешного рендера баланс уменьшился ровно на $0,104. Разница $0,0208 вернулась после снятия холда.

Такое поведение важно учитывать в коде учёта баланса. При создании медиа-задачи сумма временно уходит в холд, а после удачного рендера списывается фактическая стоимость. При сбое или отказе модерации холд возвращается.
Проверить остаток и замороженную сумму можно через GET /v1/credits, где доступны поля available_usd и held_usd. Наши $0,1248, $0,104 и $0,0208 — это результаты одной оплаченной задачи 22.09.2026, а не значения из прайса.
Сколько занял рендер
Мы опрашивали задачу раз в 10 секунд. В 12:50:30, 12:50:40, 12:50:50 и 12:51:00 статус оставался in_progress, а в 12:51:10 стал completed.
Полный ответ после завершения выглядел так:
{"id":"vid_21d1d75ceec72dd47fc8fa9ac3291f61","object":"video","model":"seedance-1.0-pro-fast","status":"completed","created_at":1790081423,"completed_at":1790081462,"seconds":5,"url":"https://api.altrouter.ai/media/videos/2026/09/22/508ddd29-….mp4"}
Разница между completed_at и created_at составила 39 секунд. Это время до готовой ссылки на файл в нашем конкретном запуске 22.09.2026.
Мы также сделали проверочный рендер этой же модели при подключении к каталогу: другая картинка, 720p и 5 секунд. Там рендер занял 49 секунд, а ссылка на файл появилась через 58 секунд.
Оба значения относятся к одному прогону на конфигурацию и зависят от очереди в момент вызова. Это не бенчмарк скорости.
Что пришло в файле
На выходе мы получили mp4 размером 2,9 МБ. Длительность файла составила 5,04 секунды, разрешение — 1248×704.
Звуковой дорожки не было. Входной кадр имел размер 1200×630 и представлял собой обложку статьи блога с текстом на тёмном фоне.
Модель подогнала исходный кадр под собственное разрешение результата. Параметра для ручного задания формата кадра в этой конфигурации нет.
Качество ролика мы не оценивали. Поэтому по этому замеру можно говорить о формате файла, длительности, разрешении, наличии звука и времени получения, но нельзя делать вывод о качестве изображения или движений.
Сколько стоит оживить кадр
На 22.09.2026 у нас ролик 5 секунд в 720p обошёлся в $0,104. Это списание за наш единственный оплаченный рендер через API в этой серии.
Для сравнения мы посчитали цену 720p у fal.ai по опубликованной у fal формуле: 1280 × 720 × 24 × 5 / 1024 = 108 000 видеотокенов, то есть примерно $0,108 при ставке $1 за 1 млн токенов.
Разница между $0,104 и примерно $0,108 составляет около 4%. Иными словами, наш результат оказался почти на уровне этого рыночного расчёта.

Официальную цену BytePlus за Pro Fast мы не нашли: страница прайса не отдаёт цифр. Поэтому скидку от официальной цены вендора здесь не указываем.
Для ориентира внутри altrouter соседние 5-секундные ролики в 720p на дату замера стоили примерно $0,114 для Seedance 1.5 Pro без звука, $0,195 для Seedance 1.0 Pro и около $0,31 для Seedance 2.0 Mini. У seedance-1.0-pro-fast 1080p дороже, а списание зависит от фактической стоимости рендера.
Рабочий запрос
Для минимального запуска достаточно передать модель, промпт и image — ссылкой строкой или массивом. Параметр resolution можно указать явно.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['ALTROUTER_API_KEY']}"}
r = requests.post("https://api.altrouter.ai/v1/videos", headers=H, json={
"model": "seedance-1.0-pro-fast",
"prompt": "Slow camera push-in, soft light",
"image": ["https://example.com/frame.png"],
"resolution": "720p",
}).json()
while r["status"] not in ("completed", "failed"):
time.sleep(10)
r = requests.get(f"https://api.altrouter.ai/v1/videos/{r['id']}", headers=H).json()
print(r.get("url") or r.get("error"))
Первый ответ будет объектом видео со статусом in_progress. Затем цикл раз в 10 секунд получает состояние по идентификатору задачи.
Для других моделей могут быть доступны дополнительные параметры, но список нужно проверять на странице модели и в документации по видео.
Что я бы сделал иначе
Я бы сразу передал image массивом и не отправлял seconds, потому что у этой конфигурации длина фиксирована на 5 секунд, а любое другое значение теперь даёт 400. 1080p оставил бы для случаев, когда разрешение действительно нужно: в нашем замере 720p дал файл 1248×704, а цена 1080p зависит от фактического рендера. В учёте всё равно записывал бы возвращённое поле seconds — это длина, за которую вы платите.
FAQ
Сколько стоит Seedance 1.0 Pro Fast по API?
В нашем запуске 22.09.2026 ролик из одного кадра на 5 секунд в 720p обошёлся в $0,104. Это фактическое списание за оплаченный рендер через API, а не цена из официального прайса BytePlus. Официальную цену BytePlus для Pro Fast мы не нашли.
Можно ли сделать видео из текста в Seedance 1.0 Pro Fast?
В конфигурации altrouter на 22.09.2026 — нет. Параметр image обязателен, а запрос без кадра вернул 400 с сообщением Text-to-video is not available. У ByteDance в документации указаны оба режима, но в каталоге altrouter для этой модели доступно только оживление кадра.
Почему Seedance 1.0 Pro Fast делает только 5 секунд?
Для seedance-1.0-pro-fast в altrouter длина фиксирована на 5 секунд. 22.09.2026 мы отправили "seconds":10, получили HTTP 202 и "seconds":5 в созданной задаче. Вечером того же дня мы это исправили: теперь такое значение получает бесплатный HTTP 400 с допустимой длиной, поэтому seconds лучше не передавать вовсе.
Как оживить фото через API Seedance?
Отправьте POST https://api.altrouter.ai/v1/videos с model, prompt и image, где image — ссылка на кадр строкой или массив ссылок. После HTTP 202 опрашивайте GET /v1/videos/{id}, пока статус не станет completed, а затем заберите mp4 из поля url. Для этой модели длина результата составит 5 секунд.
Когда списываются деньги за генерацию видео?
При создании задачи сумма сначала попадает в холд, то есть временно замораживается. В нашем запуске 22.09.2026 в холд ушло $0,1248, после успешного рендера списалось $0,104, а $0,0208 вернулось. При сбое или отказе модерации холд возвращается.