Переносит движение из видео на ваших персонажей или заменяет предметы в кадре, сохраняя движение и ракурс; облегчённая версия Genjutsu для роликов до 15 секунд. Цена зависит от разрешения: 480p — 14 ₽/сек., 720p — 28 ₽/сек., 1080p — 56 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Higgsfield Genjutsu Light - облегчённая версия Higgsfield Genjutsu для коротких роликов. Она берёт готовое видео от 4 до 15 секунд и сохраняет его движение, ракурс и монтаж, а меняет то, что вы попросите:
Смены стиля ролика здесь нет, она есть только у higgsfield-genjutsu. Платите за секунды исходного видео, ставка зависит от разрешения. Вызов создаёт асинхронную операцию: сначала приходит id, затем вы проверяете статус, пока не будет готово видео.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим выбирается параметром genjutsu_mode:
genjutsu_mode | Что на входе | Что получится |
|---|---|---|
motion_transfer | Видео с движением и 1-8 фото персонажей, предметов или одежды | Ваш персонаж повторяет движение из видео |
object_swap | Видео и 1-8 фото новых объектов | То же видео, где нужный предмет или персонаж заменён на объект с фото |
Если genjutsu_mode не передать, будет motion_transfer. У каждого режима своё поле задания: prompt_motion или prompt_swap. Поле другого режима передавать не нужно, оно не учитывается.
{
"tool": "higgsfield-genjutsu-light",
"input": {
"genjutsu_mode": "motion_transfer",
"...": "..."
}
}
tool - slug нейросети, всегда "higgsfield-genjutsu-light".input - параметры запуска. Все поля передаются прямо внутри этого объекта, вложенных объектов нет.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
genjutsu_mode | enum | Да | Режим: motion_transfer - перенос движения, object_swap - замена объекта. По умолчанию motion_transfer. |
video_url | string (url) | Да | Ссылка на исходное видео длиной от 4 до 15 секунд. Только внешние http/https URL с расширением .mp4 или .mov, файл до 100 МБ. По длине ролика считается цена. |
image_urls | string[] (url) | Да | От 1 до 8 ссылок на фото: персонажи, предметы или одежда, которые должны появиться в видео. Расширения .jpg, .jpeg, .png, .webp. |
prompt_motion | string | Нет | Задание для motion_transfer: кто с какого фото что делает, какой нужен фон. До 10000 символов, можно по-русски. Можно не передавать. |
prompt_swap | string | Нет | Задание для object_swap: что именно заменить и на что, что оставить как есть. До 10000 символов. Можно не передавать, но с ним замена точнее. |
resolution | enum | Да | Разрешение результата: 480p, 720p или 1080p. По умолчанию 720p. От него зависит ставка за секунду. Пропорции кадра берутся из исходного видео. |
motion_transfer)Енот с фото повторяет танец девушки из 6-секундного ролика. Два фото - сам енот и его куртка. 480p, стоимость - 84 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu-light",
"input": {
"genjutsu_mode": "motion_transfer",
"video_url": "https://cdn.example.com/source-video-1.mp4",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"prompt_motion": "Енот с фото 1 в куртке с фото 2 повторяет танец из видео.",
"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: 'higgsfield-genjutsu-light',
input: {
genjutsu_mode: 'motion_transfer',
video_url: 'https://cdn.example.com/source-video-1.mp4',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
prompt_motion: 'Енот с фото 1 в куртке с фото 2 повторяет танец из видео.',
resolution: '480p',
},
}),
})
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': 'higgsfield-genjutsu-light',
'input': {
'genjutsu_mode': 'motion_transfer',
'video_url': 'https://cdn.example.com/source-video-1.mp4',
'image_urls': [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
'prompt_motion': 'Енот с фото 1 в куртке с фото 2 повторяет танец из видео.',
'resolution': '480p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
object_swap)В 5-секундном ролике по луже плывёт бумажный кораблик, его меняем на кружку с фото. 720p, стоимость - 140 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu-light",
"input": {
"genjutsu_mode": "object_swap",
"video_url": "https://cdn.example.com/source-video-2.mp4",
"image_urls": [
"https://cdn.example.com/source-image-3.png",
"https://cdn.example.com/source-image-4.png"
],
"prompt_swap": "Замени бумажный кораблик на кружку с фото 1, она так же плывёт по луже. Узор кружки - как на фото 2, остальное не меняй.",
"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: 'higgsfield-genjutsu-light',
input: {
genjutsu_mode: 'object_swap',
video_url: 'https://cdn.example.com/source-video-2.mp4',
image_urls: [
'https://cdn.example.com/source-image-3.png',
'https://cdn.example.com/source-image-4.png',
],
prompt_swap: 'Замени бумажный кораблик на кружку с фото 1, она так же плывёт по луже. Узор кружки - как на фото 2, остальное не меняй.',
resolution: '720p',
},
}),
})
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': 'higgsfield-genjutsu-light',
'input': {
'genjutsu_mode': 'object_swap',
'video_url': 'https://cdn.example.com/source-video-2.mp4',
'image_urls': [
'https://cdn.example.com/source-image-3.png',
'https://cdn.example.com/source-image-4.png',
],
'prompt_swap': 'Замени бумажный кораблик на кружку с фото 1, она так же плывёт по луже. Узор кружки - как на фото 2, остальное не меняй.',
'resolution': '720p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "higgsfield-genjutsu-light",
"cost": 84,
"balance_after": 916,
"created_at": "2026-10-22T13:45:02Z"
}
cost - сколько списано за операцию, в рублях.balance_after - баланс после списания.{
"id": "op_uuid-123",
"status": "completed",
"tool": "higgsfield-genjutsu-light",
"cost": 84,
"created_at": "2026-10-22T13:45:02Z",
"completed_at": "2026-10-22T13:52:10Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/higgsfield-genjutsu-light/video-1.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "higgsfield-genjutsu-light",
"cost": 84,
"created_at": "2026-10-22T13:45:02Z",
"completed_at": "2026-10-22T13:51:40Z",
"result": null,
"error_message": "Ваш запрос не прошел модерацию. Запрещено: nsfw."
}
Деньги за операцию со статусом failed возвращаются на баланс.
Сохраните id из ответа на создание и запрашивайте статус операции по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id) {
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))
}
}
Статус операции:
queued - операция создана и ждёт запуска;processing - видео обрабатывается;completed - готово, ссылка лежит в result;failed - не получилось, причина в error_message.В наших запусках ролики по 5-8 секунд в 480p и 720p были готовы за 6-10 минут в обоих режимах. Длинные ролики и 1080p обрабатываются дольше, закладывайте до получаса. Опрашивать статус раз в 10-15 секунд достаточно, чаще раза в секунду нельзя - придёт 429.
В обоих режимах результат - одно видео MP4:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/higgsfield-genjutsu-light/video-1.mp4"
]
}
type - всегда "video".urls - массив из одной ссылки на готовый файл.Пропорции кадра повторяют исходник, а короткая сторона кадра соответствует resolution: вертикальный ролик 704×1280 в 480p вернулся как 480×854, горизонтальный 960×540 - как 854×480. Звук исходника сохраняется. Длина результата - длина исходника, округлённая вверх до целой секунды: из ролика на 6 секунд пришло 6 секунд, из ролика на 8,04 секунды - 9 секунд, причём в добавленной доле секунды движение продолжается без звука. Частота кадров результата в наших запусках - 30 кадров в секунду.
Цена - за каждую секунду исходного видео, ставка зависит только от resolution:
resolution | За секунду | 4 с | 5 с | 10 с | 15 с |
|---|---|---|---|---|---|
480p | 14 ₽ | 56 ₽ | 70 ₽ | 140 ₽ | 210 ₽ |
720p | 28 ₽ | 112 ₽ | 140 ₽ | 280 ₽ | 420 ₽ |
1080p | 56 ₽ | 224 ₽ | 280 ₽ | 560 ₽ | 840 ₽ |
Длительность сервер сам определяет по файлу и округляет вверх до целой секунды: ролик 8,1 секунды считается как 9 секунд. Минимум - 4 секунды, максимум - 15 секунд.
Режим, задание и число фото на цену не влияют. Точная сумма приходит в поле cost ответа на создание операции и сразу списывается с баланса. Ставки могут меняться - перед массовыми запусками сверяйтесь с cost или передавайте max_price.
POST /api/v1/operations не идемпотентен: каждый запрос создаёт новую операцию и списывает деньги. Чтобы безопасно повторять запрос при обрыве связи, передайте UUID в заголовке Idempotency-Key: повтор в течение 24 часов вернёт исходную операцию без нового списания.max_price в теле запроса, если хотите, чтобы сервер отклонил запуск дороже согласованной суммы ещё до списания. Полезно для 1080p: 15 секунд стоят 840 ₽.queued, результат нужно забирать запросом статуса по id.http/https URL, которые открываются без авторизации. Видео - .mp4 или .mov до 100 МБ, фото - .jpg, .jpeg, .png, .webp.400, операция не создастся и деньги не спишутся. Ролик длиннее 15 секунд обрежьте заранее или используйте higgsfield-genjutsu - она принимает до 30 секунд.object_swap берите исходник не меньше 854×480 или 640×640: на роликах меньшего размера замена может не пройти, тогда операция завершится ошибкой с возвратом денег.object_swap) может отклоняться как nsfw даже без откровенного содержания - деньги за такую операцию возвращаются.