Редактирует ваше видео по текстовому заданию: меняет одежду и предметы, перекрашивает сцены, может заменять персонажей, стараясь сохранить движение и целостность кадра. Цена зависит от качества: 480p - 8 ₽/сек., 720p - 16 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Wan 2.2 Video Edit правит готовое видео по текстовому заданию. Можно переодеть человека, заменить или перекрасить предмет, сменить фон или время суток, заменить персонажа. Движение, ракурс и монтаж исходного ролика при этом сохраняются, поэтому правку не нужно снимать заново.
На вход нужны видео и задание, что в нём поменять. Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Сценарий у нейросети один - правка видео по заданию. Отличаются только текст задания и разрешение.
{
"tool": "wan-2-2-video-edit",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "wan-2-2-video-edit".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Что изменить в видео и что оставить как есть. Например: «замени серый свитер на красное платье, остальное не меняй». От 3 до 2000 символов. |
video | string (url) | Да | Ссылка на исходное видео. Один файл: mp4, mov или webm, длительность от 1 до 120 секунд. |
resolution | enum | Да | Разрешение результата: 480p или 720p. Если не указать - 480p. |
Ссылка в video - только внешний http/https URL с указанным расширением. Файл должен открываться без авторизации.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "wan-2-2-video-edit",
"input": {
"prompt": "Замени серый свитер женщины на ярко-красный, остальное не меняй",
"video": "https://cdn.example.com/source-video-1.mp4",
"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: 'wan-2-2-video-edit',
input: {
prompt: 'Замени серый свитер женщины на ярко-красный, остальное не меняй',
video: 'https://cdn.example.com/source-video-1.mp4',
resolution: '480p',
},
}),
})
const data = await response.json()
console.log(data.id, data.status, data.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'wan-2-2-video-edit',
'input': {
'prompt': 'Замени серый свитер женщины на ярко-красный, остальное не меняй',
'video': 'https://cdn.example.com/source-video-1.mp4',
'resolution': '480p',
},
},
timeout=60,
)
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-2-video-edit",
"input": {
"prompt": "Перенеси людей на брусчатку в осеннем парке, их движения и одежду не меняй",
"video": "https://cdn.example.com/street-video-1.mov",
"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-2-video-edit',
input: {
prompt:
'Перенеси людей на брусчатку в осеннем парке, их движения и одежду не меняй',
video: 'https://cdn.example.com/street-video-1.mov',
resolution: '720p',
},
}),
})
const data = await response.json()
console.log(data.id, data.status, data.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'wan-2-2-video-edit',
'input': {
'prompt': 'Перенеси людей на брусчатку в осеннем парке, их движения и одежду не меняй',
'video': 'https://cdn.example.com/street-video-1.mov',
'resolution': '720p',
},
},
timeout=60,
)
print(response.status_code)
print(response.json())
Создание операции может занять несколько секунд: сервер сначала скачивает видео, чтобы узнать его длительность и посчитать цену. Поэтому таймаут клиента лучше ставить не меньше 60 секунд.
Для видео длиной 5 секунд в 480p:
{
"id": "op_uuid-123",
"status": "queued",
"tool": "wan-2-2-video-edit",
"cost": 40,
"balance_after": 460,
"created_at": "2026-09-30T19:50:11.078587+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "wan-2-2-video-edit",
"cost": 40,
"created_at": "2026-09-30T19:50:11.078587+00:00",
"completed_at": "2026-09-30T19:52:02.209448+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/wan-2-2-video-edit/video-1.mp4"
]
},
"error_message": null
}
Сохраните id из ответа на создание и проверяйте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id: string) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 15000))
}
}
Видео на 5 секунд в 480p обрабатывается около двух минут, длинные ролики и 720p - дольше. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 15 секунд.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/wan-2-2-video-edit/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4.480p приходит размером 848x464.Цена считается за каждую секунду исходного видео и зависит от разрешения:
| Разрешение | За секунду | 5 сек. | 10 сек. | 60 сек. | 120 сек. |
|---|---|---|---|---|---|
480p | 8 ₽ | 40 ₽ | 80 ₽ | 480 ₽ | 960 ₽ |
720p | 16 ₽ | 80 ₽ | 160 ₽ | 960 ₽ | 1920 ₽ |
video и округляет вверх до целой секунды: ролик на 5,5 секунды считается как 6 секунд.cost. Чтобы заплатить меньше, обрежьте видео до фрагмента, который нужно изменить.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.video принимает только внешние http/https ссылки. Адреса localhost и внутренних сетей не принимаются, файл должен открываться без авторизации.