Генерирует короткие видео по текстовому описанию или загруженному изображению с синхронным звуком и реалистичной физикой. Цена зависит от модели, разрешения и длительности: от 15 до 75 ₽ за секунду видео.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Sora 2 создаёт короткие видео по текстовому заданию или по исходному изображению. Через API его удобно использовать для роликов под соцсети, промо-материалов, анимации иллюстраций, визуализации сцен и быстрых видео-черновиков.
Основные сценарии:
Sora 2 или в модели Sora 2 Pro, если нужны дополнительные размеры кадра или 1080p для видео из изображения.Каждый запуск создаёт асинхронную операцию. API сразу возвращает id, стартовый статус и стоимость, а готовое видео нужно получить отдельной проверкой статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус.У инструмента два режима:
sora_ws_generation_type = "text" - видео из текстового описания;sora_ws_generation_type = "image" - видео из одного изображения.Модель выбирается через sora_ws_model_tier:
standard - Sora 2;pro - Sora 2 Pro.В текстовом режиме размер кадра задаётся полем size_std для standard и полем size_pro для pro. В режиме изображения для standard отдельное разрешение не передаётся, а для pro используется поле resolution.
{
"tool": "sora-2",
"input": {
"sora_ws_generation_type": "text",
"sora_ws_model_tier": "standard",
"prompt": "Кинематографичный ролик: электромобиль едет по ночному городу, мокрый асфальт отражает неон, камера плавно следует сбоку",
"size_std": "1280*720",
"duration": "8"
}
}
tool - slug нейросети, всегда "sora-2".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
sora_ws_generation_type | enum | Да | Тип генерации. Варианты: text - видео из текста, image - видео из изображения. |
sora_ws_model_tier | enum | Да | Модель генерации. Варианты: standard - Sora 2, pro - Sora 2 Pro. Pro-режим даёт больше размеров кадра для текста и поддерживает 1080p для видео из изображения. |
prompt | string | Да | Текстовое задание для ролика: сцена, главный объект, действие, движение камеры, стиль, свет и настроение. От 2 до 5000 символов. |
image | string (url) | Да, только для sora_ws_generation_type = "image" | Внешний http/https URL одного исходного изображения. Используйте публично доступную ссылку на .jpg, .jpeg, .png или .webp, до 10 МБ. |
size_std | enum | Да, только для text + standard | Размер кадра для текстовой генерации Sora 2. Варианты: 720*1280 - вертикальное видео, 1280*720 - горизонтальное видео. |
size_pro | enum | Да, только для text + pro | Размер кадра для текстовой генерации Sora 2 Pro. Варианты: 720*1280, 1280*720, 1024*1792, 1792*1024, 1920*1080, 1080*1920. Размеры 1920*1080 и 1080*1920 стоят дороже. |
resolution | enum | Да, только для image + pro | Разрешение результата для видео из изображения в Sora 2 Pro. Варианты: 720p, 1080p. |
duration | enum | Да | Длительность ролика в секундах. Варианты: "4", , , , . Итоговая цена считается как ставка за секунду, умноженная на длительность. |
Подходит для обычной генерации по описанию, когда не нужно исходное изображение.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "sora-2",
"input": {
"sora_ws_generation_type": "text",
"sora_ws_model_tier": "standard",
"prompt": "Горизонтальный ролик: спортивный велосипед едет по пустой утренней набережной, солнце отражается в воде, камера плавно движется рядом",
"size_std": "1280*720",
"duration": "8"
}
}'
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: {
sora_ws_generation_type: 'text',
sora_ws_model_tier: 'standard',
prompt:
'Горизонтальный ролик: спортивный велосипед едет по пустой утренней набережной, солнце отражается в воде, камера плавно движется рядом',
size_std: '1280*720',
duration: '8',
},
}),
})
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': 'sora-2',
'input': {
'sora_ws_generation_type': 'text',
'sora_ws_model_tier': 'standard',
'prompt': 'Горизонтальный ролик: спортивный велосипед едет по пустой утренней набережной, солнце отражается в воде, камера плавно движется рядом',
'size_std': '1280*720',
'duration': '8',
},
},
timeout=30,
)
print(response.json()['id'])
Используйте image, когда нужно оживить конкретный кадр, товар, персонажа, интерьер или иллюстрацию.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "sora-2",
"input": {
"sora_ws_generation_type": "image",
"sora_ws_model_tier": "standard",
"prompt": "Оживи изображение: человек слегка поворачивает голову, появляется естественная улыбка, мягкий студийный свет, камера медленно приближается",
"image": "https://cdn.example.com/source-portrait-1.jpg",
"duration": "4"
}
}'
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: {
sora_ws_generation_type: 'image',
sora_ws_model_tier: 'standard',
prompt:
'Оживи изображение: человек слегка поворачивает голову, появляется естественная улыбка, мягкий студийный свет, камера медленно приближается',
image: 'https://cdn.example.com/source-portrait-1.jpg',
duration: '4',
},
}),
})
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': 'sora-2',
'input': {
'sora_ws_generation_type': 'image',
'sora_ws_model_tier': 'standard',
'prompt': 'Оживи изображение: человек слегка поворачивает голову, появляется естественная улыбка, мягкий студийный свет, камера медленно приближается',
'image': 'https://cdn.example.com/source-portrait-1.jpg',
'duration': '4',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Sora 2 Pro используется так же, но с sora_ws_model_tier = "pro". В текстовом режиме передайте size_pro, а в режиме изображения передайте resolution.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "sora-2",
"input": {
"sora_ws_generation_type": "text",
"sora_ws_model_tier": "pro",
"prompt": "Вертикальный рекламный ролик: флакон духов стоит на зеркальной поверхности, вокруг клубится лёгкий дым, камера медленно поднимается вверх",
"size_pro": "1080*1920",
"duration": "4"
}
}'
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "sora-2",
"input": {
"sora_ws_generation_type": "image",
"sora_ws_model_tier": "pro",
"prompt": "Сделай плавную анимацию продукта: камера облетает объект, фон остаётся чистым, световые блики подчёркивают форму",
"image": "https://cdn.example.com/source-product-1.webp",
"resolution": "1080p",
"duration": "4"
}
}'
{
"id": "op_1234567890abcdef",
"status": "queued",
"tool": "sora-2",
"cost": 120,
"balance_after": 880,
"created_at": "2026-03-13T12:00:00Z"
}
cost зависит от модели, размера или разрешения и длительности. В примере выше обычная Sora 2 стоит 15 ₽ за секунду, длительность 8 секунд, итоговая стоимость 120 ₽.
{
"id": "op_1234567890abcdef",
"status": "completed",
"tool": "sora-2",
"cost": 120,
"created_at": "2026-03-13T12:00:00Z",
"completed_at": "2026-03-13T12:02:10Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/sora-2/video-1.mp4"
],
"previewUrl": "https://storage.bratuha.ru/results/sora-2/video-1.mp4"
},
"error_message": null
}
{
"id": "op_1234567890abcdef",
"status": "failed",
"tool": "sora-2",
"cost": 120,
"created_at": "2026-03-13T12:00:00Z",
"completed_at": "2026-03-13T12:01:05Z",
"result": null,
"error_message": "Не удалось выполнить генерацию"
}
Проверяйте операцию по id, который вернулся после создания. Этот id нужно сохранить на своей стороне.
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_1234567890abcdef
const operationId = 'op_1234567890abcdef'
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)
После успешного завершения result содержит видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/sora-2/video-1.mp4"
],
"previewUrl": "https://storage.bratuha.ru/results/sora-2/video-1.mp4"
}
type - тип результата, для Sora 2 это video.urls - массив ссылок на готовые видеофайлы.previewUrl - ссылка для предпросмотра, если она доступна.Обычно возвращается одно готовое видео. Храните ссылку из urls у себя, если она нужна дальше в вашем продукте.
Цена считается за секунду видео:
duration;Ставки:
| Режим | Настройка | Ставка |
|---|---|---|
| Sora 2, текст | sora_ws_model_tier = "standard", size_std = "720*1280" или "1280*720" | 15 ₽/сек |
| Sora 2, изображение | sora_ws_model_tier = "standard" | 15 ₽/сек |
| Sora 2 Pro, текст | size_pro = "720*1280", "1280*720", "1024*1792" или "1792*1024" | 45 ₽/сек |
| Sora 2 Pro, текст | size_pro = "1920*1080" или "1080*1920" | 75 ₽/сек |
| Sora 2 Pro, изображение | resolution = "720p" | 45 ₽/сек |
| Sora 2 Pro, изображение | resolution = "1080p" | 75 ₽/сек |
Примеры расчёта:
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и повторно списывает стоимость.id и проверяйте статус через GET /api/v1/operations/{id}.image нужны только внешние http/https URL. localhost, loopback, private IP и внутренние адреса не принимаются..jpg, .jpeg, .png или .webp. Форматы HEIC/HEIF относятся к загрузке через интерфейс сайта и не должны использоваться в API-примерах.text не передавайте image и resolution.image для standard не передавайте size_std, size_pro и resolution.image для pro передавайте resolution.standard используйте size_std; в текстовом режиме pro используйте size_pro.prompt, тем проще получить предсказуемое видео: опишите объект, действие, окружение, движение камеры, свет и стиль."8""12""16""20"