Загрузка...

Генерация видео

Генерируйте видео из текстовых промптов через RouterAI API.

RouterAI поддерживает генерацию видео через модели, у которых "video" указан в output_modalities. Генерация асинхронная: вы создаёте задачу, а готовое видео получаете позже — опросом статуса (polling) или через webhook на ваш callback_url.

Полный жизненный цикл:

  1. СозданиеPOST /api/v1/videos возвращает id задачи и polling_url.
  2. Ожидание — опрашивайте статус (GET /api/v1/videos/{id}) или получите webhook, если указали callback_url.
  3. Скачивание — когда статус 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_typefirst_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.

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/voices HeyGen (нужен ключ 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" }
    }
  }
}
Не передавайте `frame_images` и `input_references` в одном запросе: какое из полей возьмёт приоритет — зависит от модели. Выберите один режим. Поддержка обоих полей тоже зависит от модели — сверьтесь со списком ниже.

Поддержка по моделям

Точный набор параметров и допустимых значений у каждой модели свой. Ниже — актуальный список видео-моделей RouterAI (обновляется автоматически из каталога): раскройте модель, чтобы увидеть её параметры и допустимые значения.

HappyHorse 1.0alibaba/happyhorse-1.0

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21.
durationintegerДлительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720, 960x720, 720x960, 1680x720, 720x1680, 1920x1080, 1080x1920, 1080x1080, 1440x1080, 1080x1440, 2520x1080, 1080x2520.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
HappyHorse 1.1alibaba/happyhorse-1.1

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21.
durationintegerДлительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720, 960x720, 720x960, 1680x720, 720x1680, 1920x1080, 1080x1920, 1080x1080, 1440x1080, 1080x1440, 2520x1080, 1080x2520.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
Wan 2.6alibaba/wan-2.6

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 5, 10.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 720x1280, 1920x1080.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
negative_promptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
enable_prompt_expansionПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
shot_typeПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
audioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Wan 2.7alibaba/wan-2.7

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4.
durationintegerДлительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 1920x1080, 1080x1920, 720x720, 1080x1080, 960x720, 720x960, 1440x1080, 1080x1440.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
negative_promptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
prompt_extendПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
audioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
ratioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
last_imageПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
videoПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
videosПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
imagesПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Wan 3.0alibaba/wan-3.0

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 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.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p, 1080p.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
Wan 3.0 Primealibaba/wan-3.0-prime

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 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.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p, 1080p.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
FLUX.3 Videoblack-forest-labs/flux-3-video

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект) и исходное видео. Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
safety_toleranceПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
versionПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
FLUX Video Upscaleblack-forest-labs/flux-video-upscale

Страница модели

ПараметрТипПо умолчаниюОписание
input_referencesarrayРеференсы: исходное видео. Массив объектов {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64.
upscale_factornumber2Кратность увеличения разрешения: от 1.5 до 3.
creativityinteger1Режим обработки: 0 — точное увеличение исходника, 1 — креативная дорисовка деталей (тариф выше, см. цены выше).
generate_audiobooleanfalseГенерировать ли аудиодорожку.
safety_toleranceПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Seedance 1.5 Probytedance/seedance-1-5-pro

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 9:21, 4:3, 16:9, 21:9.
durationintegerДлительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 480x1120, 640x480, 720x720, 720x960, 720x1280, 720x1680, 854x480, 960x720, 1080x1080, 1080x1440, 1080x1920, 1080x2520, 1120x480, 1280x720, 1440x1080, 1680x720, 1920x1080, 2520x1080.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
req_keyПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Seedance 2.0bytedance/seedance-2.0

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21.
durationintegerДлительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p, 1080p, 4K.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 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_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
req_keyПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Seedance 2.0 Fastbytedance/seedance-2.0-fast

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21.
durationintegerДлительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
req_keyПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Seedance 2.0 Minibytedance/seedance-2.0-mini

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21.
durationintegerДлительность видео в секундах. Доступные значения: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
req_keyПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
return_last_frameПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Seedance 2.5bytedance/seedance-2.5

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9.
durationintegerДлительность видео в секундах. Доступные значения: 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.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 854x480, 752x560, 640x640, 560x752, 480x854, 992x432, 1280x720, 1112x834, 960x960, 834x1112, 720x1280, 1470x630.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
req_keyПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
output_formatПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Veo 3.1google/veo-3.1

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 4, 6, 8.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p, 4K.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280, 3840x2160, 2160x3840.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
personGenerationПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
aspectRatioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
negativePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
conditioningScaleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
enhancePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Veo 3.1 Fastgoogle/veo-3.1-fast

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 4, 6, 8.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p, 4K.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280, 3840x2160, 2160x3840.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
personGenerationПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
aspectRatioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
negativePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
conditioningScaleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
enhancePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Veo 3.1 Litegoogle/veo-3.1-lite

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 8, 4, 6.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 1920x1080, 1080x1920.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleantrueГенерировать ли аудиодорожку.
personGenerationПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
aspectRatioПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
negativePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
conditioningScaleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
enhancePromptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Avatar IVheygen/avatar-iv

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект) и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleanfalseГенерировать ли аудиодорожку.
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 Prokwaivgi/kling-v3.0-pro

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1.
durationintegerДлительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
negative_promptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
cfg_scaleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Kling: Video v3.0 Standardkwaivgi/kling-v3.0-std

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1.
durationintegerДлительность видео в секундах. Доступные значения: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
negative_promptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
cfg_scaleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Kling: Video O1kwaivgi/kling-video-o1

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1.
durationintegerДлительность видео в секундах. Доступные значения: 5, 10.
resolutionstringРазрешение видео. Доступные значения: 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280, 720x720.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
negative_promptПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Hailuo 2.3minimax/hailuo-2.3

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9.
durationintegerДлительность видео в секундах. Доступные значения: 6, 10.
resolutionstringРазрешение видео. Доступные значения: 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1920x1080.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleanfalseГенерировать ли аудиодорожку.
prompt_optimizerПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
fast_pretreatmentПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
H3minimax/hailuo-3

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 2K.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект), исходное видео и аудио (звуковая дорожка). Массив объектов {"type": "image_url", "image_url": {"url": …}} / {"type": "video_url", "video_url": {"url": …}} / {"type": "audio_url", "audio_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
aigc_watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
H3 Maxminimax/hailuo-3-max

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 768p, 480p.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр, последний кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleanfalseГенерировать ли аудиодорожку.
aigc_watermarkПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Sora 2 Proopenai/sora-2-pro

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 4, 8, 12, 16, 20.
resolutionstringРазрешение видео. Доступные значения: 720p, 1080p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 1080x1920, 1920x1080, 720x1280.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
generate_audiobooleantrueГенерировать ли аудиодорожку.
qualityПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
styleПровайдер-специфичный параметр модели; передаётся провайдеру как есть.
Aleph 2.0runway/aleph-2

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 21:9.
input_referencesarrayРеференсы: исходное видео. Массив объектов {"type": "video_url", "video_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleanfalseГенерировать ли аудиодорожку.
contentModerationНастройки модерации контента (Runway). Передаётся провайдеру как есть.
Gen-4.5runway/gen-4.5

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16.
durationintegerДлительность видео в секундах. Доступные значения: 2, 3, 4, 5, 6, 7, 8, 9, 10.
resolutionstringРазрешение видео. Доступные значения: 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 1280x720, 720x1280.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
seedintegerЕсли задан, инференс выполняется детерминированно — повторные запросы с тем же seed и параметрами должны давать одинаковый результат.
generate_audiobooleanfalseГенерировать ли аудиодорожку.
contentModerationНастройки модерации контента (Runway). Передаётся провайдеру как есть.
Grok Imagine Videox-ai/grok-imagine-video

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3.
durationintegerДлительность видео в секундах. Доступные значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p.
sizestringРазмер кадра в пикселях (ширина×высота). Доступные значения: 854x480, 1280x720, 480x854, 720x1280, 480x480, 720x720, 640x480, 960x720, 480x640, 720x960, 720x480, 1080x720, 480x720, 720x1080.
frame_imagesarrayОпорные кадры для image-to-video: массив объектов {"type": "image_url", "image_url": {"url": …}, "frame_type": "first_frame" | "last_frame"}. URL или data URI в base64. Поддерживаемые кадры: первый кадр.
input_referencesarrayРеференсы: изображения (персонаж, стиль, объект). Массив объектов {"type": "image_url", "image_url": {"url": …}}. URL или data URI в base64.
Grok Imagine Video 1.5x-ai/grok-imagine-video-1.5

Страница модели

ПараметрТипПо умолчаниюОписание
aspect_ratiostringСоотношение сторон видео. Доступные значения: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3.
durationintegerДлительность видео в секундах. Доступные значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
resolutionstringРазрешение видео. Доступные значения: 480p, 720p, 1080p.
frame_imagesarrayОпорные кадры для 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).

Вместо опроса в цикле удобнее указать `callback_url` при создании — тогда RouterAI сам уведомит вас о готовности, и поллинг не нужен.

Шаг 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.completed
    • video.generation.failed
    • video.generation.expired
    • video.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 будет подписан секретом от нового токена — проверяйте подпись, пересчитав секрет от актуального ключа.

Считайте HMAC именно по полученным байтам тела, а не по результату `JSON.parse` + повторной сериализации — иначе порядок ключей и пробелы изменят дайджест, и сверка ложно не сойдётся.

Как проверить подпись

  1. Прочитайте X-RouterAI-Timestamp и сырое тело запроса (до парсинга JSON).
  2. Вычислите secret = sha256_hex(api_key).
  3. Пересчитайте HMAC_SHA256(secret, "<ts>.<raw_body>") и сравните с X-RouterAI-Signature в постоянном времени (constant-time), не обычным ==.
  4. Проверьте свежесть 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, …).

Устранение неполадок

Не приходит 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 означает, что срок хранения результата истёк — создайте задачу заново.