Переносит движение из видео на ваших персонажей, заменяет предметы в кадре или перерисовывает ролик в другом стиле, сохраняя движение и ракурс. Цена зависит от режима и разрешения: перенос движения и замена объекта — от 23 ₽/сек., смена стиля — от 45 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Higgsfield Genjutsu меняет готовое видео, сохраняя движение, ракурс и монтаж исходника. На входе всегда ролик от 4 до 30 секунд, дальше выбирается, что с ним сделать:
Платите за секунды исходного видео, ставка зависит от разрешения. Вызов создаёт асинхронную операцию: сначала приходит id, затем вы проверяете статус, пока не будет готово видео.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим выбирается параметром genjutsu_mode:
genjutsu_mode | Что на входе | Что получится |
|---|---|---|
motion_transfer | Видео с движением и 1-8 фото персонажей, предметов или одежды | Ваш персонаж повторяет движение из видео |
object_swap | Видео и 1-8 фото новых объектов | То же видео, где нужный предмет или персонаж заменён на объект с фото |
restyle | Видео, стиль из списка и, по желанию, до 5 фото персонажей | То же видео, перерисованное в выбранном стиле |
Если genjutsu_mode не передать, будет motion_transfer. У каждого режима своё поле задания и свой набор файлов, смотрите таблицу параметров. Поля другого режима передавать не нужно, они не учитываются.
{
"tool": "higgsfield-genjutsu",
"input": {
"genjutsu_mode": "motion_transfer",
"...": "..."
}
}
tool - slug нейросети, всегда "higgsfield-genjutsu".input - параметры запуска. Все поля передаются прямо внутри этого объекта, вложенных объектов нет.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
genjutsu_mode | enum | Да | Режим: motion_transfer - перенос движения, object_swap - замена объекта, restyle - смена стиля. По умолчанию motion_transfer. |
video_url | string (url) | Да | Ссылка на исходное видео длиной от 4 до 30 секунд. Только внешние http/https URL с расширением .mp4 или .mov, файл до 100 МБ. По длине ролика считается цена. |
image_urls | string[] (url) | Да, в режимах motion_transfer и object_swap | От 1 до 8 ссылок на фото: персонажи, предметы или одежда, которые должны появиться в видео. Расширения .jpg, .jpeg, .png, .webp. В режиме restyle не учитывается. |
prompt_motion | string | Нет | Задание для motion_transfer: кто с какого фото что делает, какой нужен фон. До 10000 символов, можно по-русски. Можно не передавать. |
prompt_swap | string | Нет | Задание для object_swap: что именно заменить и на что, что оставить как есть. До 10000 символов. Можно не передавать, но с ним замена точнее. |
preset_id | enum | Да, в режиме restyle | Стиль для restyle, значение - id из таблицы стилей ниже. По умолчанию c2143317-f28d-4c3c-a0b8-39bd547e08a7 (Аниме в 3D). |
restyle_image_urls | string[] (url) | Нет | До 5 фото персонажей для restyle: по ним модель перерисует героев ролика в выбранном стиле. Без фото стилизуются герои из самого видео. Расширения .jpg, .jpeg, .png, .webp. |
prompt_restyle | string | Нет | Задание для restyle: какие детали держать во всех кадрах, например цвет волос или одежды. Стиль задаётся только preset_id, текстом его не заменить. До 10000 символов. |
resolution | enum | Да | Разрешение результата: 480p, 720p или 1080p. По умолчанию 720p. От него зависит ставка за секунду. Пропорции кадра берутся из исходного видео. |
restylepreset_id | Стиль |
|---|---|
c2143317-f28d-4c3c-a0b8-39bd547e08a7 | Аниме в 3D |
f1d0c30d-a2ec-4c33-a892-d8d158e2d093 | Лоу-поли |
3dc6d454-808d-4e27-8a4e-4751da818324 | 3D-комикс |
368c6a65-4a48-4e3a-80c7-c460455b5e17 | Яркая 2D-анимация |
89484749-e1b9-40c9-979e-fc578c3aad6d | Модная гуашь |
bf6aee41-83a8-433c-b5a5-2309c7bd5b26 | Войлочные куклы |
523cf5be-67fc-46d6-bfdb-56ccc3e2a8f6 | Графичная рисовка |
c3268f8d-4cc0-423c-975d-ca1bf7df385a | Уличный гротеск 3D |
067b27d4-8d8f-44d1-a24b-0f4c28012e4b | Рисованный мультфильм |
2b5b68c4-9253-4d79-9d05-81e7718d8d7a | Вязаный мир |
41d02f6d-1d5d-4efa-9942-9fe71de9429b | Неоновое кино 3D |
e54beac7-ca48-4034-856b-0a6f2b05081a | Ночной пиксель-арт |
55aee79b-bb36-40e3-b957-205e6867a3d9 | Рисовка без контуров |
85bc9e2c-f896-41d7-b280-53f2f5e321ac | Живописное кино 3D |
083abd05-afbd-4cda-857f-7f2d2082e9b2 | Живописная лепка |
255f5244-b43d-43fc-9c28-7138f8c12984 | Ретро-игра 3D |
6bce8e75-df92-487f-a4f0-a324a6a297f3 | Игрушки 3D |
f7786536-123b-47b8-ab65-ee0647df1509 | Скульптурная мода 3D |
f2b4e920-3b1e-4931-8a86-b06566005145 | Гуашевая иллюстрация |
e82b7bbb-c8bf-4d70-a866-e7b15e744a2b | Тёплый мультфильм 3D |
motion_transfer)Енот с фото повторяет танец девушки из 6-секундного ролика. Два фото - сам енот и его куртка. 480p, стоимость - 138 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu",
"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',
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',
'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, стоимость - 240 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu",
"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',
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',
'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())
restyle)Тот же танец, перерисованный в стиле «Вязаный мир»: девушка и комната становятся связанными из пряжи. Исходник - MOV с телефона, 6 секунд, 480p, стоимость - 270 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu",
"input": {
"genjutsu_mode": "restyle",
"video_url": "https://cdn.example.com/source-video-3.mov",
"preset_id": "2b5b68c4-9253-4d79-9d05-81e7718d8d7a",
"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',
input: {
genjutsu_mode: 'restyle',
video_url: 'https://cdn.example.com/source-video-3.mov',
preset_id: '2b5b68c4-9253-4d79-9d05-81e7718d8d7a',
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',
'input': {
'genjutsu_mode': 'restyle',
'video_url': 'https://cdn.example.com/source-video-3.mov',
'preset_id': '2b5b68c4-9253-4d79-9d05-81e7718d8d7a',
'resolution': '480p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
restyle + restyle_image_urls)Ролик из двух героев в стиле «Аниме в 3D», внешность героев задаём фотографиями, а в задании просим держать детали. 10 секунд, 1080p, стоимость - 2290 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "higgsfield-genjutsu",
"input": {
"genjutsu_mode": "restyle",
"video_url": "https://cdn.example.com/source-video-4.mp4",
"preset_id": "c2143317-f28d-4c3c-a0b8-39bd547e08a7",
"restyle_image_urls": [
"https://cdn.example.com/source-image-5.jpg",
"https://cdn.example.com/source-image-6.jpg"
],
"prompt_restyle": "Девушка слева - героиня с фото 1, парень справа - герой с фото 2. Розовые волосы девушки одинаковые во всех кадрах.",
"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: 'higgsfield-genjutsu',
input: {
genjutsu_mode: 'restyle',
video_url: 'https://cdn.example.com/source-video-4.mp4',
preset_id: 'c2143317-f28d-4c3c-a0b8-39bd547e08a7',
restyle_image_urls: [
'https://cdn.example.com/source-image-5.jpg',
'https://cdn.example.com/source-image-6.jpg',
],
prompt_restyle: 'Девушка слева - героиня с фото 1, парень справа - герой с фото 2. Розовые волосы девушки одинаковые во всех кадрах.',
resolution: '1080p',
},
}),
})
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',
'input': {
'genjutsu_mode': 'restyle',
'video_url': 'https://cdn.example.com/source-video-4.mp4',
'preset_id': 'c2143317-f28d-4c3c-a0b8-39bd547e08a7',
'restyle_image_urls': [
'https://cdn.example.com/source-image-5.jpg',
'https://cdn.example.com/source-image-6.jpg',
],
'prompt_restyle': 'Девушка слева - героиня с фото 1, парень справа - герой с фото 2. Розовые волосы девушки одинаковые во всех кадрах.',
'resolution': '1080p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "higgsfield-genjutsu",
"cost": 270,
"balance_after": 730,
"created_at": "2026-10-20T13:45:02Z"
}
cost - сколько списано за операцию, в рублях.balance_after - баланс после списания.{
"id": "op_uuid-123",
"status": "completed",
"tool": "higgsfield-genjutsu",
"cost": 270,
"created_at": "2026-10-20T13:45:02Z",
"completed_at": "2026-10-20T13:51:02Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/higgsfield-genjutsu/video-1.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "higgsfield-genjutsu",
"cost": 270,
"created_at": "2026-10-20T13:45:02Z",
"completed_at": "2026-10-20T13:52:59Z",
"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-6 секунд в 480p были готовы за 6-7 минут во всех трёх режимах. Длинные ролики и 1080p обрабатываются дольше, закладывайте до получаса. Опрашивать статус раз в 10-15 секунд достаточно, чаще раза в секунду нельзя - придёт 429.
Во всех режимах результат - одно видео MP4:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/higgsfield-genjutsu/video-1.mp4"
]
}
type - всегда "video".urls - массив из одной ссылки на готовый файл.Пропорции кадра повторяют исходник, а высота кадра соответствует resolution: вертикальный ролик 704×1280 в 480p вернулся как 474×862, горизонтальный 960×540 - как 854×480. Звук исходника сохраняется. Длина результата близка к исходнику, но может быть короче на долю секунды: 6-секундный ролик вернулся длиной 5,7 секунды.
Цена - за каждую секунду исходного видео. Ставка зависит от режима и resolution:
genjutsu_mode | resolution | За секунду | 5 с | 10 с | 30 с |
|---|---|---|---|---|---|
motion_transfer, object_swap | 480p | 23 ₽ | 115 ₽ | 230 ₽ | 690 ₽ |
motion_transfer, object_swap | 720p | 48 ₽ | 240 ₽ | 480 ₽ | 1440 ₽ |
motion_transfer, object_swap | 1080p | 115 ₽ | 575 ₽ | 1150 ₽ | 3450 ₽ |
restyle | 480p | 45 ₽ | 225 ₽ | 450 ₽ | 1350 ₽ |
restyle | 720p | 96 ₽ | 480 ₽ | 960 ₽ | 2880 ₽ |
restyle | 1080p | 229 ₽ | 1145 ₽ | 2290 ₽ | 6870 ₽ |
Длительность сервер сам определяет по файлу и округляет вверх до целой секунды: ролик 8,1 секунды считается как 9 секунд. Минимум - 4 секунды (92 ₽ за перенос или замену в 480p), максимум - 30 секунд.
Задание, число фото и выбранный стиль на цену не влияют. Точная сумма приходит в поле cost ответа на создание операции и сразу списывается с баланса. Ставки могут меняться - перед массовыми запусками сверяйтесь с cost или передавайте max_price.
POST /api/v1/operations не идемпотентен: каждый запрос создаёт новую операцию и списывает деньги. Чтобы безопасно повторять запрос при обрыве связи, передайте UUID в заголовке Idempotency-Key: повтор в течение 24 часов вернёт исходную операцию без нового списания.max_price в теле запроса, если хотите, чтобы сервер отклонил запуск дороже согласованной суммы ещё до списания. Полезно для 1080p: 30 секунд смены стиля стоят 6870 ₽.queued, результат нужно забирать запросом статуса по id.http/https URL, которые открываются без авторизации. Видео - .mp4 или .mov до 100 МБ, фото - .jpg, .jpeg, .png, .webp.400, операция не создастся и деньги не спишутся.object_swap в кадре исходника нужно не меньше 409 600 пикселей: 854×480, 640×640 или больше. Ролик меньшего размера модель не примет, операция завершится ошибкой с возвратом денег.object_swap) иногда отклоняется как nsfw даже без откровенного содержания - деньги за такую операцию возвращаются. Замена предметов, перенос движения на животное и смена стиля ролика с человеком в наших запусках прошли без отказов.restyle может обновляться. Если стиль пропал, операция завершится ошибкой, а деньги вернутся.