Генерирует короткие ролики по тексту, картинке или исходному видео, чтобы быстро оживить идею или сделать мини-сцену. Стоимость от 70 до 300 рублей за видео в зависимости от длительности и разрешения.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Wan 2.6 генерирует короткие видеоролики длительностью от 5 до 15 секунд. Поддерживает три режима работы: создание видео по текстовому описанию, анимация загруженного изображения и стилизация исходного видео. Каждый вызов создаёт асинхронную операцию - сначала вы получаете id, а затем проверяете статус и забираете готовый ролик.
Типичные сценарии:
POST /api/v1/operationsAuthorization: Bearer brth_...id, стартовый статус и стоимость.Режим определяется параметром model:
wan/2-6-text-to-video - генерация видео по тексту, без файлов.wan/2-6-image-to-video - анимация загруженного изображения по текстовому описанию.wan/2-6-video-to-video - стилизация или переработка исходного видео.{
"tool": "wan-2-6",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "wan-2-6".input - параметры конкретного запуска. Набор полей зависит от выбранного режима.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
model | enum | Да | Режим генерации. Варианты: wan/2-6-text-to-video (видео из текста), wan/2-6-image-to-video (видео из изображения), wan/2-6-video-to-video (видео из видео). |
prompt | string | Да | Текстовое описание сцены: кто в кадре, что происходит, стиль, освещение, движение камеры. Чем конкретнее описание, тем предсказуемее результат. От 2 до 5000 символов. |
image_urls | string[] (url) | Только для image-to-video | Массив с одной ссылкой на изображение. Допустимые расширения: .jpg, .jpeg, .png, .webp. Только внешние http/https URL. |
video_urls | string[] (url) | Только для video-to-video | Массив с одной ссылкой на видео. Допустимые расширения: .mp4, .mov, .webm. Только внешние http/https URL. |
duration | enum | Да | Длительность ролика. Варианты: 5 (5 сек), 10 (10 сек), 15 (15 сек). В режиме video-to-video длительность 15 недоступна - только 5 или 10. |
resolution | enum | Да | Разрешение видео. Варианты: 720p, 1080p. Влияет на цену. |
multi_shots | boolean | Нет | Если true, ролик будет состоять из нескольких шотов с переходами между планами. Если не передать или передать false - один непрерывный кадр. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "wan-2-6",
"input": {
"model": "wan/2-6-text-to-video",
"prompt": "Ночной город в неоновых огнях, камера медленно движется вдоль улицы, мокрый асфальт отражает свет вывесок",
"duration": "5",
"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: 'wan-2-6',
input: {
model: 'wan/2-6-text-to-video',
prompt:
'Ночной город в неоновых огнях, камера медленно движется вдоль улицы, мокрый асфальт отражает свет вывесок',
duration: '5',
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": "wan-2-6",
"input": {
"model": "wan/2-6-text-to-video",
"prompt": "Ночной город в неоновых огнях, камера медленно движется вдоль улицы, мокрый асфальт отражает свет вывесок",
"duration": "5",
"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": "wan-2-6",
"input": {
"model": "wan/2-6-image-to-video",
"prompt": "Портрет оживает, лёгкий ветер шевелит волосы, мягкий свет на лице, камера плавно приближается",
"image_urls": ["https://cdn.example.com/source-image-1.jpg"],
"duration": "5",
"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: 'wan-2-6',
input: {
model: 'wan/2-6-image-to-video',
prompt:
'Портрет оживает, лёгкий ветер шевелит волосы, мягкий свет на лице, камера плавно приближается',
image_urls: ['https://cdn.example.com/source-image-1.jpg'],
duration: '5',
resolution: '1080p',
},
}),
})
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": "wan-2-6",
"input": {
"model": "wan/2-6-image-to-video",
"prompt": "Портрет оживает, лёгкий ветер шевелит волосы, мягкий свет на лице, камера плавно приближается",
"image_urls": ["https://cdn.example.com/source-image-1.jpg"],
"duration": "5",
"resolution": "1080p",
},
},
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": "wan-2-6",
"input": {
"model": "wan/2-6-video-to-video",
"prompt": "Тот же ролик в стиле акварельного мультфильма, мягкие цвета и плавные линии",
"video_urls": ["https://cdn.example.com/source-video-1.mp4"],
"duration": "5",
"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: 'wan-2-6',
input: {
model: 'wan/2-6-video-to-video',
prompt:
'Тот же ролик в стиле акварельного мультфильма, мягкие цвета и плавные линии',
video_urls: ['https://cdn.example.com/source-video-1.mp4'],
duration: '5',
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": "wan-2-6",
"input": {
"model": "wan/2-6-video-to-video",
"prompt": "Тот же ролик в стиле акварельного мультфильма, мягкие цвета и плавные линии",
"video_urls": ["https://cdn.example.com/source-video-1.mp4"],
"duration": "5",
"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": "wan-2-6",
"input": {
"model": "wan/2-6-text-to-video",
"prompt": "Космонавт выходит из корабля, панорама звёздного неба, крупный план шлема с отражением планеты",
"duration": "10",
"resolution": "1080p",
"multi_shots": true
}
}'
{
"id": "op_uuid-123",
"status": "queued",
"tool": "wan-2-6",
"cost": 70,
"balance_after": 495,
"created_at": "2026-03-30T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "wan-2-6",
"cost": 70,
"created_at": "2026-03-30T12:00:00Z",
"completed_at": "2026-03-30T12:02:15Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/wan-2-6/result.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "wan-2-6",
"cost": 70,
"created_at": "2026-03-30T12:00:00Z",
"completed_at": "2026-03-30T12:01:30Z",
"result": null,
"error_message": "Описание ошибки"
}
После создания операции сохраните 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/wan-2-6/result.mp4"
]
}
type - всегда "video".urls - массив ссылок на готовые видеофайлы. Обычно возвращается один ролик.Если операция завершилась с ошибкой, result будет null, а текст ошибки вернётся в error_message.
Цена зависит от двух параметров: разрешения и длительности.
| Разрешение | Длительность | Цена |
|---|---|---|
| 720p | 5 сек | 70 ₽ |
| 720p | 10 сек | 140 ₽ |
| 720p | 15 сек | 210 ₽ |
| 1080p | 5 сек | 100 ₽ |
| 1080p | 10 сек | 200 ₽ |
| 1080p | 15 сек | 300 ₽ |
Цена одинаковая для всех трёх режимов (видео из текста, видео из изображения, видео из видео) и не зависит от использования multi-shot.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.queued, затем отдельно проверяете статус по id.image_urls и video_urls подходят только внешние http/https URL. localhost, private IP и внутренние адреса не принимаются..jpg, .jpeg, .png, .webp. Форматы HEIC/HEIF, которые поддерживаются при загрузке в UI, в Public API по URL не принимаются..mp4, .mov, .webm.image_urls и video_urls передаются как массив, но максимум одна ссылка в каждом.video-to-video длительность 15 секунд недоступна - используйте 5 или 10.multi_shots можно не передавать - по умолчанию будет один непрерывный кадр.