Генерирует короткие видео по текстовому описанию или оживляет 1–2 изображения, превращая их в сцену с движением. Цена зависит от модели: быстрая - 30 ₽ за видео, обычная - 50 ₽ за видео.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Veo 3.1 создаёт короткие видео двумя способами: по текстовому описанию или на основе изображений.
Основные сценарии:
Каждый вызов создаёт асинхронную операцию. После запуска нужно отдельно проверять статус по id.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус операции.Режим генерации определяется параметром generation_type:
text - видео из текста, изображения не нужны.image - видео из изображений, нужен хотя бы input_reference_url.Скорость и цена зависят от model_tier:
fast - быстрая модель, 30 ₽.standard - обычная модель, 50 ₽.{
"tool": "veo-3-1",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "veo-3-1".input - параметры запуска. Все поля передаются напрямую внутри этого объекта.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Тип генерации. Варианты: text (видео из текста), image (видео из изображений). |
model_tier | enum | Да | Модель. Варианты: standard (обычная, 50 ₽), fast (быстрая, 30 ₽). |
aspect_ratio | enum | Да | Соотношение сторон. Варианты: 9:16 (портрет), 16:9 (ландшафт). |
prompt | string | Да | Описание сцены для видео. От 3 до 4000 символов. |
input_reference_url | string (url) | Да* | Внешний URL опорного изображения. Нужен только при generation_type = image. Допустимые форматы: jpg, jpeg, png, webp. |
use_end_image | boolean | Нет | Включает режим с конечным кадром. Работает только при generation_type = image. |
end_reference_url | string (url) | Да* | Внешний URL конечного кадра. Нужен только при use_end_image = true. Допустимые форматы: jpg, jpeg, png, webp. |
* Обязательность зависит от сценария. Подробности - в описании каждого параметра.
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_tier": "fast",
"aspect_ratio": "16:9",
"prompt": "Камера медленно пролетает над ночным городом. Неоновые вывески отражаются в лужах на мостовой, лёгкий дождь, кинематографичный свет"
}
}'
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_tier: 'fast',
aspect_ratio: '16:9',
prompt: 'Камера медленно пролетает над ночным городом. Неоновые вывески отражаются в лужах на мостовой, лёгкий дождь, кинематографичный свет',
},
}),
})
const data = await response.json()
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_tier': 'fast',
'aspect_ratio': '16:9',
'prompt': 'Камера медленно пролетает над ночным городом. Неоновые вывески отражаются в лужах на мостовой, лёгкий дождь, кинематографичный свет',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
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_tier": "standard",
"aspect_ratio": "9:16",
"prompt": "Человек на фото поворачивает голову, улыбается и машет рукой в камеру",
"input_reference_url": "https://cdn.example.com/source-image-1.jpg"
}
}'
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_tier: 'standard',
aspect_ratio: '9:16',
prompt: 'Человек на фото поворачивает голову, улыбается и машет рукой в камеру',
input_reference_url: 'https://cdn.example.com/source-image-1.jpg',
},
}),
})
const data = await response.json()
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_tier': 'standard',
'aspect_ratio': '9:16',
'prompt': 'Человек на фото поворачивает голову, улыбается и машет рукой в камеру',
'input_reference_url': 'https://cdn.example.com/source-image-1.jpg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
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_tier": "fast",
"aspect_ratio": "16:9",
"prompt": "Плавный переход от дневного пейзажа к ночному, свет постепенно меняется",
"input_reference_url": "https://cdn.example.com/source-image-1.jpg",
"use_end_image": true,
"end_reference_url": "https://cdn.example.com/source-image-2.jpg"
}
}'
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_tier: 'fast',
aspect_ratio: '16:9',
prompt: 'Плавный переход от дневного пейзажа к ночному, свет постепенно меняется',
input_reference_url: 'https://cdn.example.com/source-image-1.jpg',
use_end_image: true,
end_reference_url: 'https://cdn.example.com/source-image-2.jpg',
},
}),
})
const data = await response.json()
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_tier': 'fast',
'aspect_ratio': '16:9',
'prompt': 'Плавный переход от дневного пейзажа к ночному, свет постепенно меняется',
'input_reference_url': 'https://cdn.example.com/source-image-1.jpg',
'use_end_image': True,
'end_reference_url': 'https://cdn.example.com/source-image-2.jpg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "veo-3-1",
"cost": 30,
"balance_after": 495,
"created_at": "2026-03-13T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "veo-3-1",
"cost": 30,
"created_at": "2026-03-13T12:00:00Z",
"completed_at": "2026-03-13T12:00:45Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veo-3-1/result.mp4"
]
},
"error_message": null
}
После создания операции сохраните id и проверяйте её статус запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const status = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const result = await status.json()
После завершения Veo 3.1 возвращает видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veo-3-1/result.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на готовый mp4-файл.Цена зависит от выбранной модели (model_tier):
| Модель | Цена |
|---|---|
Обычная (standard) | 50 ₽ |
Быстрая (fast) | 30 ₽ |
Тип генерации, соотношение сторон и использование конечного кадра на цену не влияют.
input_reference_url и end_reference_url разрешены только внешние http/https URL с расширениями jpg, jpeg, png, webp.HEIC/HEIF, которые работают при загрузке файлов через UI, в Public API по URL не поддерживаются.generation_type = text поля input_reference_url, use_end_image и end_reference_url игнорируются. Передавать их не нужно.generation_type = image без use_end_image = true поле end_reference_url игнорируется.POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию.queued, затем проверяете статус по id.