Skip to content

Video

Для синхронной генерации видео используйте POST /v1/video/generations. HTTP-соединение остаётся открытым, пока провайдер рендерит результат, поэтому ставьте большой таймаут на клиенте.

text
POST https://api.rout.my/v1/video/generations

Доступные модели

МодельЧто умеетРазрешенияДлительностьАудио
bytedance/seedance-2.5Text-to-video, image-to-video, первый/последний кадр, reference-to-video, редактирование и продление видео480p, 720p4–30 сДа
qwen/wan-v2.7Text-to-video и reference-to-video (режим выбирается автоматически)720p, 1080p2–15 с (t2v), 2–10 с (r2v)Да

google/gemini-omni-flash-preview тоже может отдавать видео, но это языковая модель для /v1/chat/completions, а не видео-эндпоинт. Здесь она не принимается.

Всегда используйте точные ID моделей из /v1/models.

Запрос

bash
curl --max-time 900 https://api.rout.my/v1/video/generations \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance/seedance-2.5",
    "prompt": "Медленное движение камеры вдоль стеклянного куба на белом столе",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

Поля запроса

ПолеТипОбязательноеПримечания
modelstringДаТочный ID видео-модели из /v1/models.
promptstring или objectДаТекст либо { "text": "...", "image": "..." } для image-to-video.
durationnumberНетСекунды. Обрезается по диапазону модели.
resolutionstringНет480p, 720p, 1080p или ШИРИНАxВЫСОТА — зависит от модели.
aspect_ratio, aspectRatiostringНет16:9, 9:16, 1:1, 4:3, 3:4, 21:9. Игнорируется, когда соотношение задаёт входная картинка — см. ниже.
n, sampleCountintegerНетКоличество результатов. Seedance всегда возвращает ровно 1.
audiobooleanНетВключает генерацию звука, где поддерживается.
negative_prompt, negativePromptstringНетЧего избегать.
seedintegerНетДетерминированный seed, где поддерживается.
input_imagestringНетURL, data URI или base64. Используется как первый кадр.
image, image_url, input_image_url, input_image_b64stringНетАлиасы для входной картинки.
last_frame_image, lastFrameImage, image_tail, imageTailstringНетПоследний кадр для режима первый/последний кадр.
reference_images, referenceImagesstring[]НетРеференсные картинки: влияют на содержание, но не задают первый кадр.
reference_videos, referenceVideosstring[]НетРеференсные видео.
reference_urls, referenceUrlsstring[]НетСмешанные референсы; видео определяются по расширению файла.
input_video, input_video_b64stringНетИсходный ролик для редактирования или продления. Включает тариф с видео на входе.
input_audio, input_audio_b64, audio_url, audioUrlstringНетВнешняя аудиодорожка, где поддерживается.
prompt_enhancement, enhance_prompt, prompt_extend, enable_prompt_expansionbooleanНетРасширение промпта.
camera_fixed, cameraFixedbooleanНетЗафиксировать камеру (Seedance).
shot_type, shotTypestringНетТип съёмки для Wan reference-to-video: single или multi.
watermarkbooleanНетВодяной знак, где поддерживается.
service_tier, serviceTierstringНетdefault или flex у Seedance.
poll_timeout_ms, poll_interval_msintegerНетТаймаут и интервал опроса задачи.
userstringНетИдентификатор пользователя на стороне клиента.

Base64 и data URI временно хостятся как URL, если провайдер требует ссылку.

Seedance 2.5

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

РежимЧто отправлять
Text-to-videoтолько prompt
Image-to-videoinput_image или prompt: { text, image }
Первый/последний кадрinput_image + last_frame_image
Reference-to-videoreference_images и/или reference_videos
Редактирование видеоinput_video + prompt с описанием изменения
Продление видеоinput_video и промпт-продолжение

Ограничения: 480p или 720p, 4–30 секунд, 24 fps, ровно одно видео за вызов. Входные картинки: до 30 штук, JPEG/PNG/WebP/BMP/TIFF/GIF/HEIC/HEIF. Входные видео: до 10 роликов, MP4/MOV, по 2–30 с. Входное аудио: MP3/WAV, 2–30 с.

Соотношение сторон и входные картинки

Если вы передаёте картинку как первый кадр, не передавайте aspect_ratio. ByteDance выводит соотношение сторон из этой картинки и отклоняет запрос, если соотношение задано явно:

text
The parameter ratio specified in the request is not valid. For first-frame
or first-last-frame generation, the output ratio follows the first-frame image.

rout.my убирает aspect_ratio в этом случае сам, поэтому запрос с обоими полями всё равно отработает — победит картинка. Чтобы получить нужное соотношение, кадрируйте изображение заранее.

aspect_ratio при этом работает для text-to-video и reference-to-video: там кадр ничем не зафиксирован.

json
{
  "model": "bytedance/seedance-2.5",
  "prompt": {
    "text": "Оживи товар медленным вращением на подставке.",
    "image": "https://example.com/product.png"
  },
  "duration": 5,
  "resolution": "720p"
}

Референсы

Референсные картинки задают персонажей, стиль или предметы, не становясь первым кадром. Ссылайтесь на них по порядковому номеру прямо в промпте.

json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "Возьми [Image 1] как главного героя и [Image 2] как товар в кинематографичной уличной сцене.",
  "reference_images": [
    "https://example.com/character.png",
    "https://example.com/product.png"
  ],
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9"
}

Если input_image приходит вместе с аудио- или видео-референсами, rout.my отправляет картинку в reference_images, а не первым кадром — так референсы и кадр не конфликтуют.

Редактирование и продление

json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "Сделай движение камеры плавнее, объект оставь тот же.",
  "input_video": "https://example.com/source.mp4",
  "duration": 5,
  "resolution": "720p"
}

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

Wan 2.7

qwen/wan-v2.7 сам выбирает режим на стороне апстрима:

  • нет референсных полей → text-to-video (720p/1080p, 2–15 с)
  • есть reference_images, reference_videos или reference_urls → reference-to-video (2–10 с, до 5 картинок или 3 роликов)
json
{
  "model": "qwen/wan-v2.7",
  "prompt": "Image 1 и Video 1 идут по дождливому городу",
  "duration": 6,
  "resolution": "1080p",
  "reference_images": ["https://example.com/character.png"],
  "reference_videos": ["https://example.com/motion.mp4"]
}

Для смешанных медиа используйте типизированные reference_images и reference_videos, чтобы роутеру не приходилось угадывать тип по имени файла. Wan принимает resolution как 720p/1080p или как ШИРИНАxВЫСОТА.

Ответ

json
{
  "created": 1744000000,
  "model": "bytedance/seedance-2.5",
  "duration": 5,
  "videos": [
    {
      "url": "https://api.rout.my/public/media/generated.mp4",
      "mime_type": "video/mp4"
    }
  ]
}

Ссылки на готовые видео временные. Скачивайте и храните у себя всё, что нужно надолго.

Расход квоты

Тарификация зависит от провайдера и бывает двух видов.

Seedance 2.5 считается по видео-токенам, ровно как у самого ByteDance:

text
токены = (секунды_вывода + секунды_входного_видео) x ширина x высота x 24 / 1024

Ставка за токен одинакова для обоих разрешений, поэтому разница в цене возникает из числа пикселей. К каждому ролику применяется минимальный порог токенов по длительности вывода, а запрос с видео на входе считается по сниженной ставке — включая секунды самого входного ролика.

РазрешениеТокенов в секундуЦена за секунду
480p (854x480)9 607,5$0,1028
720p (1280x720)21 600$0,2311

С видео на входе ставка падает с $10,70 до $6,40 за миллион токенов, то есть $0,0615/с на 480p и $0,1382/с на 720p.

Wan 2.7 считается за секунду результата: $0,10/с на 720p и $0,15/с на 1080p.

Токены квоты выводятся из тех же величин и умножаются на token_multiplier модели.

API documentation for rout.my.