Общая документация Public API · API-ключ можно создать в настройках аккаунта
PixVerse 5.5 превращает картинку в короткий ролик на 5, 8 или 10 секунд. Три способа работы: оживить одно изображение по заданию, построить плавный переход между двумя кадрами или применить к фото готовый эффект из каталога - от «обнимашек» и превращений до рекламных сцен с товаром. Для роликов из изображения можно включить звук и режим нескольких планов, когда сцена снимается сменой ракурсов.
Основные сценарии:
pixverse_generation_type: "image_to_video", картинка становится первым кадром ролика.pixverse_generation_type: "transition", ролик начинается с первого кадра и приходит ко второму.pixverse_generation_type: "effects", к фото применяется готовый сценарий из списка, задание писать не нужно.Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Сценарий задаёт параметр pixverse_generation_type:
image_to_video - видео из одного изображения (image_url, разрешение и длительность в resolution и duration);transition - переход между кадрами (first_image_url, end_image_url, разрешение и длительность в transition_resolution и transition_duration);effects - готовый эффект (effect, effects_image_url, разрешение и длительность в effects_resolution и effects_duration).У каждого сценария свои поля разрешения, длительности и звука. Поля чужого сценария не учитываются ни в запуске, ни в цене.
{
"tool": "pixverse-5-5",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "pixverse-5-5".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
pixverse_generation_type | enum | Да | Сценарий: image_to_video, transition или effects. Если поле не передать, используется image_to_video. |
prompt | string | Да, кроме effects | Что происходит в ролике: действие, движение камеры, настроение. От 3 до 4000 символов. В сценарии effects не используется. |
image_url | string (url) | Да, для image_to_video | Изображение, из которого делается ролик. Только в сценарии image_to_video. Один файл: jpg, jpeg, png или webp. |
first_image_url | string (url) | Да, для transition | Первый кадр перехода. Только в сценарии transition. Форматы те же. |
end_image_url | string (url) | Нет | Последний кадр перехода. Только в сценарии transition. Форматы те же. |
effect | enum | Да, для effects | Название эффекта, точно как в списке ниже, например Earth Zoom или Hug. Только в сценарии effects. Если не указать - Kiss Me AI. |
effects_image_url | string (url) | Да, для effects | Фото, к которому применяется эффект. Только в сценарии effects. Без фото эффект не запустится. Форматы те же. |
resolution | enum | Да | Разрешение в сценарии image_to_video: 360p, 540p, 720p или 1080p. Если не указать - 720p. 1080p не сочетается с duration: "10". |
Ссылки на картинки передавайте как внешние http/https URL с расширением jpg, jpeg, png или webp. Файл должен открываться без авторизации, размер - до 128 МБ.
Значение effect передаётся точно как в списке, с учётом регистра, пробелов и знаков:
Kiss Me AI, Kiss, Muscle Surge, Warmth of Jesus, Anything, Robot, The Tiger Touch, Hug, Holy Wings, Microwave, Zombie Mode, Squid Game, Baby Face, Black Myth: Wukong, Long Hair Magic, Leggy Run, Fin-tastic Mermaid, Punch Face, Creepy Devil Smile, Thunder God, Eye Zoom Challenge, Who's Arrested?, Baby Arrived, Werewolf Rage, Bald Swipe, BOOM DROP, Huge Cutie, Liquid Metal, Sharksnap!, Dust Me Away, 3D Figurine Factor, Bikini Up, My Girlfriends, My Boyfriends, Subject 3 Fever, Earth Zoom, Pole Dance, Vroom Dance, GhostFace Terror, Dragon Evoker, Skeletal Bae, Summoning succubus, Halloween Voodoo Doll, 3D Naked-Eye AD, Package Explosion, Dishes Served, Ocean ad, Supermarket AD, Tree doll, Come Feel My Abs, The Bicep Flex, London Elite Vibe, Flora Nymph Gown, Christmas Costume, It's Snowy, Reindeer Cruiser, Snow Globe Maker, Pet Christmas Outfit, Adopt a Polar Pal, Cat Christmas Box, Starlight Gift Box, Xmas Poster, Pet Christmas Tree, City Santa Hat, Stocking Sweetie, Christmas Night, Xmas Front Page Karma, Grinch's Xmas Hijack, Giant Product, Truck Fashion Shoot, Beach AD, Shoal Surround, Mechanical Assembly, Lighting AD, Billboard AD, , , , , , , , , , , , , , , , , , , , , , , .
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "pixverse-5-5",
"input": {
"pixverse_generation_type": "image_to_video",
"prompt": "Девушка в жёлтом плаще оборачивается и улыбается, ветер шевелит волосы, камера медленно приближается",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"resolution": "720p",
"duration": "5",
"generate_audio_switch": false,
"generate_multi_clip_switch": false,
"thinking_type": "auto"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-5-5',
input: {
pixverse_generation_type: 'image_to_video',
prompt: 'Девушка в жёлтом плаще оборачивается и улыбается, ветер шевелит волосы, камера медленно приближается',
image_url: 'https://cdn.example.com/source-image-1.jpg',
resolution: '720p',
duration: '5',
generate_audio_switch: false,
generate_multi_clip_switch: false,
thinking_type: 'auto',
},
}),
})
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': 'pixverse-5-5',
'input': {
'pixverse_generation_type': 'image_to_video',
'prompt': 'Девушка в жёлтом плаще оборачивается и улыбается, ветер шевелит волосы, камера медленно приближается',
'image_url': 'https://cdn.example.com/source-image-1.jpg',
'resolution': '720p',
'duration': '5',
'generate_audio_switch': False,
'generate_multi_clip_switch': False,
'thinking_type': 'auto',
},
},
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": "pixverse-5-5",
"input": {
"pixverse_generation_type": "image_to_video",
"prompt": "Повар раскладывает пасту по тарелкам: общий план кухни, затем крупно руки и соус, в конце готовое блюдо на столе",
"image_url": "https://cdn.example.com/source-image-1.png",
"resolution": "540p",
"duration": "8",
"generate_audio_switch": true,
"generate_multi_clip_switch": true,
"thinking_type": "disabled",
"use_negative_prompt": true,
"negative_prompt": "blurry, text, watermark"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-5-5',
input: {
pixverse_generation_type: 'image_to_video',
prompt: 'Повар раскладывает пасту по тарелкам: общий план кухни, затем крупно руки и соус, в конце готовое блюдо на столе',
image_url: 'https://cdn.example.com/source-image-1.png',
resolution: '540p',
duration: '8',
generate_audio_switch: true,
generate_multi_clip_switch: true,
thinking_type: 'disabled',
use_negative_prompt: true,
negative_prompt: 'blurry, text, watermark',
},
}),
})
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': 'pixverse-5-5',
'input': {
'pixverse_generation_type': 'image_to_video',
'prompt': 'Повар раскладывает пасту по тарелкам: общий план кухни, затем крупно руки и соус, в конце готовое блюдо на столе',
'image_url': 'https://cdn.example.com/source-image-1.png',
'resolution': '540p',
'duration': '8',
'generate_audio_switch': True,
'generate_multi_clip_switch': True,
'thinking_type': 'disabled',
'use_negative_prompt': True,
'negative_prompt': 'blurry, text, watermark',
},
},
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": "pixverse-5-5",
"input": {
"pixverse_generation_type": "transition",
"prompt": "Утренний город плавно превращается в ночной, в окнах зажигается свет, камера неподвижна",
"first_image_url": "https://cdn.example.com/first-frame-1.jpg",
"end_image_url": "https://cdn.example.com/last-frame-1.jpg",
"transition_resolution": "720p",
"transition_duration": "5",
"transition_generate_audio_switch": false,
"thinking_type": "auto"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-5-5',
input: {
pixverse_generation_type: 'transition',
prompt: 'Утренний город плавно превращается в ночной, в окнах зажигается свет, камера неподвижна',
first_image_url: 'https://cdn.example.com/first-frame-1.jpg',
end_image_url: 'https://cdn.example.com/last-frame-1.jpg',
transition_resolution: '720p',
transition_duration: '5',
transition_generate_audio_switch: false,
thinking_type: 'auto',
},
}),
})
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': 'pixverse-5-5',
'input': {
'pixverse_generation_type': 'transition',
'prompt': 'Утренний город плавно превращается в ночной, в окнах зажигается свет, камера неподвижна',
'first_image_url': 'https://cdn.example.com/first-frame-1.jpg',
'end_image_url': 'https://cdn.example.com/last-frame-1.jpg',
'transition_resolution': '720p',
'transition_duration': '5',
'transition_generate_audio_switch': False,
'thinking_type': 'auto',
},
},
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": "pixverse-5-5",
"input": {
"pixverse_generation_type": "effects",
"effect": "Earth Zoom",
"effects_image_url": "https://cdn.example.com/source-image-1.jpg",
"effects_resolution": "720p",
"effects_duration": "5"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-5-5',
input: {
pixverse_generation_type: 'effects',
effect: 'Earth Zoom',
effects_image_url: 'https://cdn.example.com/source-image-1.jpg',
effects_resolution: '720p',
effects_duration: '5',
},
}),
})
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': 'pixverse-5-5',
'input': {
'pixverse_generation_type': 'effects',
'effect': 'Earth Zoom',
'effects_image_url': 'https://cdn.example.com/source-image-1.jpg',
'effects_resolution': '720p',
'effects_duration': '5',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "pixverse-5-5",
"cost": 30,
"balance_after": 970,
"created_at": "2026-09-30T19:51:19.57689+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "pixverse-5-5",
"cost": 30,
"created_at": "2026-09-30T19:51:19.57689+00:00",
"completed_at": "2026-09-30T19:52:04.316467+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/pixverse-5-5/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, 5000))
}
}
Обычно ролик готов за 30-90 секунд: пятисекундное видео в 360p в пробном запуске пришло через 45 секунд. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 5 секунд.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/pixverse-5-5/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4.360p даёт ролик 640x360. Пропорции повторяют исходное изображение.Цена фиксирована за ролик. Она складывается из ставки за длительность и разрешение сценария плюс доплат за звук и несколько планов. Доплаты не зависят от длительности. 360p и 540p стоят одинаково, улучшение задания и негативный промпт на цену не влияют.
Видео из изображения и эффекты:
| Длительность | 360p / 540p | 720p | 1080p |
|---|---|---|---|
| 5 сек. | 22,5 ₽ | 30 ₽ | 60 ₽ |
| 8 сек. | 45 ₽ | 52,5 ₽ | 82,5 ₽ |
| 10 сек. | 49,51 ₽ | 57,01 ₽ | - |
Переход между кадрами:
| Длительность | 360p / 540p | 720p | 1080p |
|---|---|---|---|
| 5 сек. | 67,5 ₽ | 90 ₽ | 180 ₽ |
| 8 сек. | 135 ₽ | 157,5 ₽ | 247,5 ₽ |
| 10 сек. | 148,5 ₽ | 171 ₽ | - |
Доплаты:
| Опция | Сценарий | Доплата |
|---|---|---|
generate_audio_switch: true | image_to_video | +7,5 ₽ |
generate_multi_clip_switch: true | image_to_video | +15 ₽ |
transition_generate_audio_switch: true | transition | +22,5 ₽ |
Например, 8 секунд в 540p со звуком и несколькими планами стоят 45 + 7,5 + 15 = 67,5 ₽. Самый дешёвый запуск - 5 секунд в 360p или 540p без опций за 22,5 ₽ (видео из изображения или эффект). Сочетание 1080p и 10 секунд в видео из изображения и в переходе недоступно: API сразу ответит 400 validation_error, деньги не спишутся. Стоимость бывает дробной, поле cost приходит числом, например 22.5. Полная сумма списывается при создании операции.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.http/https URL на jpg, jpeg, png или webp. Адреса localhost и внутренних сетей не принимаются.resolution и duration действуют только в image_to_video. Если в переходе указать resolution, оно не учтётся, и ролик выйдет в 720p по умолчанию."5", а не 5). Другое значение вернёт 400 validation_error со списком допустимых вариантов.effects_image_url и длительностью 5 или 8 секунд. Эффект без фото или на 10 секунд завершится failed.failed с сообщением «Ваш запрос не прошел модерацию». Меняйте формулировку или картинку, а не повторяйте тот же запрос.thinking_type: "disabled" - задание уйдёт модели без изменений.360p без опций, а чистовик - в нужном качестве.durationenum |
| Да |
Длительность в сценарии image_to_video, строкой: "5", "8" или "10". Если не указать - "5". |
transition_resolution | enum | Да | Разрешение в сценарии transition: 360p, 540p, 720p или 1080p. Если не указать - 720p. 1080p не сочетается с transition_duration: "10". |
transition_duration | enum | Да | Длительность в сценарии transition, строкой: "5", "8" или "10". Если не указать - "5". |
effects_resolution | enum | Да | Разрешение в сценарии effects: 360p, 540p, 720p или 1080p. Если не указать - 720p. |
effects_duration | enum | Да | Длительность в сценарии effects, строкой: "5" или "8". Если не указать - "5". Эффекты на 10 секунд модель не делает. |
thinking_type | enum | Да | Улучшение задания перед генерацией: auto - модель решает сама, enabled - всегда дописывать детали, disabled - использовать задание как есть. Если не указать - auto. |
generate_audio_switch | boolean | Нет | Добавить звук к ролику. Только в сценарии image_to_video. По умолчанию false. |
transition_generate_audio_switch | boolean | Нет | Добавить звук к переходу. Только в сценарии transition. По умолчанию false. |
generate_multi_clip_switch | boolean | Нет | Несколько планов: модель снимает сцену несколькими склеенными кадрами со сменой ракурса, а не одним дублем. Только в сценарии image_to_video. По умолчанию false. |
use_negative_prompt | boolean | Нет | Включите, если хотите передать negative_prompt. По умолчанию false. |
negative_prompt | string | Нет | Чего не должно быть в ролике, например blurry, text, watermark. Передавайте вместе с use_negative_prompt: true. |
Product close-upParachute DeliveryDreamlike CloudMacaron MachinePoster ADTruck ADGraffiti AD3D Figurine FactoryThe Exclusive First ClassArt Zoom ChallengeI QuitHitchcock Dolly ZoomSmell the LensI believe I can flyStrikout DancePixel WorldMint in BoxHands upHandFlora Nymph GoSomber EmbraceBeam me upSuit Swagger