Асинхронная генерация видео Veo 3.1: один эндпоинт, тип определяется параметрами — не указывайте image для варианта «текст в видео», укажите image (первый кадр) для варианта «изображение в видео»; tier=lite/fast/quality, resolution=720p/1080p/4k (1080p/4k требуют quality), size=16:9/9:16, duration=4s/6s/8s. Возвращает job id (HTTP 202); опрашивайте GET /v1/videos/jobs/{id} до status=succeeded, результат — в data[0].url (перезалитый mp4). ~1-2 мин на клип, оплата за клип, при ошибке — полный возврат.
Попробовать в песочнице →Аутентификация
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
Чтобы начать, создайте API-ключ в консоли.
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| model | string | Да | Model ID, here veo-3.1. |
| prompt | string | Да | Текстовый промпт с описанием видео. |
| tier | string | Нет | Уровень качества: lite (по умолчанию, самый дешёвый) / fast / quality. |
| resolution | string | Нет | Разрешение: 720p (по умолчанию) / 1080p (только для уровня quality; у Lite/Fast — 720p). 4K временно недоступно. |
| size | string | Нет | Ориентация: 16:9 (альбомная, по умолчанию) / 9:16 (портретная). |
| duration | string | Нет | Длительность: 4s / 6s / 8s (по умолчанию 8s). |
| image | string | Нет | Изображение в видео: укажите референсное изображение (используется как первый кадр) — публичный URL, data: URI или base64 — чтобы запустить режим «изображение в видео»; не указывайте для режима текст в видео. |
Пример запроса
# 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": "veo-3.1", "prompt": "a cat surfing a wave at sunset", "tier": "quality", "resolution": "1080p", "size": "16:9", "duration": "8s"}'
# image-to-video: also pass "image": "https://example.com/first-frame.png"
# 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'Ответ
{
"id": "img_3f9a...c2",
"object": "video.generation.job",
"status": "queued",
"model": "veo-3.1"
}Асинхронная видеозадача (отправка → опрос)
Единая модель; тип выбирается параметрами: tier=lite/fast/quality, resolution=720p/1080p/4k (для 1080p/4k нужен quality), size=16:9/9:16, duration=4s/6s/8s; для варианта «изображение в видео» добавьте параметр image (референс первого кадра). В ответ сразу приходит HTTP 202 и id задачи; опрашивайте, пока status не станет succeeded — результат будет в data[0].url (переразмещённый mp4, ~1-2 мин).
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "veo-3.1", "prompt": "кот занимается сёрфингом на закате", "tier": "quality", "resolution": "1080p", "size": "16:9", "duration": "8s"}'{ "id": "img_3f9a...c2", "object": "video.generation.job", "status": "queued", "model": "veo-3.1" }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": "veo-3.1",
"data": [{ "url": "https://img.nezhagate.com/i/9f86d081a8....mp4" }]
}🕑 data[0].url — это ссылка на наш хостинг изображений; она хранится 60 дней, а затем автоматически удаляется. Чтобы продолжать использовать изображение, скачайте его и сохраните в своём хранилище или CDN.
Тарификация за клип целиком, при сбое — полный возврат; неудачный или прерванный по тайм-ауту рендер автоматически возвращает зарезервированные кредиты.
Коды ошибок
Каждое тело ошибки содержит error.message / error.type / error.code / error.param — ветвите логику по code; полный список — в руководстве по интеграции.
| HTTP | code | Описание |
|---|---|---|
| 401 | invalid_api_key | API-ключ отсутствует или недействителен |
| 402 | insufficient_quota | Недостаточно средств на балансе или превышена квота ключа |
| 400 | invalid_request | Неподдерживаемая модель или параметр |
| 429 | rate_limit_exceeded | Лимит запросов у провайдера |
| 502 | upstream_error | Все маршруты к провайдерам не сработали |