Общая документация Public API · API-ключ можно создать в настройках аккаунта
Grok Video 1.5 превращает изображения в короткое видео по текстовому описанию движения, ракурса камеры и атмосферы сцены. Через API можно передать:
Соотношение сторон итогового видео можно задать явно или оставить автоматический выбор по исходному изображению. Каждый вызов создаёт асинхронную операцию: запрос сразу возвращает id и стартовый статус, а готовое видео нужно получать отдельной проверкой статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id, стартовый статус и стоимость.Базовая форма запроса:
{
"tool": "grok-video-1-5",
"input": {
"...": "..."
}
}
tool - slug нейросети. Для этой модели всегда используйте "grok-video-1-5".input - параметры конкретного запуска.image_urls обязателен: без хотя бы одного изображения запустить генерацию нельзя.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Задание для видео: что должно происходить в кадре, движение камеры, атмосфера, свет. От 3 до 4096 символов. |
image_urls | string[] (url) | Да | Массив внешних URL изображений. От 1 до 7 файлов. Разрешены только http/https ссылки. Допустимые расширения: .jpg, .jpeg, .png, .webp. |
aspect_ratio | enum | Да | Соотношение сторон итогового видео. Варианты: auto (автоматически по первому изображению), 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. |
duration | number | Да | Длительность видео в секундах. От 1 до 15. Цена считается за каждую секунду с округлением вверх. |
resolution | enum | Да | Разрешение результата. Варианты: 480p, 720p. Прямо влияет на итоговую цену. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "grok-video-1-5",
"input": {
"prompt": "Плавный пролёт камеры вокруг персонажа, волосы развеваются на ветру, мягкий закатный свет",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg"
],
"aspect_ratio": "auto",
"duration": 6,
"resolution": "720p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'grok-video-1-5',
input: {
prompt:
'Плавный пролёт камеры вокруг персонажа, волосы развеваются на ветру, мягкий закатный свет',
image_urls: ['https://cdn.example.com/source-image-1.jpg'],
aspect_ratio: 'auto',
duration: 6,
resolution: '720p',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "grok-video-1-5",
"input": {
"prompt": "Плавный пролёт камеры вокруг персонажа, волосы развеваются на ветру, мягкий закатный свет",
"image_urls": ["https://cdn.example.com/source-image-1.jpg"],
"aspect_ratio": "auto",
"duration": 6,
"resolution": "720p",
},
},
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": "grok-video-1-5",
"input": {
"prompt": "Плавный переход между кадрами товара, лёгкое вращение, студийный свет, чистый фон",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"aspect_ratio": "16:9",
"duration": 10,
"resolution": "480p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'grok-video-1-5',
input: {
prompt:
'Плавный переход между кадрами товара, лёгкое вращение, студийный свет, чистый фон',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
aspect_ratio: '16:9',
duration: 10,
resolution: '480p',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "grok-video-1-5",
"input": {
"prompt": "Плавный переход между кадрами товара, лёгкое вращение, студийный свет, чистый фон",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg",
],
"aspect_ratio": "16:9",
"duration": 10,
"resolution": "480p",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "grok-video-1-5",
"cost": 24,
"balance_after": 495,
"created_at": "2026-08-02T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "grok-video-1-5",
"cost": 24,
"created_at": "2026-08-02T12:00:00Z",
"completed_at": "2026-08-02T12:02:15Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/grok-video-1-5/result.mp4"
]
},
"error_message": null
}
После создания операции сохраните id и используйте его для отдельной проверки статуса:
GET /api/v1/operations/{id}id возвращается сразу после POST /api/v1/operations.curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const data = await response.json()
console.log(data)
После успешного завершения операция возвращает result в таком формате:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/grok-video-1-5/result.mp4"
]
}
Что важно знать:
type всегда "video";urls - массив ссылок на готовые mp4-файлы;Итоговая цена зависит от двух параметров: выбранного разрешения resolution и длительности duration.
Ставка за секунду видео:
| Разрешение | Ставка |
|---|---|
480p | 2 ₽/сек |
720p | 4 ₽/сек |
Длительность округляется вверх до целого числа секунд, поэтому duration = 7.2 тарифицируется как 8 секунд. Минимальная длительность - 1 секунда, максимальная - 15 секунд.
Примеры расчёта:
480p и duration = 6 - 12 ₽;720p и duration = 6 - 24 ₽;480p и duration = 10 - 20 ₽;720p и duration = 15 - 60 ₽.Количество изображений в image_urls не влияет на цену.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.queued, затем отдельно проверяете статус по id.image_urls подходят только внешние http/https URL. localhost, private IP и внутренние адреса не принимаются.image_urls используйте только .jpg, .jpeg, .png или .webp. Форматы HEIC/HEIF поддерживаются только при загрузке файлов через форму сайта и не принимаются Public API по ссылке.1 до 7 изображений.aspect_ratio = "auto", соотношение сторон итогового видео берётся из этого изображения.GET /api/v1/operations/{id} слишком часто. Практически безопасно проверять статус примерно раз в секунду.