Генерация видео
Генерируйте видео из текстовых промптов через RouterAI API.
RouterAI поддерживает генерацию видео через модели, у которых "video" указан в output_modalities. Генерация асинхронная: вы создаёте задачу, а готовое видео получаете позже — опросом статуса (polling) или через webhook на ваш callback_url.
Полный жизненный цикл:
- Создание —
POST /api/v1/videosвозвращаетidзадачи иpolling_url. - Ожидание — опрашивайте статус (
GET /api/v1/videos/{id}) или получите webhook, если указалиcallback_url. - Скачивание — когда статус
completed, заберите mp4 через content-эндпоинт.
Поиск моделей
Модели для генерации видео — это модели с "video" в output_modalities. Найти их можно:
- на странице моделей, отфильтровав по выходным модальностям;
- запросом общего каталога моделей
GET /api/v1/models— видео-модели отличаются значениемvideoвarchitecture.output_modalities:
curl https://routerai.ru/api/v1/models \
-H "Authorization: Bearer $ROUTERAI_API_KEY"
Шаг 1. Создание генерации
Отправьте POST /api/v1/videos с обязательными model и prompt. Необязательное поле callback_url — HTTPS-адрес, на который придёт webhook о готовности (см. Шаг 3).
curl https://routerai.ru/api/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-d '{
"model": "x-ai/grok-imagine-video",
"prompt": "Кот в скафандре медленно плывёт в невесомости на космической станции, кинематографичный свет",
"aspect_ratio": "16:9",
"duration": 4,
"resolution": "480p",
"callback_url": "https://example.com/hooks/routerai-video"
}'
Ответ 202 Accepted — задача принята:
{
"id": "Cq4gNzomlZDrNyy72GHC",
"status": "pending",
"polling_url": "https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC"
}
id— идентификатор задачи (используется во всех последующих запросах).status— текущий статус (pendingсразу после создания).polling_url— URL для опроса статуса (указывает на домен RouterAI).
Параметры запроса
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
model |
string | да | Слаг модели (например, bytedance/seedance-2.0). |
prompt |
string | да | Текстовое описание желаемого видео. |
duration |
integer | нет | Длительность видео в секундах. Допустимые значения зависят от модели. |
resolution |
string | нет | Разрешение видео (например, 720p, 1080p). Допустимые значения зависят от модели. |
aspect_ratio |
string | нет | Соотношение сторон (например, 16:9, 9:16, 1:1). Допустимые значения зависят от модели. |
size |
string | нет | Точный размер кадра в формате ШИРИНАxВЫСОТА (например, 1280x720) — альтернатива паре resolution + aspect_ratio. |
frame_images |
array | нет | Опорные кадры для image-to-video (см. ниже). |
input_references |
array | нет | Референсы: изображения, исходное видео или аудиодорожка (см. ниже). |
seed |
integer | нет | Детерминированная генерация: повторный запрос с тем же seed даёт похожий результат (если поддерживается моделью). |
generate_audio |
boolean | нет | Генерировать ли аудиодорожку (если поддерживается моделью). |
negative_prompt |
string | нет | Что исключить из видео (если поддерживается моделью). |
callback_url |
string | нет | HTTPS-адрес для webhook о готовности (см. Шаг 3). |
Помимо перечисленных, модель может принимать провайдер-специфичные параметры (например, watermark у Seedance или personGeneration у Veo) — они передаются в корне тела запроса и пробрасываются провайдеру как есть. Какие параметры и значения поддерживает конкретная модель — см. в разделе «Поддержка по моделям» или на странице модели в каталоге.
Референсы и кадры на входе
Есть два способа передать вход помимо промпта, и каждый включает свой режим генерации:
frame_images— опорные кадры для image-to-video: у каждого элемента естьframe_type—first_frame(первый кадр видео) илиlast_frame(последний).input_references— референсы для reference-to-video: модель использует их как ориентир, а не как точные кадры. Тип элемента определяется полемtype:image_url— референс-изображение (персонаж, стиль, объект);video_url— исходное видео для video-to-video (например, редактирование футажа вrunway/aleph-2);audio_url— аудиодорожка (например, речь для липсинка вbytedance/seedance-2.0).
Набор поддерживаемых типов зависит от входных модальностей модели — см. страницу модели в каталоге. url внутри image_url/video_url/audio_url — публично доступный HTTPS-URL или data URI в base64.
У Seedance (bytedance/seedance-2.x) эти два режима взаимоисключающие. Не передавайте frame_images и input_references в одном запросе: часть таких запросов провайдер отклоняет ошибкой 400 last frame image content cannot be mixed with first frame or reference image content (не тарифицируется), а прошедшие обрабатываются как image-to-video — референсы, включая аудиодорожку для липсинка, молча игнорируются, и модель озвучивает реплику сама. Для липсинка используйте только input_references: изображения персонажа, при необходимости исходное видео и audio_url; первый и последний кадр в этом режиме не задаются.
Продление и редактирование видео у Seedance — без aspect_ratio и size. Если в input_references есть video_url, а промпт просит продолжить или изменить ролик, модель распознаёт задачу как video extension/editing и наследует геометрию исходника. Не передавайте в таком запросе ни aspect_ratio, ни size — провайдер выставит адаптивное соотношение сам; с явным соотношением задача завершится ошибкой `ratio` must be `adaptive` (не тарифицируется). Значение adaptive в поле aspect_ratio передать нельзя: оно отклоняется на валидации запроса.
Image-to-video (frame_images)
{
"model": "bytedance/seedance-2.0",
"prompt": "Персонаж идёт через осенний лес, камера следует за ним",
"frame_images": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/first-frame.png" },
"frame_type": "first_frame"
}
],
"resolution": "1080p"
}
Reference-to-video (input_references)
{
"model": "bytedance/seedance-2.0",
"prompt": "Гигантская солнечная вспышка рядом с планетой",
"input_references": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/style-ref.png" }
}
],
"resolution": "1080p"
}
Типы можно комбинировать — например, персонаж с референс-изображения поёт под переданную аудиодорожку:
{
"model": "bytedance/seedance-2.0-mini",
"prompt": "Кот поёт песню",
"duration": 4,
"input_references": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/cat.jpeg" }
},
{
"type": "audio_url",
"audio_url": { "url": "https://example.com/song.wav" }
}
]
}
Video-to-video: редактирование готового ролика (runway/aleph-2)
runway/aleph-2 редактирует существующее видео по текстовой инструкции: исходный ролик передаётся элементом video_url в input_references (обязателен, публичный HTTPS-URL), prompt описывает изменения. Это единственный вход модели: изображения-референсы (image_url) она не принимает — запрос с картинкой в input_references отклоняется ошибкой 400 Unrecognized key: "references" ещё до старта генерации (не тарифицируется); frame_images тоже не поддерживаются. Референс внешности персонажа или объекта передать нельзя — описывайте желаемое текстом в prompt.
{
"model": "runway/aleph-2",
"prompt": "Замени небо на закатное, остальное не менять",
"aspect_ratio": "16:9",
"input_references": [
{
"type": "video_url",
"video_url": { "url": "https://example.com/source.mp4" }
}
]
}
Особенности модели:
- Длительность выходного ролика равна длительности исходника, а разрешение задаёт провайдер (до 1080p) по выбранному
aspect_ratio— поэтомуsupported_durationsиsupported_resolutionsв каталоге пусты (null). Поляduration,resolutionиsizeпередавать не нужно: на результат они не влияют. Из общих параметров поддерживаютсяaspect_ratioиseed. - Нативные параметры Runway
keyframes(картинки, привязанные к моментам ролика) иprompt_imagesчерез наш API сейчас недоступны:keyframesдо провайдера не доходит и молча отбрасывается (генерация выполняется и тарифицируется без него),prompt_imagesу Aleph 2 нет и в API Runway. Из провайдер-специфичных параметров в каталоге остаётсяcontentModeration(формат — в документации Runway; значение не валидируется, некорректное молча игнорируется). - Редактирование отдельного временно́го участка не поддерживается: модель обрабатывает ролик целиком, отдельного поля временно́го диапазона нет.
- Тарификация — посекундно за выходной ролик (плюс минимальная стоимость генерации); итоговая сумма — в
usage.costответа поллинга. Цены — на странице модели в каталоге.
Talking-head: оживление фото (heygen/avatar-iv)
heygen/avatar-iv анимирует одну фотографию в говорящий портрет: фото передаётся элементом image_url в input_references, а prompt — это текст, который персонаж произнесёт (скрипт), а не описание сцены.
Особенности модели:
- Голос обязателен при текстовом
prompt. Модель озвучивает текст сама, поэтому нужно выбрать голос — идентификатор передаётся только во вложенном объектеprovider.options.heygen.voice_id(корневойvoice_id, в отличие от обычных провайдер-специфичных параметров, не сработает). Без голоса запрос отклоняется ошибкой 400. Базовые голоса — в таблице ниже; для русской речи подходят мультиязычные Kore и Orus. Полный каталог —GET /v3/voicesHeyGen (нужен ключ HeyGen). - Остальные опции модели — там же. Все специфичные параметры avatar-iv (
voice_settings,motion_prompt,expressiveness,fit,remove_background,background,caption,title) передаются, как иvoice_id, внутриprovider.options.heygen, а не в корне тела. - Голос тоньше:
voice_settings— объект{"speed": 0.5–1.5, "pitch": −50…50, "volume": 0–1}(все поля необязательны). Замедление речи удлиняет ролик и пропорционально увеличивает его посекундную стоимость. - Анимация и кадр:
expressiveness—"low" | "medium" | "high";fit—"cover"(заполнить кадр с обрезкой, поведение по умолчанию) либо"contain"(вписать фото целиком, с полями). - Замена фона — пара
remove_background+background.background— объект:{"type": "color", "value": "#RRGGBB"}либо{"type": "image", "url": …}(data-URI не принимается, только настоящий URL); работает только вместе с"remove_background": true, без него молча игнорируется. Фон-картинка накладывается в границах исходного фото персонажа и растягивается под его пропорции, а область кадра за пределами фото заливается белым — чтобы фон покрыл кадр целиком и без искажений, соотношение сторон фото, фоновой картинки и ролика должно совпадать. Внутренних полей вписывания (fitи т. п.) у объекта нет — неизвестные ключи молча игнорируются. - Субтитры (
caption) — объектом:{"file_format": "srt", "style": "default"}(единственные поддерживаемые значения). Ссылку на srt-файл API сейчас не возвращает, в кадр субтитры не вжигаются — практической пользы от параметра пока нет. - Альтернатива голосу — готовая аудиодорожка. Передайте элемент
audio_urlвinput_references— модель липсинкует под неё,voice_idтогда не нужен. - Фото — только JPEG. Data URI с
image/pngпровайдер отклоняет ошибкойContent type not match image/png != image/jpeg— сконвертируйте изображение в JPEG заранее. - На фото должно быть различимое лицо — иначе провайдер вернёт ошибку
No face detected.
Базовые голоса:
| Голос | voice_id |
Язык | Пол |
|---|---|---|---|
| Cassidy | 16a09e4706f74997ba4ed05ea11470f6 |
английский | женский |
| Andrew | 6be73833ef9a4eb0aeee399b8fe9d62b |
английский | мужской |
| Amelia | 246cdbf530954380a62109f3107fce0d |
испанский | женский |
| Antonio | 707365599f8545d5b6ce7a32a20e9c93 |
испанский | мужской |
| Chloe | 4b1de1582d2c477485ad2e0c2717f0ff |
французский | женский |
| Thomas | 29b464727cc249f3bdf42f82562409f8 |
французский | мужской |
| Leonie | 5d25200b1d4442d6b7265a9ff5fad582 |
немецкий | женский |
| Otto | 0971fe1493314d1f9a43602cf4a3b210 |
немецкий | мужской |
| Kyoko | 926a3d25100b4687a80fc76ec8f2bf38 |
японский | женский |
| Satoshi | 662e1397965c484e8f65fa58c77effde |
японский | мужской |
| Kore | 80441555167a467e967ab9487d844a30 |
мультиязычный | женский |
| Orus | 3097f9a8fd3b4340b6bbe913177b378f |
мультиязычный | мужской |
{
"model": "heygen/avatar-iv",
"prompt": "Привет! Рады видеть вас на нашей платформе.",
"resolution": "720p",
"aspect_ratio": "9:16",
"input_references": [
{
"type": "image_url",
"image_url": { "url": "data:image/jpeg;base64,..." }
}
],
"provider": {
"options": {
"heygen": { "voice_id": "80441555167a467e967ab9487d844a30" }
}
}
}
Поддержка по моделям
Точный набор параметров и допустимых значений у каждой модели свой. Ниже — актуальный список видео-моделей RouterAI (обновляется автоматически из каталога): раскройте модель, чтобы увидеть её параметры и допустимые значения.
HappyHorse 1.0 — alibaba/happyhorse-1.0
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720, 960x720, 720x960, 1680x720, 720x1680, 1920x1080, 1080x1920, 1080x1080, 1440x1080, 1080x1440, 2520x1080, 1080x2520. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
HappyHorse 1.1 — alibaba/happyhorse-1.1
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720, 960x720, 720x960, 1680x720, 720x1680, 1920x1080, 1080x1920, 1080x1080, 1440x1080, 1080x1440, 2520x1080, 1080x2520. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
Wan 2.6 — alibaba/wan-2.6
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 5, 10. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 720x1280, 1920x1080. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
negative_prompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
enable_prompt_expansion | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
shot_type | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
audio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Wan 2.7 — alibaba/wan-2.7
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 1920x1080, 1080x1920, 720x720, 1080x1080, 960x720, 720x960, 1440x1080, 1080x1440. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
negative_prompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
prompt_extend | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
audio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
ratio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
last_image | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
video | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
videos | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
images | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Wan 3.0 — alibaba/wan-3.0
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p, 1080p. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
Wan 3.0 Prime — alibaba/wan-3.0-prime
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p, 1080p. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
FLUX.3 Video — black-forest-labs/flux-3-video
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект) и исходное видео. Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
safety_tolerance | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
version | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
FLUX Video Edit — black-forest-labs/flux-video-edit
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
safety_tolerance | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
FLUX Video Upscale — black-forest-labs/flux-video-upscale
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
input_references | array | — | Референсы: исходное видео. Массив объектов {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64. |
upscale_factor | number | 2 | Кратность увеличения разрешения: от 1.5 до 3. |
creativity | integer | 1 | Режим обработки: 0 — точное увеличение исходника, 1 — креативная дорисовка деталей (тариф выше, см. цены выше). |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
safety_tolerance | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Seedance 1.5 Pro — bytedance/seedance-1-5-pro
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 9:21, 4:3, 16:9, 21:9. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 480x1120, 640x480, 720x720, 720x960, 720x1280, 720x1680, 854x480, 960x720, 1080x1080, 1080x1440, 1080x1920, 1080x2520, 1120x480, 1280x720, 1440x1080, 1680x720, 1920x1080, 2520x1080. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
req_key | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Seedance 2.0 — bytedance/seedance-2.0
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p, 1080p, 4K. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720, 1080x1080, 1080x1440, 1080x1920, 1440x1080, 1920x1080, 2520x1080, 3840x2160, 2160x3840, 2160x2160, 2880x2160, 2160x2880, 5040x2160. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. Не сочетаются с frame_images: в одном запросе с кадрами референсы (включая аудио липсинка) игнорируются. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
req_key | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Seedance 2.0 Fast — bytedance/seedance-2.0-fast
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. Не сочетаются с frame_images: в одном запросе с кадрами референсы (включая аудио липсинка) игнорируются. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
req_key | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Seedance 2.0 Mini — bytedance/seedance-2.0-mini
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. Не сочетаются с frame_images: в одном запросе с кадрами референсы (включая аудио липсинка) игнорируются. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
req_key | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
return_last_frame | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Seedance 2.5 — bytedance/seedance-2.5
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 854x480, 752x560, 640x640, 560x752, 480x854, 992x432, 1280x720, 1112x834, 960x960, 834x1112, 720x1280, 1470x630. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. Не сочетаются с frame_images: в одном запросе с кадрами референсы (включая аудио липсинка) игнорируются. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
req_key | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
output_format | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Veo 3.1 — google/veo-3.1
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 6, 8. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p, 4K. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280, 3840x2160, 2160x3840. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
personGeneration | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
aspectRatio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
negativePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
conditioningScale | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
enhancePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Veo 3.1 Fast — google/veo-3.1-fast
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 6, 8. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p, 4K. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280, 3840x2160, 2160x3840. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
personGeneration | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
aspectRatio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
negativePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
conditioningScale | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
enhancePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Veo 3.1 Lite — google/veo-3.1-lite
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 8, 4, 6. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 1920x1080, 1080x1920. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
personGeneration | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
aspectRatio | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
negativePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
conditioningScale | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
enhancePrompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Avatar IV — heygen/avatar-iv
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект) и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
voice_id | — | Голос озвучки текста prompt. Обязателен при текстовом prompt (альтернатива — готовая аудиодорожка audio_url в input_references, тогда voice_id не нужен); передаётся только во вложенном объекте {"provider": {"options": {"heygen": {"voice_id": …}}}} — в корне тела не работает. Базовые голоса: Cassidy — 16a09e4706f74997ba4ed05ea11470f6 (английский, женский); Andrew — 6be73833ef9a4eb0aeee399b8fe9d62b (английский, мужской); Amelia — 246cdbf530954380a62109f3107fce0d (испанский, женский); Antonio — 707365599f8545d5b6ce7a32a20e9c93 (испанский, мужской); Chloe — 4b1de1582d2c477485ad2e0c2717f0ff (французский, женский); Thomas — 29b464727cc249f3bdf42f82562409f8 (французский, мужской); Leonie — 5d25200b1d4442d6b7265a9ff5fad582 (немецкий, женский); Otto — 0971fe1493314d1f9a43602cf4a3b210 (немецкий, мужской); Kyoko — 926a3d25100b4687a80fc76ec8f2bf38 (японский, женский); Satoshi — 662e1397965c484e8f65fa58c77effde (японский, мужской); Kore — 80441555167a467e967ab9487d844a30 (мультиязычный, женский); Orus — 3097f9a8fd3b4340b6bbe913177b378f (мультиязычный, мужской). Для русской речи подходят мультиязычные Kore и Orus. Полный каталог — GET /v3/voices HeyGen (нужен ключ HeyGen). | |
voice_settings | — | Настройки голоса озвучки: объект {"speed": 0.5–1.5, "pitch": −50…50, "volume": 0–1}, все поля необязательны. Замедление речи удлиняет ролик — и пропорционально его посекундную стоимость. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"voice_settings": …}}}}. | |
motion_prompt | — | Текстовое описание движения и мимики персонажа. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"motion_prompt": …}}}}. | |
expressiveness | — | Выразительность анимации персонажа: "low", "medium" или "high". Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"expressiveness": …}}}}. | |
fit | — | Способ вписывания исходного фото в кадр: "cover" — заполнить с обрезкой (поведение по умолчанию), "contain" — вписать целиком с полями. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"fit": …}}}}. | |
remove_background | — | Убрать фон исходного фото; в паре с background — заменить на свой. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"remove_background": …}}}}. | |
background | — | Фон видео: объект {"type": "color", "value": "#RRGGBB"} либо {"type": "image", "url": …} (data-URI не принимается). Работает только вместе с remove_background: true — без него игнорируется. Фон-картинка накладывается в границах исходного фото и растягивается под его пропорции; область кадра за пределами фото заливается белым — для полного покрытия соотношение сторон фото, фона и ролика должно совпадать. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"background": …}}}}. | |
caption | — | Субтитры произносимого текста: объект {"file_format": "srt", "style": "default"} (единственные поддерживаемые значения). Ссылку на srt-файл API сейчас не возвращает, в кадр субтитры не вжигаются. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"caption": …}}}}. | |
title | — | Название ролика. Опция HeyGen Avatar IV — передаётся вложенно: {"provider": {"options": {"heygen": {"title": …}}}}. |
Kling: Video v3.0 Pro — kwaivgi/kling-v3.0-pro
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
negative_prompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
cfg_scale | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Kling: Video v3.0 Standard — kwaivgi/kling-v3.0-std
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
negative_prompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
cfg_scale | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Kling: Video O1 — kwaivgi/kling-video-o1
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 5, 10. |
resolution | string | — | Разрешение видео. Доступные значения: 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
negative_prompt | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Hailuo 2.3 — minimax/hailuo-2.3
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 6, 10. |
resolution | string | — | Разрешение видео. Доступные значения: 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1920x1080. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
prompt_optimizer | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
fast_pretreatment | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
H3 — minimax/hailuo-3
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 2K. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
aigc_watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
H3 Max — minimax/hailuo-3-max
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 768p, 480p. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
aigc_watermark | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Sora 2 Pro — openai/sora-2-pro
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 4, 8, 12, 16, 20. |
resolution | string | — | Разрешение видео. Доступные значения: 720p, 1080p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
generate_audio | boolean | true | Генерировать ли аудиодорожку. |
quality | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. | |
style | — | Провайдер-специфичный параметр модели; передаётся провайдеру как есть. |
Aleph 2.0 — runway/aleph-2
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 21:9. |
input_references | array | — | Референсы: исходное видео. Массив объектов {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
contentModeration | — | Настройки модерации контента (Runway). Передаётся провайдеру как есть. |
Gen-4.5 — runway/gen-4.5
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10. |
resolution | string | — | Разрешение видео. Доступные значения: 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
seed | integer | — | Если задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат. |
generate_audio | boolean | false | Генерировать ли аудиодорожку. |
contentModeration | — | Настройки модерации контента (Runway). Передаётся провайдеру как есть. |
Grok Imagine Video — x-ai/grok-imagine-video
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p. |
size | string | — | Размер кадра в пикселях (ширина×высота). Доступные значения: 854x480, 1280x720, 480x854, 720x1280, 480x480, 720x720, 640x480, 960x720, 480x640, 720x960, 720x480, 1080x720, 480x720, 720x1080. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
input_references | array | — | Референсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64. |
Grok Imagine Video 1.5 — x-ai/grok-imagine-video-1.5
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
aspect_ratio | string | — | Соотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3. |
duration | integer | — | Длительность видео в секундах. Доступные значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. |
resolution | string | — | Разрешение видео. Доступные значения: 480p, 720p, 1080p. |
frame_images | array | — | Опорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр. |
Шаг 2. Поллинг статуса
Опрашивайте статус задачи, пока он не станет терминальным:
curl https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC \
-H "Authorization: Bearer $ROUTERAI_API_KEY"
Статусы:
| Статус | Тип | Значение |
|---|---|---|
pending |
промежуточный | задача создана |
in_progress |
промежуточный | видео генерируется |
completed |
успех | готово — можно скачивать |
failed |
терминальная ошибка | ошибка генерации (см. поле error) |
cancelled |
терминальная ошибка | задача отменена |
expired |
терминальная ошибка | срок хранения результата истёк |
Ответ для готовой задачи (completed):
{
"id": "Cq4gNzomlZDrNyy72GHC",
"status": "completed",
"polling_url": "https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC",
"unsigned_urls": [
"https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC/content?index=0"
],
"usage": { "cost": 18.2 }
}
unsigned_urls — ссылки на content-эндпоинт RouterAI; по ним скачивается готовое видео (см. Шаг 4).
Шаг 3. Webhook о готовности
Если при создании указан callback_url, RouterAI отправит на него POST с JSON-телом, когда задача достигнет терминального статуса (completed, failed, expired, cancelled). Это избавляет от постоянного опроса статуса.
Что приходит
{
"type": "video.generation.completed",
"created_at": "2026-01-01T00:00:00.000Z",
"data": {
"id": "Cq4gNzomlZDrNyy72GHC",
"status": "completed",
"generation_id": "gen-abc123",
"model": "x-ai/grok-imagine-video",
"unsigned_urls": [
"https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC/content?index=0"
],
"usage": { "cost": 18.2 }
}
}
type— тип события, одно из:video.generation.completedvideo.generation.failedvideo.generation.expiredvideo.generation.cancelled
data.unsigned_urls— ссылки на content-эндпоинт RouterAI (только приcompleted).data.usage.cost— стоимость в рублях (только приcompleted).data.error— текст ошибки (дляfailed/expired).
Заголовки запроса:
| Заголовок | Значение |
|---|---|
Content-Type |
application/json |
X-RouterAI-Timestamp |
момент отправки, unix-секунды |
X-RouterAI-Signature |
HMAC-SHA256 в hex (см. ниже) |
Подпись
Подпись считается над строкой "<timestamp>.<body>", где body — сырое тело запроса (та же JSON-строка, что пришла):
signature = HMAC_SHA256(secret, "<X-RouterAI-Timestamp>.<raw_body>")
Особенность RouterAI: отдельный секрет не нужен — секретом служит SHA-256-дайджест вашего API-ключа в hex. То есть вы вычисляете секрет прямо из своего ключа:
secret = sha256_hex(ROUTERAI_API_KEY)
Так подпись можно проверить, имея только свой API-ключ. Запрос подписывается ключом, которым была создана задача.
Секрет вычисляется от текущего значения ключа в момент доставки webhook. Если вы перевыпустили ключ, пока задача выполнялась, webhook будет подписан секретом от нового токена — проверяйте подпись, пересчитав секрет от актуального ключа.
Как проверить подпись
- Прочитайте
X-RouterAI-Timestampи сырое тело запроса (до парсинга JSON). - Вычислите
secret = sha256_hex(api_key). - Пересчитайте
HMAC_SHA256(secret, "<ts>.<raw_body>")и сравните сX-RouterAI-Signatureв постоянном времени (constant-time), не обычным==. - Проверьте свежесть
timestamp(например, ±5 минут) — защита от повторного воспроизведения (replay).
Node.js (Express)
const crypto = require("crypto");
// важно получить сырое тело: app.use(express.raw({ type: "application/json" }))
app.post("/hooks/routerai-video", (req, res) => {
const apiKey = process.env.ROUTERAI_API_KEY;
const ts = req.get("X-RouterAI-Timestamp");
const sig = req.get("X-RouterAI-Signature");
const rawBody = req.body; // Buffer
// свежесть метки времени (анти-replay)
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) {
return res.status(401).end();
}
// секрет = sha256(api_key) в hex
const secret = crypto.createHash("sha256").update(apiKey).digest("hex");
const expected = crypto
.createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
const ok =
sig &&
sig.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
if (!ok) return res.status(401).end();
const event = JSON.parse(rawBody.toString("utf8"));
// ... ваша логика: event.type, event.data.unsigned_urls ...
res.status(200).end();
});
Python (Flask)
import os, hmac, hashlib, time
from flask import request, abort
@app.post("/hooks/routerai-video")
def routerai_video():
api_key = os.environ["ROUTERAI_API_KEY"]
ts = request.headers.get("X-RouterAI-Timestamp", "")
sig = request.headers.get("X-RouterAI-Signature", "")
raw = request.get_data() # bytes, сырое тело
if abs(time.time() - int(ts)) > 300:
abort(401)
# секрет = sha256(api_key) в hex
secret = hashlib.sha256(api_key.encode()).hexdigest()
expected = hmac.new(secret.encode(), f"{ts}.".encode() + raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, expected):
abort(401)
event = request.get_json()
# ... ваша логика: event["type"], event["data"]["unsigned_urls"] ...
return "", 200
Доставка и ретраи
- Доставка считается успешной при ответе HTTP 2xx. Любой другой код или таймаут — неуспех.
- При неуспехе RouterAI повторяет отправку: до 10 попыток с экспоненциальной задержкой (несколько часов суммарно).
- Бюджет одной попытки — около 8 секунд (на установку соединения и ответ).
- Endpoint должен быть публично доступен — RouterAI не подключается к адресам внутри приватных сетей (защита от SSRF).
Шаг 4. Скачивание видео
Когда статус completed, скачайте готовое видео через content-эндпоинт. index — позиция ссылки в массиве unsigned_urls (по умолчанию 0):
curl "https://routerai.ru/api/v1/videos/Cq4gNzomlZDrNyy72GHC/content?index=0" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-o video.mp4
Эндпоинт отдаёт бинарный mp4. Если модель вернула несколько видео, в unsigned_urls будет несколько ссылок — скачайте каждую, меняя index (?index=1, ?index=2, …).
Лимит одновременных генераций
Одновременно у одного аккаунта может выполняться ограниченное число незавершённых видео-задач: базовый лимит — 3, он автоматически растёт с балансом (примерно один дополнительный слот на каждые 1000 ₽ баланса, но не более 50). При превышении POST /v1/videos отвечает 429 Too many active video generations — дождитесь завершения текущих задач и повторите запрос.
Активной считается задача, ещё не перешедшая в терминальный статус (completed/failed/cancelled/expired). Отклонённый провайдером или валидацией запрос слот не занимает. Если задача не получила терминального статуса от провайдера, она перестаёт учитываться в лимите через 24 часа после создания.
Устранение неполадок
429 Too many active video generations?
- Достигнут лимит одновременных незавершённых задач (см. Лимит одновременных генераций). Дождитесь завершения текущих генераций — опросите их статус через
GET /v1/videos/{id}.
Не приходит webhook?
- Убедитесь, что
callback_url— валидный HTTPS-адрес и публично доступен (приватные сети блокируются). - Endpoint должен отвечать 2xx; при ошибках/таймаутах RouterAI ретраит, но после исчерпания попыток перестаёт.
- Webhook отправляется только при терминальном статусе (
completed/failed/expired/cancelled).
Подпись не сходится?
- Считайте HMAC по сырым байтам тела, без
JSON.parse+ пересериализации. - Секрет — это
sha256_hex(api_key)именно того ключа, которым создавалась задача, а не сам ключ и не отдельный секрет. - Подписываемая строка —
"<X-RouterAI-Timestamp>.<raw_body>"(timestamp, точка, тело).
Статус failed или expired?
- Смотрите
data.error(в webhook) или полеerrorв ответе поллинга. expiredозначает, что срок хранения результата истёк — создайте задачу заново.