Video
Для синхронной генерации видео используйте POST /v1/video/generations. HTTP-соединение остаётся открытым, пока провайдер рендерит результат, поэтому ставьте большой таймаут на клиенте.
POST https://api.rout.my/v1/video/generationsДоступные модели
| Модель | Что умеет | Разрешения | Длительность | Аудио |
|---|---|---|---|---|
bytedance/seedance-2.5 | Text-to-video, image-to-video, первый/последний кадр, reference-to-video, редактирование и продление видео | 480p, 720p | 4–30 с | Да |
qwen/wan-v2.7 | Text-to-video и reference-to-video (режим выбирается автоматически) | 720p, 1080p | 2–15 с (t2v), 2–10 с (r2v) | Да |
google/gemini-omni-flash-preview тоже может отдавать видео, но это языковая модель для /v1/chat/completions, а не видео-эндпоинт. Здесь она не принимается.
Всегда используйте точные ID моделей из /v1/models.
Запрос
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"
}'Поля запроса
| Поле | Тип | Обязательное | Примечания |
|---|---|---|---|
model | string | Да | Точный ID видео-модели из /v1/models. |
prompt | string или object | Да | Текст либо { "text": "...", "image": "..." } для image-to-video. |
duration | number | Нет | Секунды. Обрезается по диапазону модели. |
resolution | string | Нет | 480p, 720p, 1080p или ШИРИНАxВЫСОТА — зависит от модели. |
aspect_ratio, aspectRatio | string | Нет | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9. Игнорируется, когда соотношение задаёт входная картинка — см. ниже. |
n, sampleCount | integer | Нет | Количество результатов. Seedance всегда возвращает ровно 1. |
audio | boolean | Нет | Включает генерацию звука, где поддерживается. |
negative_prompt, negativePrompt | string | Нет | Чего избегать. |
seed | integer | Нет | Детерминированный seed, где поддерживается. |
input_image | string | Нет | URL, data URI или base64. Используется как первый кадр. |
image, image_url, input_image_url, input_image_b64 | string | Нет | Алиасы для входной картинки. |
last_frame_image, lastFrameImage, image_tail, imageTail | string | Нет | Последний кадр для режима первый/последний кадр. |
reference_images, referenceImages | string[] | Нет | Референсные картинки: влияют на содержание, но не задают первый кадр. |
reference_videos, referenceVideos | string[] | Нет | Референсные видео. |
reference_urls, referenceUrls | string[] | Нет | Смешанные референсы; видео определяются по расширению файла. |
input_video, input_video_b64 | string | Нет | Исходный ролик для редактирования или продления. Включает тариф с видео на входе. |
input_audio, input_audio_b64, audio_url, audioUrl | string | Нет | Внешняя аудиодорожка, где поддерживается. |
prompt_enhancement, enhance_prompt, prompt_extend, enable_prompt_expansion | boolean | Нет | Расширение промпта. |
camera_fixed, cameraFixed | boolean | Нет | Зафиксировать камеру (Seedance). |
shot_type, shotType | string | Нет | Тип съёмки для Wan reference-to-video: single или multi. |
watermark | boolean | Нет | Водяной знак, где поддерживается. |
service_tier, serviceTier | string | Нет | default или flex у Seedance. |
poll_timeout_ms, poll_interval_ms | integer | Нет | Таймаут и интервал опроса задачи. |
user | string | Нет | Идентификатор пользователя на стороне клиента. |
Base64 и data URI временно хостятся как URL, если провайдер требует ссылку.
Seedance 2.5
Одна модель закрывает шесть режимов, и нужный определяется по набору переданных полей.
| Режим | Что отправлять |
|---|---|
| Text-to-video | только prompt |
| Image-to-video | input_image или prompt: { text, image } |
| Первый/последний кадр | input_image + last_frame_image |
| Reference-to-video | reference_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 выводит соотношение сторон из этой картинки и отклоняет запрос, если соотношение задано явно:
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: там кадр ничем не зафиксирован.
{
"model": "bytedance/seedance-2.5",
"prompt": {
"text": "Оживи товар медленным вращением на подставке.",
"image": "https://example.com/product.png"
},
"duration": 5,
"resolution": "720p"
}Референсы
Референсные картинки задают персонажей, стиль или предметы, не становясь первым кадром. Ссылайтесь на них по порядковому номеру прямо в промпте.
{
"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, а не первым кадром — так референсы и кадр не конфликтуют.
Редактирование и продление
{
"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 роликов)
{
"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ВЫСОТА.
Ответ
{
"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:
токены = (секунды_вывода + секунды_входного_видео) 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 модели.