> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VEO 3.1 Официальная генерация видео

> Полное руководство по официальному релей-каналу Google Veo 3.1: прозрачная передача запросов в Google AI Studio, тарификация за каждый запрос по $0.3 / $1.2, гибкая длительность 4 / 6 / 8 секунд, уровни 720p / 1080p / 4k и подключение без лишних действий — не требуется переключать группу или режим тарификации.

## Обзор

**VEO 3.1 Official** — это официальный релейный канал APIYI для Google Veo 3.1 — прозрачный passthrough к асинхронным эндпоинтам Google AI Studio `veo-3.1-generate-preview` / `veo-3.1-fast-generate-preview`, с идентичными upstream model IDs, response fields и ограничениями. **Тарификация по каждому запросу**, **доступен для вызова в группе `Default`** — самый простой в подключении официальный канал Veo 3.1 с качеством официального уровня, доступный сегодня.

<Note>
  **🎬 Основные особенности**: Прозрачный passthrough к Google AI Studio + нативный синхронизированный звук + гибкая длительность 4 / 6 / 8 секунд + три уровня разрешения (720p / 1080p / 4k) + тарификация от \$0.3 за запрос + **`Default` группа + оплата по каждому запросу или Priority Tokens с оплатой по мере использования** (отдельная группа не нужна; чистый Pay-as-you-go не поддерживается). **Подходит для рекламных коротких роликов, материалов для e-commerce, контента для соцсетей и демонстраций продукта**, когда требуется качество официального уровня при максимально простом подключении.
</Note>

<Warning>
  **⚠️ URL CDN не возвращается — вам нужно самостоятельно скачать MP4 stream**: В настоящее время канал **не возвращает какой-либо публичный / CDN URL для распространения**. После `status: "completed"` **вызовите `GET /v1/videos/{task_id}/content`, чтобы получить MP4 binary** и сохраните его в своем OSS / CDN перед выдачей конечным пользователям. Браузеры не могут обращаться к `/content` напрямую (требуется auth header). См. [Эндпоинты API](#api-endpoints) ниже.
</Warning>

<CardGroup cols={2}>
  <Card title="API преобразования текста в видео" icon="wand-sparkles" href="/ru/api-capabilities/veo-3-1-official/text-to-video">
    `POST /v1/videos`, генерируйте видео только по тексту — JSON-тело запроса, самый простой способ начать.
  </Card>

  <Card title="API преобразования изображения в видео" icon="image" href="/ru/api-capabilities/veo-3-1-official/image-to-video">
    `POST /v1/videos` + multipart-загрузка `input_reference`, чтобы оживить статичное изображение в клип.
  </Card>

  <Card title="Официальный против реверсного" icon="scale" href="/ru/api-capabilities/veo-3-1-official/vs-veo-reverse">
    Матрица принятия решений по сравнению с существующим [VEO 3.1 (Reverse Channel)](/en/api-capabilities/veo/overview).
  </Card>

  <Card title="Визуальное тестирование API" icon="flask-conical" href="https://icover.ai/veo-official">
    Отлаживайте этот эндпоинт напрямую в визуальном инструменте тестирования iCover — код не требуется.
  </Card>

  <Card title="Поиск / загрузка асинхронных задач" icon="list-checks" href="https://api.apiyi.com/task">
    Просматривайте отправленные видео-задачи и загружайте ссылки на видео в консоли APIYI — запись для поиска вне API.
  </Card>
</CardGroup>

## Почему официальный VEO 3.1 от APIYI?

Полная замена официального канала Google / Vertex AI, оптимизированная для production-сценариев с точки зрения онбординга, стабильности и стоимости:

<CardGroup cols={2}>
  <Card title="Официальный passthrough · Идентичные Model IDs" icon="shield-check">
    Прозрачный passthrough к асинхронным эндпоинтам Veo 3.1 в Google AI Studio. **Model IDs (`veo-3.1-generate-preview` / `veo-3.1-fast-generate-preview`) в точности совпадают с upstream**, с полным соответствием полей и ограничений запросов и ответов.
  </Card>

  <Card title="Беспроблемный онбординг · Без переключения группы" icon="plug">
    Вызовы работают в **`Default` группе** с **Pay-per-request или Pay-as-you-go Priority Tokens** (чистый Pay-as-you-go не поддерживается). **Отдельное переключение группы не требуется**; существующие Pay-per-request Tokens работают как есть — самый беспроблемный официальный канал для Veo 3.1.
  </Card>

  <Card title="Неограниченные параллельные запросы · Production-масштаб" icon="infinity">
    Агрегированный пул аккаунтов с прозрачным proxy — масштабируйте batch-съёмки, рекламные пайплайны и высоконагруженное production-производство линейно. **Нет потолка тарифа Google на аккаунт**.
  </Card>

  <Card title="Тарификация за запрос · Более чем на 60% дешевле, чем Google" icon="percent">
    `veo-3.1-fast-generate-preview` \$0.3/req, `veo-3.1-generate-preview` \$1.2/req — единая для 4/6/8 сек и 720p/1080p/4k. **По сравнению с официальным 8s 1080p Google, экономия 62–68%**, используйте [бонусы за пополнение](/ru/faq/recharge-promotions) для дополнительной экономии; неудачные задачи не тарифицируются.
  </Card>

  <Card title="Глобальный доступ без трения" icon="globe">
    **Не требуется зарубежный сервер или proxy** — подключайтесь к `api.apiyi.com` напрямую из дата-центров Mainland China, residential-сетей или зарубежных узлов. Полностью обойдитесь без трансграничной настройки Google AI Studio / Vertex AI.
  </Card>

  <Card title="Профессиональная поддержка · Корпоративное внедрение" icon="handshake">
    Наша команда глубоко разбирается в генерации видео: prompt engineering, подборе разрешения, пакетном производстве и постобработке. Полная техническая поддержка от PoC до production для корпоративных клиентов.
  </Card>
</CardGroup>

## Ключевые возможности

<CardGroup cols={2}>
  <Card title="Нативное синхронизированное аудио" icon="volume-2">
    Veo 3.1 изначально выводит **видео с синхронизированным аудио** (фоновые звуки, диалоги, музыка). Отдельная постобработка аудио не нужна — опишите желаемое аудио в вашем prompt.
  </Card>

  <Card title="Гибкая длительность 4 / 6 / 8 секунд" icon="clock">
    `seconds` строковый enum: `"4"` / `"6"` / `"8"`. **Тарификация за каждый запрос, длительность не влияет на цену**. Уровни 1080p / 4k требуют `"8"`.
  </Card>

  <Card title="Три уровня разрешения" icon="expand">
    `720p` / `1080p` / `4k`, **единая тарификация за запрос**. Свободно переключайте альбомную ориентацию (`16:9`) и портретную (`9:16`).
  </Card>

  <Card title="Точное следование инструкциям" icon="target">
    Veo 3.1 лидирует в своем классе по движению камеры, физике объектов и точности выражения персонажей. Широкая поддержка ключевых слов языка камеры (push/pull/pan/dolly, низкие/высокие ракурсы).
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Изображение в видео (input_reference)" icon="image">
    Загрузите одно изображение как визуальную опору для анимации статичного контента. См. [Изображение в видео](/ru/api-capabilities/veo-3-1-official/image-to-video).
  </Card>

  <Card title="Асинхронная модель задач" icon="list-check">
    При отправке сразу возвращается `task_id`. Отдельно опрашивайте статус и скачивайте итоговое видео — это идеально подходит для пакетного управления и сценариев возобновления после сбоя.
  </Card>

  <Card title="Протокол, совместимый с OpenAI" icon="plug">
    Аутентификация `base_url=https://api.apiyi.com/v1` + `Bearer`. Работает через raw HTTP или низкоуровневый `client.post()` OpenAI SDK.
  </Card>

  <Card title="Сбойные запросы бесплатны" icon="circle-check">
    В асинхронном режиме неудачные генерации, отклонения по политике контента и ошибки параметров **не тарифицируются**. **Оплачиваются только задачи `status=completed`**.
  </Card>
</CardGroup>

## Цены

APIYI использует тарификацию **pay-per-request** — фиксированная цена в пределах поддерживаемых комбинаций длительности/разрешения, **без доплаты за более длинный вывод или более высокое разрешение**. По публичным тарифам `ai.google.dev/gemini-api/docs/pricing`, официальный Veo 3.1 от Google тарифицируется за секунду; указанные ниже скидки рассчитаны для **8-секундных видео**.

| Модель                          | Цена APIYI      | Официальная цена Google за 8 с 1080p | Официальная цена Google за 8 с 4K |
| ------------------------------- | --------------- | ------------------------------------ | --------------------------------- |
| `veo-3.1-fast-generate-preview` | **\$0.3 / req** | \$0.96<br />**68.8% off**            | \$2.40<br />**87.5% off**         |
| `veo-3.1-generate-preview`      | **\$1.2 / req** | \$3.20<br />**62.5% off**            | \$4.80<br />**75.0% off**         |

<Info>
  **Примечания по тарификации**:

  * Взимается **за запрос по названию модели**, независимо от длительности (4/6/8 сек), разрешения (720p/1080p/4k) или наличия `input_reference` — **выбор 4K стоит столько же, сколько 720p**
  * В асинхронном режиме неудачные генерации / отклонения по политике контента / ошибки емкости **не тарифицируются**
  * Тарифные уровни бонуса при пополнении в [Top-Up Promotions](/ru/faq/recharge-promotions) дополнительно снижают эффективную стоимость
  * Рендеринг 4K работает в 4–6 раз медленнее и создает файлы примерно в 10 раз больше — **для ежедневного использования по умолчанию выбирайте 1080p**
  * Официальный тариф Google для 4K составляет \$0.30/сек (fast) / \$0.60/сек (standard), то есть \$2.40 / \$4.80 за 8 сек (источник: `ai.google.dev/gemini-api/docs/pricing`)
</Info>

## Настройка группы

VEO 3.1 Official **работает в группе `Default`** (1x), **отдельное переключение группы не требуется**. Режим тарификации Token должен быть **Pay-per-request** или **Pay-as-you-go Priority** — **чистый Pay-as-you-go не поддерживается** (при необходимости переключите режим Token в [консоли](https://api.apiyi.com/token)).

<Tip>
  **Сравнение сложности подключения**: По сравнению с [Sora 2 Official](/ru/api-capabilities/sora-2/overview) (для которого требуется отдельная группа `Sora2Official` + только Pay-as-you-go Priority), VEO 3.1 Official работает в группе Default и поддерживает как Pay-per-request, так и Pay-as-you-go Priority — **идеально, если вам нужно «подключить уже имеющийся Token Pay-per-request + изменить `base_url`» без настройки**.
</Tip>

| Параметр           | VEO 3.1 Official                                                      | Примечания                                       |
| ------------------ | --------------------------------------------------------------------- | ------------------------------------------------ |
| Группа             | `Default` (1x)                                                        | Переключение не требуется                        |
| Модель тарификации | Pay-per-request ✅ / Pay-as-you-go Priority ✅ / чистый Pay-as-you-go ❌ | Для чистого Pay-as-you-go требуется переключение |
| Требование к Token | Pay-per-request или Pay-as-you-go Priority + группа Default           | Специальный Token не нужен                       |
| Ставка / множитель | 1.0x                                                                  | Прямое списание по указанным выше ценам          |

## Технические характеристики

| Параметр                                                       | `veo-3.1-fast-generate-preview`                         | `veo-3.1-generate-preview`    |
| -------------------------------------------------------------- | ------------------------------------------------------- | ----------------------------- |
| **Цена**                                                       | \$0.3 / запрос                                          | \$1.2 / запрос                |
| **Поддерживаемая длительность (секунды, строка)**              | `"4"` / `"6"` / `"8"`                                   | `"4"` / `"6"` / `"8"`         |
| **Поддерживаемое разрешение (`metadata.resolution`)**          | `720p` / `1080p` / `4k`                                 | `720p` / `1080p` / `4k`       |
| **Поддерживаемое соотношение сторон (`metadata.aspectRatio`)** | `16:9` / `9:16`                                         | `16:9` / `9:16`               |
| **Аудио**                                                      | ✅ Синхронизированные аудио и видео                      | ✅                             |
| **Преобразование изображения в видео (input\_reference)**      | ✅ (1 референсное изображение)                           | ✅ (1 референсное изображение) |
| **Типичное время генерации**                                   | 720p 60–90s · 1080p 80–120s · 4K 5–6 мин                | То же самое                   |
| **Хранение видео**                                             | Официально не документировано — скачайте немедленно     | То же самое                   |
| **Поля ответа**                                                | `id` / `task_id` / `status` / `progress` / `created_at` | То же самое                   |

<Warning>
  **При разрешении 1080p / 4k `seconds` должно быть `"8"`** — `"4"` или `"6"` будут отклонены upstream. Все три длительности поддерживаются в 720p.
</Warning>

## Эндпоинты API

| Эндпоинт                       | Метод | Назначение                                                                        | Content-Type                                |
| ------------------------------ | ----- | --------------------------------------------------------------------------------- | ------------------------------------------- |
| `/v1/videos`                   | POST  | Отправка задачи генерации видео (text-to-video / image-to-video, единый эндпоинт) | `application/json` or `multipart/form-data` |
| `/v1/videos/{task_id}`         | GET   | Запрос статуса и прогресса задачи                                                 | —                                           |
| `/v1/videos/{task_id}/content` | GET   | **Скачать сгенерированный MP4 (двоичный поток)**                                  | —                                           |

<Warning>
  **⚠️ Только двоичная загрузка MP4 — CDN URL в ответе не возвращается**

  В настоящее время этот канал **не возвращает в ответе никакого CDN / публичного URL** — видеофайл можно получить только как **MP4 binary stream через `GET /v1/videos/{task_id}/content`** (требуется заголовок `Authorization: Bearer`).

  Последствия:

  * В ответе **не** возвращается `video_url` / `data.url` / какая-либо ссылка, которую можно напрямую распространять
  * Фронтенд **не может** напрямую вставить URL эндпоинта в тег `<video>` — запросы браузера без заголовка авторизации будут возвращать 401
  * **Как только `status: "completed"`, скачайте MP4 и сохраните его в своем собственном OSS / CDN**, а затем выдавайте свой URL конечным пользователям
  * Срок хранения видео официально не документирован — **не рассчитывайте в долгосрочной перспективе на удаленный `task_id`** для получения видео
</Warning>

<Tip>
  **Выбор эндпоинта**: Основной `api.apiyi.com`; резервные шлюзы `vip.apiyi.com` / `b.apiyi.com` работают одинаково.
</Tip>

## Key Parameters

<Tip>
  **⚡ Полная справка по параметрам**: перейдите к [Text-to-Video - Parameter Reference](/ru/api-capabilities/veo-3-1-official/text-to-video#parameter-reference) за полной таблицей, охватывающей типы `model` / `prompt` / `seconds` / `size` / `metadata.*`, значения по умолчанию и ограничения. В этом разделе разбираются только **3 наиболее проблемных параметра**.
</Tip>

### `seconds` (длительность видео)

Поле длительности называется **`seconds`** (а не `duration`) и **должно быть строкой** (`"4"` / `"6"` / `"8"`). Если передать число, возвращается:

```
parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string
```

| Value | 720p             | 1080p           | 4k              |
| ----- | ---------------- | --------------- | --------------- |
| `"4"` | ✅                | ❌               | ❌               |
| `"6"` | ✅                | ❌               | ❌               |
| `"8"` | ✅ (по умолчанию) | ✅ (обязательно) | ✅ (обязательно) |

<Warning>
  **Распространенная ошибка: поле с именем `duration` тихо игнорируется.** `duration` не распознается этим каналом → оно отбрасывается → длительность откатывается к значению по умолчанию **4 сек.**:

  * В 720p (и на других уровнях, где разрешены 4 сек.): **ошибки нет, но вы получаете только 4 сек.** (это именно тот случай «отправили 8s, получили 4s»)
  * В 1080p / 4k: 4 сек. недопустимы, поэтому возникает ошибка `Resolution 1080p requires duration seconds to be 8 seconds, but got 4`

  **Правильное использование: отправляйте поле `seconds` со значением `"8"` (строка).**
</Warning>

Приоритет параметров: `metadata.durationSeconds > seconds > 8`

### `metadata.resolution` (уровень разрешения)

| Value                 | Pixels (landscape) | Pixels (portrait) | Примечания                                           |
| --------------------- | ------------------ | ----------------- | ---------------------------------------------------- |
| `720p` (по умолчанию) | `1280x720`         | `720x1280`        | Все три длительности                                 |
| `1080p`               | `1920x1080`        | `1080x1920`       | Только **`seconds="8"`**                             |
| `4k`                  | `3840x2160`        | `2160x3840`       | Только **`seconds="8"`**, рендер в 4–6 раз медленнее |

Приоритет параметров: `metadata.resolution > size > 720p`

### ⚠️ Не передавайте `generateAudio`

Veo 3 / 3.1 **изначально поддерживает звук**, но параметр `generateAudio` **передавать нельзя** — вышестоящий сервис отклонит запрос с `INVALID_ARGUMENT`. Чтобы управлять звуком, **запишите намерение в свой prompt**:

> "Морской маяк в сумерках; волны, далекие морские птицы, тихий ветер, кинематографическая атмосфера"

## Лучшие практики

<Steps>
  <Step title="Выбирайте модель в зависимости от задачи">
    * **Итерации / пакетные превью** → `veo-3.1-fast-generate-preview` (\$0.3/request)
    * **Финальная поставка / 4K** → `veo-3.1-generate-preview` (\$1.2/request)
    * Запускайте оба варианта с одним и тем же prompt + seed; выбирайте визуально
  </Step>

  <Step title="Сначала проверяйте на 4 секундах">
    Для каждого нового prompt начинайте с `seconds: "4"`, чтобы проверить направление камеры и стиль (рендер 60–90 сек, \$0.3). Затем увеличьте до 8 сек или 1080p, когда внешний вид будет зафиксирован.
  </Step>

  <Step title="Используйте асинхронный опрос, а не синхронное ожидание">
    Официальный канал работает **только в async-режиме**: отправьте POST, чтобы получить `task_id` → опрашивайте `GET /v1/videos/{task_id}` каждые 8–10 сек, пока не будет `status: "completed"` → скачайте из `/content`. **Без webhooks; только опрос**.
  </Step>

  <Step title="Задавайте таймауты клиента по уровню">
    * 720p / 1080p: жесткий таймаут 3 мин
    * 4K: жесткий таймаут 10 мин
    * POST submit (multipart): минимум 30 сек
  </Step>

  <Step title="Скачивайте сразу после завершения">
    Как только `status` переключится на `completed`, **немедленно скачайте в свой OSS / CDN** — не полагайтесь надолго на удаленный `task_id`. Эндпоинт `/content` **иногда возвращает 400** сразу после переключения `status`; повторите через 4 секунды (в sample clients это уже встроено).
  </Step>

  <Step title="Закладывайте аудио-намерение в prompt">
    **Не передавайте `generateAudio`** (он возвращает `INVALID_ARGUMENT`). Для фонового звука, диалогов, BGM опишите в prompt: "волны, далёкие морские птицы, слабый ветер".
  </Step>

  <Step title="Ограничивайте rate limit на своей стороне">
    Ограничения на concurrency публично не документированы; на практике 10 одновременных отправок успешно ставились в очередь. **Рекомендуемое ограничение на стороне продакшена — in-flight ≤ 10**, с экспоненциальным backoff для 429 / 5xx.
  </Step>
</Steps>

## Коды ошибок и повторные попытки

| Статус / Симптом               | Значение                                                                                    | Рекомендуемое действие                                                                       |
| ------------------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `400` + `parse_request_failed` | `seconds` было числом                                                                       | Используйте строку `"4"` / `"6"` / `"8"`                                                     |
| Только 4 сек / `... but got 4` | Поле было названо `duration` (молча игнорируется, используется значение по умолчанию 4 сек) | Используйте `seconds` со значением `"8"` (строка)                                            |
| `INVALID_ARGUMENT`             | Переданы `generateAudio` или не 8 сек при 1080p/4k                                          | Уберите `generateAudio`; задайте `seconds="8"` для HD/4K                                     |
| `401`                          | Недопустимый token                                                                          | Проверьте `Authorization: Bearer <key>` (без лишних пробелов), ключ по-прежнему действителен |
| `429`                          | Лимит запросов / недостаточный баланс                                                       | Повторите с экспоненциальной задержкой; выполните пополнение и повторите                     |
| `5xx` / `INTERNAL`             | Временная ошибка upstream                                                                   | Повторите 1–2 раза с тем же seed (не тарифицируется)                                         |
| `GET /content` occasional 400  | `status` только что переключился на `completed`                                             | Подождите 4 сек и повторите (клиентам следует повторить 3–5 раз)                             |
| Задача `failed`                | Генерация не удалась (обычно из-за проверки контента или ограничения емкости upstream)      | Измените prompt и повторите; **задача не тарифицируется**                                    |

<Info>
  **Рекомендуемые настройки клиента**:

  * Тайм-аут отправки POST: **30 сек** (для multipart uploads может потребоваться больше)
  * Интервал опроса: **8–10 сек**; максимальное ожидание для 720p/1080p **3 мин**, для 4K **10 мин**
  * Повтор с экспоненциальной задержкой для 5xx и `failed` (рекомендуется 1–2 попытки)
  * Повторяйте `/content` 3–5 раз с интервалом 4 сек
</Info>

## Часто задаваемые вопросы

<AccordionGroup>
  <Accordion title="Канал Official vs Reverse — в чем разница? Reverse-канал еще можно использовать?">
    **Official (эта страница)**: Прозрачный passthrough к upstream-эндпоинтам Google AI Studio. ID моделей совпадают с Google upstream (`veo-3.1-generate-preview` / `veo-3.1-fast-generate-preview`), цена \$0.3 / \$1.2 за запрос, только асинхронный эндпоинт.

    **Reverse** (существующий [VEO 3.1](/en/api-capabilities/veo/overview)): Доступ к Google Flow, полученный методом reverse engineering. ID моделей относятся к сериям `veo-3.1-fast` / `veo-3.1` / `-fl`, цена от \$0.15 за запрос — дешевле, поддерживает как **streaming sync**, так и async-режимы, а также **frame-to-video** (первый/последний кадр).

    См. полную [матрицу выбора Official vs Reverse](/ru/api-capabilities/veo-3-1-official/vs-veo-reverse). Оба канала сосуществуют; выбирайте по бизнес-потребностям.
  </Accordion>

  <Accordion title="Поле length — это секунды или длительность? И почему оно должно быть строкой?">
    **Поле запроса — `seconds`** (строка `"4"` / `"6"` / `"8"`). Если назвать его `duration`, оно не распознается — значение молча отбрасывается, и length возвращается к значению по умолчанию 4 сек, что и является корнем проблемы «отправили 8 с, а получили только 4 с».

    Что касается того, почему оно должно быть строкой: в Go-структуре бэкенда это поле (внутреннее имя `duration`) объявлено как `string`, поэтому число отклоняется на уровне декодера с `parse_request_failed: cannot unmarshal number into Go struct field ... duration of type string` (`duration` в этой ошибке — внутреннее имя поля бэкенда; ваш запрос по-прежнему отправляет `seconds`). **Запомните: отправляйте `seconds` и заключайте значение в кавычки: `"4"` / `"6"` / `"8"`**.
  </Accordion>

  <Accordion title="Как добавить диалог / фоновый звук / BGM? Можно ли передать generateAudio?">
    Veo 3 / 3.1 — это видеомодель с **встроенной поддержкой аудио**, но параметр `generateAudio` **передавать нельзя** (upstream возвращает `INVALID_ARGUMENT`). Чтобы управлять звуком, **зашейте намерение в prompt**:

    > «Морской маяк в сумерках; волны, дальние морские птицы, тихий ветер, кинематографичная атмосфера»
  </Accordion>

  <Accordion title="fast vs standard — что выбрать? fast действительно быстрее?">
    * При одинаковых параметрах **время рендеринга примерно одинаковое** (по измерениям 720p 8 sec: fast 83s, standard 78s). **fast не быстрее — он дешевле** (\$0.3 vs \$1.2)
    * По умолчанию выбирайте `veo-3.1-fast-generate-preview`
    * Переходите на `veo-3.1-generate-preview` для финальной поставки или когда важны детализация / физическая согласованность
    * A/B в продакшене: запускайте оба варианта с одинаковыми prompt + seed, выбирайте визуально
  </Accordion>

  <Accordion title="Стоит ли использовать 4K?">
    **Для большинства случаев не рекомендуется**:

    * Одинаковая цена за запрос выглядит привлекательно
    * Но рендеринг **в 4–6× медленнее** (720p 80s → 4K 350s)
    * Файлы примерно в 10× больше (720p 4MB → 4K 40MB) — затраты на трафик и хранение удваиваются
    * 1080p визуально достаточно для большинства сценариев воспроизведения

    **Когда 4K действительно нужен**: используйте `veo-3.1-generate-preview`, задайте `seconds="8"` (обязательно), timeout клиента ≥ 10 мин, запускайте как фоновую async-задачу.
  </Accordion>

  <Accordion title="Когда задача считается завершенной? Есть ли webhooks?">
    * **Webhooks нет**; опрашивайте только `GET /v1/videos/{task_id}`
    * Рекомендуемый интервал опроса: **8 сек** (по измерениям достаточно, не приведет к лимиту запросов)
    * Измеренное время: 720p / 1080p 60–115 сек, 4K 5–6 мин
    * Timeout клиента: 3 мин для 720p/1080p, 10 мин для 4K
  </Accordion>

  <Accordion title="Почему GET /content возвращает 400?">
    Сразу после того, как `status` переключается в `completed`, вызов `/v1/videos/{task_id}/content` иногда возвращает 400 из-за задержки синхронизации upstream CDN. **Подождите 4 сек и повторите один раз** — этого обычно достаточно (в примерах клиентов повтор выполняется 3–5 раз с интервалом 4 секунды).
  </Accordion>

  <Accordion title="Можно ли получить CDN URL для видео? Может ли frontend напрямую обращаться к эндпоинту?">
    **Пока нет**. Этот канал **не возвращает CDN / публичный URL** в ответе — ни `video_url` / `data.url` / никакой другой ссылки, пригодной для прямого распространения.

    **Единственный способ получить видео**: после `status: "completed"` вызовите `GET /v1/videos/{task_id}/content`, чтобы получить **двоичный поток MP4** (требуется заголовок `Authorization: Bearer`).

    **Стандартный production-паттерн**:

    1. Бэкенд скачивает MP4 сразу после завершения задачи → загружает в ваш собственный OSS / CDN
    2. Отдавайте пользователям ваш CDN URL
    3. **Тег `<video>` на frontend НЕ должен указывать напрямую на `/content`** — браузеры не могут передать заголовок авторизации, запросы будут 401

    Если/когда upstream начнет отдавать CDN URLs, эта страница будет обновлена.
  </Accordion>

  <Accordion title="Как долго видео хранятся на сервере? Нужно ли скачивать их сразу?">
    Срок хранения официально не документирован. **Настоятельно рекомендуется: скачивайте сразу после завершения и храните локально** — не полагайтесь надолго на удаленный `task_id`; `/content` после истечения срока в итоге вернет 404.
  </Accordion>

  <Accordion title="Почему прогресс остается на 50%?">
    Поле `progress` слишком грубое — оно прыгает только между 0 / 50 / 100. Не используйте его для индикатора прогресса в процентах. Используйте spinner или вычисляйте «прошло / ожидается» сами.
  </Accordion>

  <Accordion title="Списываются ли средства за неудачные генерации?">
    **Нет**. **Оплачиваются только задачи `status=completed`**. `failed` / отмененные / отклоненные по content-policy / ошибка параметров — все бесплатно. **Нет реального видеовывода — нет оплаты**.
  </Accordion>

  <Accordion title="Позволяет ли seed воспроизводить идентичные видео?">
    **Не побайтно идентичные**. По измерениям: тот же prompt + тот же seed (`88888`) + те же параметры, fast дважды — размеры файлов 9.81 MB и 9.25 MB, md5 полностью различается, время рендеринга тоже отличается.

    **Но seed не декоративен**: результаты с одинаковым seed группируются вместе (тест на 5 запусков, разброс размеров файлов внутри группы всего 6%), разные seed систематически смещаются (межгрупповой разброс +36.8%). Выводы:

    * Нужен «стабильный вид» → зафиксируйте seed
    * Нужно «исследовать вариации» → меняйте seed, а не возитесь с prompt
    * Нужен «точный повтор» → забудьте об этом, сохраняйте mp4
  </Accordion>

  <Accordion title="Можно ли передать несколько reference images? Первый/последний кадр?">
    **Пока не поддерживается ни то ни другое**. Image-to-video принимает только 1 изображение, имя поля фиксировано как `input_reference`, и **только как file или Base64, а не удаленный URL**.

    Google upstream Veo 3.1 поддерживает multi-reference / first-last-frame / video extension, но этот канал — нет. **Для первого/последнего кадра используйте серию [VEO 3.1 (Reverse)](/en/api-capabilities/veo/overview) `-fl`**.
  </Accordion>

  <Accordion title="Лимиты параллельных запросов? Ограничения QPS?">
    При 10 одновременных отправках все были успешно поставлены в очередь — отклонений не было. Точный предел публично не указан. **Рекомендуется ограничить in-flight на стороне продакшена до ≤ 10**, с exponential backoff при 429 / 5xx.
  </Accordion>

  <Accordion title="Содержат ли видео водяные знаки или метаданные о происхождении?">
    * Видимых водяных знаков нет
    * Но они содержат **Google C2PA Content Credentials** (выданы Google C2PA Media Services, формат `urn:c2pa:...`), встроенные в метаданные MP4. Конечные пользователи их не видят; **инструменты C2PA (например, Adobe Content Authenticity) могут проверить «сгенерировано Veo»**
    * Для сценариев перераспространения учитывайте это; обычно на воспроизведение не влияет
  </Accordion>

  <Accordion title="Можно ли напрямую использовать официальный OpenAI SDK?">
    Частично. Интерфейс следует соглашениям OpenAI (`Bearer` auth + `/v1/...`), но официальный SDK OpenAI **не предоставляет метод `videos.create`** (`/v1/videos` — это custom path). Используйте низкоуровневый `client.post()` в SDK OpenAI или raw HTTP. **Raw HTTP — самый простой вариант** — см. примеры кода в [Песочница Text-to-Video](/ru/api-capabilities/veo-3-1-official/text-to-video).
  </Accordion>
</AccordionGroup>

## Связанные документы

* [Песочница «Из текста в видео»](/ru/api-capabilities/veo-3-1-official/text-to-video) — `POST /v1/videos` (JSON) интерактивный отладчик + примеры кода на 5 языках
* [Песочница «Из изображения в видео»](/ru/api-capabilities/veo-3-1-official/image-to-video) — `POST /v1/videos` (multipart) + использование `input_reference`
* [Матрица решений: официальный релей против реверса](/ru/api-capabilities/veo-3-1-official/vs-veo-reverse) — различия по сравнению с [VEO 3.1 (Реверс)](/en/api-capabilities/veo/overview)
* [Акции на пополнение](/ru/faq/recharge-promotions) — бонусные уровни и подходящие каналы
* [Руководство по API](/ru/api-manual) — общие правила вызова, рекомендации по тайм-аутам и повторным попыткам
* Официальная страница модели Google: `ai.google.dev/gemini-api/docs/models/veo-3.1-generate-preview`
* Документация Google по генерации видео: `ai.google.dev/gemini-api/docs/video`

<Info>
  VEO 3.1 Official — это стабильный сервис APIYI с официальным реле — прозрачный passthrough к Google AI Studio. Идентификаторы моделей, поля ответов и ограничения полностью совпадают с upstream Google, **а канал работает в группе Default с тарификацией pay-per-request** — это самый бесшовный канал официального качества из доступных. Пожалуйста, отправляйте отзывы на панели поддержки в консоли.
</Info>
