Оживляет картинку по текстовому описанию: делает ролик 720p около 5 секунд без звука. Цена — 45 ₽ за видео.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Waver 1.0 оживляет картинку по текстовому описанию: вы передаёте кадр и пишете, что в нём должно происходить, а модель возвращает ролик около 5 секунд в 720p. Настроек почти нет - только картинка и задание, поэтому модель удобно встраивать туда, где нужен предсказуемый результат по фиксированной цене: оживление фото товаров, иллюстраций, обложек и превью.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим у модели один - видео из изображения. Оба параметра обязательны: картинка задаёт первый кадр, задание - движение.
{
"tool": "waver-1-0",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "waver-1-0".input - параметры запуска. Поля prompt и image передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Что должно происходить в кадре: действие героя, движение камеры, атмосфера. От 3 до 2000 символов, можно по-русски. |
image | string (url) | Да | Ссылка на картинку, которая станет первым кадром. Один файл: jpg, jpeg, png или webp. |
Ссылка в image - только внешний http/https URL с расширением jpg, jpeg, png или webp. Длительность, качество и пропорции не настраиваются.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "waver-1-0",
"input": {
"prompt": "Идёт снег, женщина поправляет шарф и улыбается в камеру, огни витрин мягко мерцают, камера медленно приближается",
"image": "https://cdn.example.com/source-image-1.jpg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'waver-1-0',
input: {
prompt:
'Идёт снег, женщина поправляет шарф и улыбается в камеру, огни витрин мягко мерцают, камера медленно приближается',
image: 'https://cdn.example.com/source-image-1.jpg',
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'waver-1-0',
'input': {
'prompt': 'Идёт снег, женщина поправляет шарф и улыбается в камеру, огни витрин мягко мерцают, камера медленно приближается',
'image': 'https://cdn.example.com/source-image-1.jpg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "waver-1-0",
"cost": 45,
"balance_after": 455,
"created_at": "2026-09-30T21:31:10.969807+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "waver-1-0",
"cost": 45,
"created_at": "2026-09-30T21:31:10.969807+00:00",
"completed_at": "2026-09-30T21:34:18.878506+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/waver-1-0/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, 10000))
}
}
Обычно видео готово за 2-3 минуты. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 10 секунд.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/waver-1-0/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4.Цена фиксированная: 45 ₽ за один ролик. Длина задания, размер и формат картинки на цену не влияют.
| Что запускаете | Цена |
|---|---|
| Одно видео из картинки и задания | 45 ₽ |
Сумма списывается при создании операции и видна в поле cost. Если операция завершилась ошибкой, деньги возвращаются на баланс.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.image принимает только внешние http/https ссылки на jpg, jpeg, png или webp. Адреса localhost и внутренних сетей не принимаются, файл должен открываться без авторизации. Берите картинку до 10 МБ.duration или resolution модель не учитывает: ролик всегда около 5 секунд в 720p.