Генерация видео Veo
Вызов моделей генерации видео Google Veo через aicentos — текст→видео, изображение→видео, первый и последний кадр, референс-изображения
Обновлено:
Статья для разработчиков: как вызывать модели генерации видео Google Veo через aicentos. API совместим с OpenAI Videos API, поэтому при подключении канала достаточно указать тип openai.
Возможности моделей
Тарификация — по длительности сгенерированного видео (в секундах). Актуальные цены смотрите в консоли aicentos; итоговое списание определяется фактическими записями системы.
Официальные возможности и поддержка в aicentos
| Модель | Длительность (с) | Разрешения | Соотношение сторон | Аудио | Примечания |
|---|---|---|---|---|---|
veo-3.1-generate-preview | 4, 6, 8 | 720p, 1080p, 4k | 16:9, 9:16 | нативное аудио | Для 1080p и 4k — только 8 секунд; при использовании референс-изображений, первого/последнего кадра и других картинок также рекомендуется 8 секунд. |
veo-3.1-fast-generate-preview | 4, 6, 8 | 720p, 1080p, 4k | 16:9, 9:16 | нативное аудио | Для 1080p и 4k — только 8 секунд; при использовании референс-изображений, первого/последнего кадра и других картинок также рекомендуется 8 секунд. |
Документация:
- Генерация видео Veo в Google Gemini API
- Референс-изображения в Veo
- Первый и последний кадр в Veo
- Соотношение сторон в Veo
Соотношение сторон
| Модель | 16:9 альбомное | 9:16 портретное | По умолчанию | Рекомендации |
|---|---|---|---|---|
veo-3.1-generate-preview | поддерживается | поддерживается | 16:9 | Для 4K — только 8 секунд; расширение видео пока недоступно. |
veo-3.1-fast-generate-preview | поддерживается | поддерживается | 16:9 | Для 4K — только 8 секунд; расширение видео пока недоступно. |
Соотношение сторон можно задать в запросе через metadata.aspectRatio или поле формы aspectRatio:
{
"metadata": {
"aspectRatio": "9:16"
}
}Если aspectRatio не передан явно, система сначала выводит его из size: например, 1280x720 → 16:9, 720x1280 → 9:16. Если не передан и size, апстрим по умолчанию использует 16:9.
Аудио
| Модель | Аудио (официально) | Поддержка generateAudio | Рекомендации |
|---|---|---|---|
veo-3.1-generate-preview | нативное аудио | не поддерживается | Не передавайте generateAudio; нужные звуки опишите в prompt. |
veo-3.1-fast-generate-preview | нативное аудио | не поддерживается | Не передавайте generateAudio; нужные звуки опишите в prompt. |
Модели серии Veo 3.1 генерируют звук нативно, но в текущей спецификации Veo в Gemini API параметр generateAudio не вынесен в управляемые. Если передать это поле, апстрим может вернуть INVALID_ARGUMENT.
Чтобы управлять аудиосодержимым, опишите в prompt диалоги, окружающие звуки, эффекты или стиль музыки, например:
Маяк на морском берегу в сумерках, волны бьются о камни, вдали глухой шум ветра и крики чаек, кинематографичный свет, стабильная камераРабота с изображениями на входе
| Возможность | Официально в Google Veo | Поддержка в aicentos | Примечания |
|---|---|---|---|
| Видео из одного начального изображения | поддерживается | поддерживается | Загрузите 1 изображение через input_reference — оно станет стартовым кадром видео. |
| Первый/последний кадр / промежуточные кадры | в серии Veo 3.1 поддерживаются image + lastFrame | поддерживается | Первый кадр — input_reference, последний — last_frame или lastFrame. Рекомендуется серия Veo 3.1 и 8 секунд. |
| Несколько референс-изображений | в серии Veo 3.1 — до 3 referenceImages | поддерживается | Загрузка через reference_image, reference_images или referenceImages; referenceType — только asset. Рекомендуется 8 секунд. |
| Расширение видео | Veo 3.1 / Fast поддерживают расширение существующих видео Veo | пока не поддерживается | В текущем API aicentos официальный вход video не открыт. |
- Поддерживаются MIME-типы изображений
image/jpeg,image/png,image/webp. Рекомендуется передавать файл или Base64, а не URL удалённого изображения. - Внимание для режима референсов: апстрим в этом сценарии не поддерживает
negativePromptи может вернутьNegative prompt is not supported in your use case. Не передавайтеnegativePromptв запросах с референсами. - Техническая деталь: в Veo
predictLongRunningв Gemini API изображения передаются черезbytesBase64Encoded+mimeType, а не черезinlineData, как в обычномgenerateContent. aicentos конвертирует изображения из multipart в формат, нужный апстриму.
Правила тарификации
- Тарификация — по длительности видео, в секундах. Используйте значения из таблицы выше; произвольные значения передавать не рекомендуется.
- Если длительность видео в запросе не указана, по умолчанию тарифицируется 8 секунд.
- Приоритет определения длительности:
metadata.durationSeconds>duration>seconds> 8 секунд по умолчанию. - Приоритет определения разрешения:
metadata.resolution>size> 720p по умолчанию. - 720p / 1080p / 4K тарифицируются по одинаковым правилам, надбавки за разрешение нет.
aspectRatioвлияет только на ориентацию кадра и не тарифицируется отдельно.- Для 4K доступно только 8 секунд.
- Актуальные цены — в консоли aicentos.
Эндпоинты
Сейчас рекомендуются эти 3 эндпоинта:
| Назначение | Метод | Путь |
|---|---|---|
| Создание задачи | POST | /v1/videos |
| Запрос статуса | GET | /v1/videos/{task_id} |
| Скачивание результата | GET | /v1/videos/{task_id}/content |
Если при запросе статуса нужна сразу и ссылка на результат, можно использовать:
| Назначение | Метод | Путь |
|---|---|---|
| Запрос статуса и ссылки на результат | GET | /v1/video/generations/{task_id} |
Аутентификация
export BASE_URL="https://aicentos.com"
export AICENTOS_API_KEY="sk-xxxxxx"Все запросы включают:
-H "Authorization: Bearer $AICENTOS_API_KEY"Создание задачи «текст → видео»
curl -X POST "$BASE_URL/v1/videos" \
-H "Authorization: Bearer $AICENTOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-generate-preview",
"prompt": "Маяк на морском берегу в сумерках, камера медленно наезжает, волны бьются о камни, кинематографичный свет, стабильная камера",
"seconds": "8",
"size": "1280x720",
"metadata": {
"negativePrompt": "blurry, watermark, distorted, low quality",
"resolution": "720p",
"aspectRatio": "16:9",
"seed": 20260401
}
}'Типичный ответ:
{
"id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-generate-preview",
"status": "queued",
"progress": 0,
"created_at": 1775025000
}Создание задачи «изображение → видео» с первым кадром
Для image-to-video сейчас рекомендуется multipart/form-data; поле с первым кадром должно называться input_reference.
curl -X POST "$BASE_URL/v1/videos" \
-H "Authorization: Bearer $AICENTOS_API_KEY" \
-H "Accept: application/json" \
-F "model=veo-3.1-generate-preview" \
-F "prompt=Девушка на кадре поворачивает голову к камере, лёгкий ветер шевелит волосы, городские огни на фоне мягко размыты, камера плавно наезжает" \
-F "input_reference=@./first-frame.png;type=image/png" \
-F "seconds=8" \
-F "size=1280x720" \
-F "resolution=720p" \
-F "aspectRatio=16:9" \
-F "negativePrompt=blurry, watermark, deformed hands" \
-F "seed=20260401"Создание задачи с первым и последним кадром
Для такой задачи нужны оба изображения: первый кадр — input_reference, последний — last_frame или lastFrame.
curl -X POST "$BASE_URL/v1/videos" \
-H "Authorization: Bearer $AICENTOS_API_KEY" \
-H "Accept: application/json" \
-F "model=veo-3.1-generate-preview" \
-F "prompt=Естественный переход от первого кадра с девушкой к последнему кадру с юношей, камера плавно движется, городские огни размыты, волосы и одежда слегка колышутся на ветру, переход выглядит натурально" \
-F "input_reference=@./first-frame.png;type=image/png" \
-F "last_frame=@./last-frame.png;type=image/png" \
-F "seconds=8" \
-F "size=1280x720" \
-F "resolution=720p" \
-F "aspectRatio=16:9" \
-F "negativePrompt=blurry, watermark, distorted face, deformed hands" \
-F "seed=20260402"Создание задачи с референс-изображениями
Задачи с референсами поддерживаются только в серии Veo 3.1, максимум 3 изображения, referenceType — только asset. Поля могут называться reference_image, reference_images или referenceImages. Не передавайте negativePrompt в таких задачах.
curl -X POST "$BASE_URL/v1/videos" \
-H "Authorization: Bearer $AICENTOS_API_KEY" \
-H "Accept: application/json" \
-F "model=veo-3.1-generate-preview" \
-F "prompt=Опираясь на внешность персонажей с двух картинок и атмосферу ночного города, сгенерируй кинематографичный уличный кадр с двумя людьми: камера плавно движется, фонари на фоне мягко размыты, герои естественно смотрят в объектив" \
-F "reference_image=@./ref-1.png;type=image/png" \
-F "reference_image=@./ref-2.png;type=image/png" \
-F "reference_type=asset" \
-F "seconds=8" \
-F "size=1280x720" \
-F "resolution=720p" \
-F "aspectRatio=16:9" \
-F "seed=20260403"Поддерживается также JSON / Base64:
{
"model": "veo-3.1-generate-preview",
"prompt": "Сгенерируй рекламный кадр, используя внешний вид продукта с референс-изображения",
"duration": 8,
"metadata": {
"resolution": "720p",
"aspectRatio": "16:9",
"referenceImages": [
{
"image": {
"bytesBase64Encoded": "BASE64_IMAGE",
"mimeType": "image/png"
},
"referenceType": "asset"
}
]
}
}Запрос статуса задачи
Сначала сохраните id или task_id, возвращённые при создании задачи:
export TASK_ID="task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Затем запросите статус:
curl -X GET "$BASE_URL/v1/videos/$TASK_ID" \
-H "Authorization: Bearer $AICENTOS_API_KEY"Во время обработки типичный ответ:
{
"id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-generate-preview",
"status": "in_progress",
"progress": 50,
"created_at": 1775025000
}По завершении типичный ответ:
{
"id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"object": "video",
"model": "veo-3.1-generate-preview",
"status": "completed",
"progress": 100,
"created_at": 1775025000,
"completed_at": 1775025068
}Запрос статуса и ссылки на результат
Если при опросе сразу нужна ссылка для скачивания, вызовите:
curl -X GET "$BASE_URL/v1/video/generations/$TASK_ID" \
-H "Authorization: Bearer $AICENTOS_API_KEY"Типичный ответ:
{
"code": "success",
"message": "",
"data": {
"error": null,
"format": "mp4",
"metadata": null,
"status": "succeeded",
"task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"url": "https://aicentos.com/v1/videos/task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/content"
}
}Скачивание видео
После завершения задачи скачайте файл напрямую:
curl -L "$BASE_URL/v1/videos/$TASK_ID/content" \
-H "Authorization: Bearer $AICENTOS_API_KEY" \
-o veo-result.mp4Значения статусов
GET /v1/videos/{task_id} возвращает в основном такие статусы:
| Статус | Значение |
|---|---|
queued | в очереди |
in_progress | генерация |
completed | завершено |
failed | ошибка |
GET /v1/video/generations/{task_id} возвращает в основном такие статусы:
| Статус | Значение |
|---|---|
queued | в очереди |
processing | генерация |
succeeded | успешно |
failed | ошибка |
Важные замечания
promptобязателен.- Для image-to-video поле с изображением должно называться
input_reference. - В задачах с первым и последним кадром нужны оба изображения: первый —
input_reference, последний —last_frameилиlastFrame. - Задачи с референсами поддерживаются только в серии Veo 3.1, максимум 3 изображения и обязательно 8 секунд.
- В задачах с референсами не передавайте
negativePrompt. - Для image-to-video в Gemini не рекомендуется передавать URL удалённых изображений — лучше файл или Base64.
- Опрашивайте
GET /v1/videos/{task_id}и скачивайте результат только послеstatus=completed. - В серии Veo 3.1 можно передавать 4, 6 или 8 секунд; для 1080p и 4k — только 8 секунд. - Альбомное видео —
aspectRatio=16:9, портретное —aspectRatio=9:16; если не передать, по умолчанию берётся 16:9. - Не передавайте параметр
generateAudio. Модели Veo 3.1 генерируют звук нативно, но текущий Gemini API не позволяет включать/выключать звук черезgenerateAudio; за передачу этого поля апстрим может вернутьINVALID_ARGUMENT. - Чтобы управлять аудиосодержимым, опишите в prompt диалоги, окружение, эффекты или стиль музыки.
- Официальный Veo 3.1 поддерживает расширение видео, но в текущем API aicentos вход video пока не открыт.