Генерирует короткие видео по текстовому описанию или по загруженному изображению. Цена зависит от модели: Sora 2 - 25 ₽ за видео, Sora Pro - 140 ₽ за видео.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Sora 2 создаёт короткие видео по текстовому описанию и умеет оживлять одно исходное изображение. Это удобно для промо-роликов, коротких вертикальных видео, анимации иллюстраций и быстрых концепт-видео для соцсетей.
В Public API доступны два сценария:
sora-2-text-to-video - генерация видео только по тексту.sora-2-image-to-video - генерация видео по тексту с одним исходным изображением.Каждый вызов создаёт асинхронную операцию. После запуска нужно сохранить id и отдельно проверять статус.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус.Доступные режимы:
sora-2-text-to-video - видео из текста.sora-2-image-to-video - видео из текста с одним исходным изображением.{
"tool": "sora-2",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь это всегда "sora-2".input - параметры конкретного запуска.input, без дополнительного input.input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
model | enum | Да | Режим генерации. Варианты: sora-2-text-to-video - видео из текста, sora-2-image-to-video - видео по тексту и изображению. |
prompt | string | Да | Текстовое описание будущего видео. Чем конкретнее движение, сцена, стиль, свет и ракурс, тем предсказуемее результат. |
image_urls | string[] (url) | Да, только для sora-2-image-to-video | Массив с одним внешним URL изображения, которое используется как стартовый кадр или визуальный референс. Разрешены только http/https ссылки. Допустимые расширения для Public API: .jpg, .jpeg, .png, .webp. |
aspect_ratio | enum | Да | Ориентация видео. Варианты: landscape - горизонтальное, portrait - вертикальное. |
n_frames | enum | Да | Длительность видео. Варианты: 10 - 10 секунд, 15 - 15 секунд. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "sora-2",
"input": {
"model": "sora-2-text-to-video",
"prompt": "Кинематографичный пролёт камеры над ночным городом после дождя, отражения в асфальте, мягкий туман, реалистичный свет, плавное движение камеры",
"aspect_ratio": "landscape",
"n_frames": "10"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'sora-2',
input: {
model: 'sora-2-text-to-video',
prompt: 'Кинематографичный пролёт камеры над ночным городом после дождя, отражения в асфальте, мягкий туман, реалистичный свет, плавное движение камеры',
aspect_ratio: 'landscape',
n_frames: '10',
},
}),
})
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': 'sora-2',
'input': {
'model': 'sora-2-text-to-video',
'prompt': 'Кинематографичный пролёт камеры над ночным городом после дождя, отражения в асфальте, мягкий туман, реалистичный свет, плавное движение камеры',
'aspect_ratio': 'landscape',
'n_frames': '10',
},
},
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": "sora-2",
"input": {
"model": "sora-2-image-to-video",
"prompt": "Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, реалистичная анимация, сохранить черты лица и общую композицию кадра",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg"
],
"aspect_ratio": "portrait",
"n_frames": "15"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'sora-2',
input: {
model: 'sora-2-image-to-video',
prompt: 'Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, реалистичная анимация, сохранить черты лица и общую композицию кадра',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
],
aspect_ratio: 'portrait',
n_frames: '15',
},
}),
})
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': 'sora-2',
'input': {
'model': 'sora-2-image-to-video',
'prompt': 'Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, реалистичная анимация, сохранить черты лица и общую композицию кадра',
'image_urls': [
'https://cdn.example.com/source-image-1.jpg',
],
'aspect_ratio': 'portrait',
'n_frames': '15',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "sora-2",
"cost": 25,
"balance_after": 495,
"created_at": "2026-03-15T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "sora-2",
"cost": 25,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T12:03:40Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/sora-2/result.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "sora-2",
"cost": 25,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T12:00:24Z",
"result": null,
"error_message": "Произошла ошибка, сервис временно недоступен. Попробуйте повторить запрос позже."
}
После создания операции сохраните id и проверяйте её статус запросом:
GET /api/v1/operations/{id}
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()
После успешного завершения result возвращает готовое видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/sora-2/result.mp4"
]
}
type всегда равен "video".urls содержит ссылки на готовые mp4-файлы.Базовая цена зависит от длительности ролика:
10 секунд - 25 ₽15 секунд - 30 ₽Что влияет на итоговую цену:
n_frames, который задаёт длительность видео.Других ценовых модификаторов в текущем публичном контракте нет.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.id.image_urls подходят только внешние http/https URL..jpg, .jpeg, .png, .webp.HEIC/HEIF можно встретить в UI-загрузке, но по URL в Public API они не принимаются.image_urls допускается только один URL, даже если поле передаётся массивом.image_urls нужно только для режима sora-2-image-to-video. Для sora-2-text-to-video его передавать не нужно.prompt описаны движение, ракурс, стиль и ограничения по сохранению композиции, тем стабильнее результат.