NezhaGateNezhaGate
POST https://nezhagate.com/v1/videos/generations

Генерация видео Gemini Omni Flash (асинхронно): видеомодель нового поколения от Google. Один эндпоинт, режим выбирают параметры — без изображения это видео из текста, одно изображение (image) становится первым кадром, два (images) — первым и последним кадром, а image_role=reference превращает 1–3 изображения в референсы объекта или стиля. duration=6 / 8 / 10 секунд, resolution=720P / 1080P, size=16:9 / 9:16, нативный звук; модель хорошо держит раскадровку из промпта на несколько планов. Возвращает id задачи (HTTP 202); опрашивайте GET /v1/videos/jobs/{id} до status=succeeded, результат в data[0].url (перезалитый mp4, хранится 60 дней). Оплата по секундам — $0.05/с ($0.30 / $0.40 / $0.50), одинаково для обоих разрешений; при ошибке — полный возврат.

Попробовать в песочнице →

Аутентификация

Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Чтобы начать, создайте API-ключ в консоли.

Тело запроса

ПараметрТипОбязательныйОписание
model string Да Идентификатор модели, здесь gemini-omni-flash.
prompt string Да Текстовый промпт с описанием видео, камеры и движения, до 20000 символов (китайский и английский считаются одинаково). Если переданы референсные изображения, на них можно ссылаться в промпте как @Image1 / @Image2.
duration integer Нет Длительность: 6 / 8 / 10 секунд (по умолчанию 6); псевдоним seconds. Оплата по секундам — $0.05/с, то есть $0.30 / $0.40 / $0.50.
resolution string Нет Разрешение: 720P / 1080P (по умолчанию 720P), по одной цене.
size string Нет Соотношение сторон: 16:9 (по умолчанию) / 9:16; псевдоним aspect_ratio. Другие соотношения отклоняются.
audio boolean Нет Эта модель всегда генерирует нативный звук; параметр можно не указывать (false отклоняется).
image string Нет Одно референсное изображение (публичный URL, data: URI или base64): видео из изображения, оно становится первым кадром. Без изображений — видео из текста.
images array Нет До 3 изображений (каждое до 16 МБ, jpg / png / webp / gif). image_role=first_frame (по умолчанию для 1–2 изображений): первое изображение — первый кадр, второе — последний. image_role=reference: 1–3 референса объекта или стиля, которые не используются как кадры; при 3 изображениях по умолчанию reference. Псевдоним reference_images (означает reference). Превышение лимита отклоняется, а не обрезается.
image_role string Нет Как используются изображения: first_frame (первый кадр; при двух изображениях второе становится последним кадром) или reference (референсы объекта или стиля). Если не указано: 1–2 изображения — first_frame, 3 — reference.

Пример запроса

cURL
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "gemini-omni-flash", "prompt": "a paper crane unfolding over a misty lake", "duration": 8, "resolution": "720P", "size": "16:9"}'
# first frame: also pass  "image": "https://example.com/first-frame.png"
# first + last frame: "images": ["https://example.com/first.png", "https://example.com/last.png"]
# 1-3 references: "images": [...], "image_role": "reference"
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'

Ответ

200 · JSON
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "queued",
  "model": "gemini-omni-flash"
}

Асинхронная видеозадача (отправка → опрос)

Отправка запроса сразу возвращает HTTP 202 и id задачи; опрашивайте, пока status не станет succeeded, и считайте data[0].url (ссылку на mp4). Допустимые значения duration, resolution и size — в таблице параметров выше; для варианта «изображение в видео» добавьте параметр image.

curl · отправка (текст в видео)
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "gemini-omni-flash", "prompt": "кот занимается сёрфингом на закате", "size": "16:9"}'
Изображение в видео: дополнительно передайте параметр image (референс первого кадра: публичный URL, data: URI или base64).
Первый и последний кадр: передайте два изображения в images (сначала первый, затем последний). Референсы: передайте 1–3 изображения с "image_role": "reference" — люди или стиль с них появятся в видео, но не станут кадром.
Пример ответа
{ "id": "img_3f9a...c2", "object": "video.generation.job", "status": "queued", "model": "gemini-omni-flash" }
curl · опрос
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
Пример ответа
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "succeeded",
  "model": "gemini-omni-flash",
  "data": [{ "url": "https://img.nezhagate.com/i/9f86d081a8....mp4" }]
}

🕑 data[0].url — это ссылка на наш хостинг изображений; она хранится 60 дней, а затем автоматически удаляется. Чтобы продолжать использовать изображение, скачайте его и сохраните в своём хранилище или CDN.

Тарификация посекундная ($0.05/s x duration); резерв в точности равен итоговому списанию, а неудачный или прерванный по тайм-ауту рендер автоматически возвращается в полном объёме.

Коды ошибок

Каждое тело ошибки содержит error.message / error.type / error.code / error.param — ветвите логику по code; полный список — в руководстве по интеграции.

HTTPcodeОписание
401invalid_api_keyAPI-ключ отсутствует или недействителен
402insufficient_quotaНедостаточно средств на балансе или превышена квота ключа
400invalid_requestНеподдерживаемая модель или параметр
429rate_limit_exceededЛимит запросов у провайдера
502upstream_errorВсе маршруты к провайдерам не сработали