# Veo 3.1 — /videos/generations

Асинхронная генерация видео 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 мин на клип, оплата за клип, при ошибке — полный возврат.

**Эндпоинт:** `POST https://nezhagate.com/v1/videos/generations`

## Аутентификация
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## Тело запроса
| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `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 — чтобы запустить режим «изображение в видео»; не указывайте для режима текст в видео. |

## Пример запроса
```bash
# 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'
```

## Ответ
```json
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "queued",
  "model": "veo-3.1"
}
```

## Async video job (submit -> poll)
One model; params pick the type: tier=lite/fast/quality, resolution=720p/1080p/4k (1080p/4k need quality), size=16:9/9:16, duration=4s/6s/8s; add an image param for image-to-video (first frame). Returns HTTP 202 + a job id; poll GET /v1/videos/jobs/{id} until status=succeeded, result in data[0].url (a re-hosted mp4, ~1-2 min). Billed per clip, fully refunded on failure.

```bash
# submit (text-to-video)
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 at sunset", "tier": "quality", "resolution": "1080p", "size": "16:9", "duration": "8s"}'
# image-to-video: also pass an image param (first-frame ref: URL / data: / base64)
# poll
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
```