Генерация видео
Асинхронный API для Text-to-Video и Image-to-Video генерации на базе моделей Kling AI, WanX, MiniMax, Grok и Seedance. Запуск задачи, опрос готовности и скачивание MP4.
01
Модели и возможности
Поддерживаемые модели, разрешения, длительность, поддержка звука и цены.
| Модель и вендор | Режим | Длительность | Разрешение и формат | Звук / Аудио | Референсы | Тариф |
|---|---|---|---|---|---|---|
kling-3.0Kling AI | Text-to-Video Image-to-Video | 3–15 сек | 720p, 1080p16:9, 9:16 (до 1080p) | Родной AI-звукsettings.audio: "native" | До 2 фотоfirst_frame, last_frame | $0.14 / сек |
kling-3.0-omniKling AI | T2V, Multi-ref, I2V | 3–15 сек | 720p, 1080p16:9, 9:16 (до 1080p) | Родной AI-звукsettings.audio: "native" | До 4 фотопервый/последний + 3 референса | $0.145 / сек |
wan3.0-t2vAlibaba (WanX) | Text-to-Video | 2–30 сек | 480p, 720p, 1080p16:9, 9:16 | Без звука | — | $0.038 / сек |
wan3.0-i2vAlibaba (WanX) | Image-to-Video | 2–30 сек | 480p, 720p, 1080p16:9, 9:16 | Без звука | 1 фотоfirst_frame (начало) | $0.038 / сек |
wan3.0-prime-t2vAlibaba (WanX Prime) | Prime Text-to-Video | 2–30 сек | 480p, 720p, 1080p16:9, 9:16 | Без звука | — | $0.044 / сек |
wan3.0-prime-i2vAlibaba (WanX Prime) | Prime Image-to-Video | 2–30 сек | 480p, 720p, 1080p16:9, 9:16 | Без звука | 1 фотоfirst_frame (начало) | $0.044 / сек |
minimax_h3MiniMax (Hailuo H3) | Мультимодальный T2V/I2V | 4–15 сек(по умолч. 5) | 480p, 768p, 1080p16:9, 9:16, 1:1, 3:4, 4:3, 21:9 | Аудио-референсtype: "audio" | До 9 фото, 3 видео, 3 аудио | $0.024 / сек |
grok-imagine-video-1.5xAI (Grok) | Text-to-Video, I2V | 6–15 сек(по умолч. 6) | 480p, 720p16:9, 9:16, 1:1 | Без звука | До 7 фотопервый/последний + референсы | $0.180 / ген |
seedance2.5-01-720ByteDance (Seedance) | Длинное видео (Text/Multi-ref) | 30 сек(фиксированно) | 720p16:9, 9:16, 1:1, 3:4, 4:3, 21:9 | Без звука | До 9 фото | $0.480 / ген |
02
Жизненный цикл задачи
Генерация видео выполняется асинхронно в три этапа.
- Создание задачи (
POST /v1/videos): запрос валидирует параметры, рассчитывает стоимость и холдирует баланс. Возвращается JSON сid(например,task_01jvideo_example), статусомqueued, а также ссылкамиpoll_urlиcontent_url. - Опрос готовности (
GET /v1/videos/{task_id}): клиент опрашивает статус каждые 10–15 секунд. Возможные статусы:queued,in_progress,completed,failed. При переходе вcompletedпроисходит окончательное списание средств. Если генерация не удалась, холд автоматически снимается без списания с баланса. - Скачивание видео (
GET /v1/videos/{task_id}/content): стриминг готового MP4 файла с поддержкой HTTP Range (код 206 Partial Content) для видеоплееров и потокового воспроизведения.
03
Управление звуком и аудио
Как указать синтез звука или передать референсный саундтрек.
- Kling AI (
kling-3.0,kling-3.0-omni): поддерживает синтез собственного звукового ряда (шум мотора, звуки природы, плеск воды, шаги, диалоги), согласованного с происходящим на видео. Для включения звука передайте в теле запроса:"settings": {"audio": "native"}.
По умолчанию звук выключен ("settings": {"audio": "off"}). Также поддерживается кинематографичный режим нескольких планов:"settings": {"multi_shot": true}. - MiniMax Hailuo H3 (
minimax_h3): поддерживает внешнее аудио-кондиционирование. Вы можете передать саундтрек или голосовую дорожку в массивеreferencesсtype: "audio":"references": [{"type": "audio", "url": "https://example.com/track.mp3"}]
(Поддерживается до 3 аудиофайлов длительностью 2–15 секунд, размер до 15 МБ). - Alibaba WanX, ByteDance Seedance, xAI Grok: генерируют видео без звуковой дорожки (тихий MP4). При необходимости аудиоряда рекомендуется выбирать Kling 3.0 со звуком или накладывать аудиодорожку на готовый ролик.
04
Параметры запроса
Поля тела запроса для POST /v1/videos.
| Параметр | Тип | Описание |
|---|---|---|
model | string | Обязательное. ID видеомодели из каталога. |
prompt | string | Текстовое описание сцены, движений объектов и камеры (обязательно для Text-to-Video). |
seconds | integer | Длительность видео в секундах. Kling: 3–15; WanX: 2–30; MiniMax: 4–15 (умолч. 5); Grok: 6–15 (умолч. 6); Seedance: 30 (фиксированно). |
size / resolution | string | Разрешение видео: 480p, 720p, 768p, 1080p или точные размеры (1280x720, 1920x1080). |
aspect_ratio / ratio | string | Соотношение сторон: 16:9 (ландшафт), 9:16 (портрет/Reels/Shorts), 1:1, 3:4, 4:3, 21:9. |
settings | object | Настройки модели Kling AI: audio ("native" для AI-звука или "off") и multi_shot (boolean). |
references | array | Массив референсов. Объекты с полями type ("image", "audio"), role ("first_frame", "last_frame", "reference") и url. |
prompt_extend | boolean | Для моделей WanX: автоматическое расширение промпта моделью переписывания (по умолчанию false). |
05
Примеры запросов
Готовые примеры для cURL и Python.
bash
curl https://api.gateyourway.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gyw-sk-YOUR_KEY" \
-d '{
"model": "kling-3.0",
"prompt": "A cinematic aerial shot of ocean waves crashing on dark rocks at sunset with seagulls flying",
"seconds": 5,
"size": "1920x1080",
"settings": {
"audio": "native",
"multi_shot": false
}
}'json
{
"id": "task_01jvideo_example",
"status": "queued",
"model": "kling-3.0",
"seconds": 5,
"poll_url": "/v1/videos/task_01jvideo_example",
"content_url": "/v1/videos/task_01jvideo_example/content"
}bash
curl https://api.gateyourway.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gyw-sk-YOUR_KEY" \
-d '{
"model": "wan3.0-i2v",
"prompt": "The camera slowly zooms in as gentle wind blows through cherry blossom petals",
"seconds": 5,
"size": "720p",
"ratio": "16:9",
"prompt_extend": false,
"references": [
{
"type": "image",
"role": "first_frame",
"url": "https://example.com/start_frame.jpg"
}
]
}'bash
curl https://api.gateyourway.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gyw-sk-YOUR_KEY" \
-d '{
"model": "minimax_h3",
"prompt": "A cyberpunk street market in neo-Tokyo with rain reflections and neon signs",
"seconds": 6,
"size": "768p",
"aspect_ratio": "16:9",
"references": [
{
"type": "audio",
"url": "https://example.com/synthwave_bgm.mp3"
}
]
}'bash
# 1. Проверка статуса (поллинг раз в 10-15 секунд):
curl https://api.gateyourway.com/v1/videos/task_01jvideo_example \
-H "Authorization: Bearer gyw-sk-YOUR_KEY"
# Ответ при готовности:
# {
# "id": "task_01jvideo_example",
# "status": "completed",
# "content_url": "/v1/videos/task_01jvideo_example/content"
# }
# 2. Скачивание готового MP4:
curl -L https://api.gateyourway.com/v1/videos/task_01jvideo_example/content \
-H "Authorization: Bearer gyw-sk-YOUR_KEY" \
--output video.mp4python
import os
from pathlib import Path
import time
import requests
api_base = "https://api.gateyourway.com/v1"
user_key = os.getenv("GATEYOURWAY_API_KEY", "gyw-sk-YOUR_KEY")
req_headers = {
"Authorization": f"Bearer {user_key}",
"Content-Type": "application/json",
}
# 1. Запуск генерации видео с родным звуком (Kling 3.0)
payload = {
"model": "kling-3.0",
"prompt": "A vintage sports car driving fast along a scenic coastal highway at sunset",
"seconds": 5,
"size": "1920x1080",
"settings": {
"audio": "native",
"multi_shot": False,
},
}
resp = requests.post(f"{api_base}/videos", json=payload, headers=req_headers)
resp.raise_for_status()
task = resp.json()
task_id = str(task["id"])
print(f"Task created: {task_id}, status: {task.get('status')}")
# 2. Опрос статуса задачи
while True:
time.sleep(10)
poll_resp = requests.get(f"{api_base}/videos/{task_id}", headers=req_headers)
poll_resp.raise_for_status()
data = poll_resp.json()
status = data.get("status")
print(f"Current status: {status}")
if status == "completed":
break
elif status == "failed":
raise RuntimeError(f"Generation failed: {data.get('error')}")
# 3. Скачивание готового MP4 файла
print("Downloading MP4 video...")
video_resp = requests.get(f"{api_base}/videos/{task_id}/content", headers=req_headers)
video_resp.raise_for_status()
Path("video.mp4").write_bytes(video_resp.content)
print("Saved to video.mp4 successfully!")