Общая документация Public API · API-ключ можно создать в настройках аккаунта
Эта страница описывает первую версию Public API для Veo 3.1. Через API можно создать короткое видео по тексту, одному исходному изображению или набору референсных изображений.
Запрос создаёт асинхронную операцию. В ответ на POST вы сразу получаете id, стартовый статус и стоимость, а готовое видео забираете позже через проверку статуса.
Endpoint: POST /api/v1/operations
Авторизация передаётся в заголовке:
Authorization: Bearer brth_ваш_ключ
Для Veo 3.1 используйте slug страницы:
{
"tool": "veo-3-1",
"input": {
"generation_type": "text",
"model": "veo3.1-lite",
"prompt": "Кинематографичный пролёт камеры над ночным городом, мокрый асфальт отражает неоновые вывески",
"aspect_ratio": "16:9",
"resolution": "1080p"
}
}
Поддерживаются три режима:
text - видео только по текстовому описанию;image - видео по одному исходному изображению;reference - видео по нескольким референсным изображениям.Базовая форма запроса:
{
"tool": "veo-3-1",
"input": {
"generation_type": "text",
"model": "veo3.1-lite",
"prompt": "Опишите сцену, действие, стиль и движение камеры",
"aspect_ratio": "16:9",
"resolution": "1080p"
}
}
tool - это slug нейросети. input содержит параметры генерации. Внешний Public API принимает параметры напрямую внутри input; дополнительный вложенный объект input.input создавать не нужно.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Тип генерации: text, image, reference. |
model | enum | Да | Модель генерации: veo3.1-lite, veo3.1-fast, veo3.1-quality. veo3.1-lite доступна только для режима text. veo3.1-quality недоступна для режима reference. |
prompt | string | Да | Задание для видео, от 3 до 4000 символов. Опишите сцену, действие, стиль, атмосферу, свет и движение камеры. |
image_urls | string (url) | Да, только для generation_type = "image" | Внешний http/https URL одного исходного изображения. Поддерживаются JPG, JPEG, PNG, WebP, до 10 МБ. |
reference_image_urls | string[] (url) | Да, только для generation_type = "reference" | Массив из 1-3 внешних http/https URL референсных изображений. Поддерживаются JPG, JPEG, PNG, WebP, до 10 МБ на файл. |
aspect_ratio | enum | Да | Соотношение сторон результата: 16:9 для горизонтального видео или 9:16 для вертикального. |
resolution | enum | Да | Разрешение результата: 720p, 1080p, 4k. Цена зависит от сочетания model и resolution. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veo-3-1",
"input": {
"generation_type": "text",
"model": "veo3.1-lite",
"prompt": "Кинематографичный пролёт камеры над ночным городом, мокрый асфальт отражает неоновые вывески, мягкий туман, плавное движение вперёд",
"aspect_ratio": "16:9",
"resolution": "1080p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'veo-3-1',
input: {
generation_type: 'text',
model: 'veo3.1-lite',
prompt:
'Кинематографичный пролёт камеры над ночным городом, мокрый асфальт отражает неоновые вывески, мягкий туман, плавное движение вперёд',
aspect_ratio: '16:9',
resolution: '1080p',
},
}),
})
const operation = await response.json()
console.log(operation.id)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veo-3-1',
'input': {
'generation_type': 'text',
'model': 'veo3.1-lite',
'prompt': 'Кинематографичный пролёт камеры над ночным городом, мокрый асфальт отражает неоновые вывески, мягкий туман, плавное движение вперёд',
'aspect_ratio': '16:9',
'resolution': '1080p',
},
},
timeout=30,
)
print(response.json()['id'])
В этом режиме исходное изображение задаёт первый визуальный ориентир для будущего ролика.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veo-3-1",
"input": {
"generation_type": "image",
"model": "veo3.1-fast",
"prompt": "Оживи портрет: лёгкий поворот головы, естественная улыбка, мягкий студийный свет, камера медленно приближается",
"image_urls": "https://cdn.example.com/source-image-1.jpg",
"aspect_ratio": "9:16",
"resolution": "1080p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'veo-3-1',
input: {
generation_type: 'image',
model: 'veo3.1-fast',
prompt:
'Оживи портрет: лёгкий поворот головы, естественная улыбка, мягкий студийный свет, камера медленно приближается',
image_urls: 'https://cdn.example.com/source-image-1.jpg',
aspect_ratio: '9:16',
resolution: '1080p',
},
}),
})
const operation = await response.json()
console.log(operation)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veo-3-1',
'input': {
'generation_type': 'image',
'model': 'veo3.1-fast',
'prompt': 'Оживи портрет: лёгкий поворот головы, естественная улыбка, мягкий студийный свет, камера медленно приближается',
'image_urls': 'https://cdn.example.com/source-image-1.jpg',
'aspect_ratio': '9:16',
'resolution': '1080p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Режим reference принимает до трёх изображений. Используйте его, когда нужно удержать стиль, персонажа, продукт или несколько визуальных ориентиров. В этом режиме используйте модель veo3.1-fast.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veo-3-1",
"input": {
"generation_type": "reference",
"model": "veo3.1-fast",
"prompt": "Собери динамичный рекламный ролик с тем же продуктом и стилем: медленный поворот камеры, чистый студийный свет, премиальная подача",
"reference_image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"aspect_ratio": "16:9",
"resolution": "1080p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'veo-3-1',
input: {
generation_type: 'reference',
model: 'veo3.1-fast',
prompt:
'Собери динамичный рекламный ролик с тем же продуктом и стилем: медленный поворот камеры, чистый студийный свет, премиальная подача',
reference_image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
aspect_ratio: '16:9',
resolution: '1080p',
},
}),
})
const operation = await response.json()
console.log(operation.id)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veo-3-1',
'input': {
'generation_type': 'reference',
'model': 'veo3.1-fast',
'prompt': 'Собери динамичный рекламный ролик с тем же продуктом и стилем: медленный поворот камеры, чистый студийный свет, премиальная подача',
'reference_image_urls': [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
'aspect_ratio': '16:9',
'resolution': '1080p',
},
},
timeout=30,
)
print(response.json())
{
"id": "3f0f7f1e-5a1f-4d3c-9a0f-9a55d2f7b123",
"status": "queued",
"tool": "veo-3-1",
"cost": 20,
"balance_after": 480,
"created_at": "2026-08-24T12:00:00Z"
}
id нужно сохранить: по нему вы будете проверять статус и получать готовый результат.
{
"id": "3f0f7f1e-5a1f-4d3c-9a0f-9a55d2f7b123",
"status": "completed",
"tool": "veo-3-1",
"cost": 20,
"created_at": "2026-08-24T12:00:00Z",
"completed_at": "2026-08-24T12:02:10Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veo-3-1/result.mp4"
]
},
"error_message": null
}
{
"id": "3f0f7f1e-5a1f-4d3c-9a0f-9a55d2f7b123",
"status": "failed",
"tool": "veo-3-1",
"cost": 20,
"created_at": "2026-08-24T12:00:00Z",
"completed_at": "2026-08-24T12:01:20Z",
"result": null,
"error_message": "Не удалось сгенерировать видео"
}
Проверка выполняется по id, который вернулся при создании операции.
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/3f0f7f1e-5a1f-4d3c-9a0f-9a55d2f7b123
Пример на JavaScript / TypeScript:
const operationId = '3f0f7f1e-5a1f-4d3c-9a0f-9a55d2f7b123'
const response = await fetch(
`https://bratuha.ru/api/v1/operations/${operationId}`,
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const operation = await response.json()
console.log(operation.status, operation.result)
Пока status равен queued или processing, видео ещё создаётся. Когда статус станет completed, заберите ссылку из result.urls.
Veo 3.1 возвращает видеофайл:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veo-3-1/result.mp4"
]
}
urls - массив ссылок на готовые видео. Обычно в массиве один ролик. Ссылка ведёт на MP4-файл.
Цена считается за одну операцию и зависит от model и resolution.
| Модель | 720p | 1080p | 4k |
|---|---|---|---|
veo3.1-lite | 10 ₽ | 10 ₽ | 25 ₽ |
veo3.1-fast | 20 ₽ | 20 ₽ | 50 ₽ |
veo3.1-quality | 100 ₽ | 100 ₽ | 400 ₽ |
Важные ограничения по цене и режимам:
veo3.1-lite доступна только для generation_type = "text";veo3.1-fast доступна во всех режимах;veo3.1-quality недоступна для generation_type = "reference";aspect_ratio не меняет цену;POST создаёт новую операцию и списывает стоимость заново.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.id из ответа и проверяйте статус через GET /api/v1/operations/{id}.http/https URL, доступные без авторизации. localhost, private IP и закрытые ссылки не подходят.JPG, JPEG, PNG или WebP.image передавайте ровно одно изображение в image_urls.reference передавайте массив reference_image_urls из 1-3 изображений и используйте модель veo3.1-fast.