Общая документация Public API · API-ключ можно создать в настройках аккаунта
Kling 3.0 делает видео длиной от 3 до 15 секунд. Ролик можно собрать из текстового описания, оживить готовую картинку как первый кадр, снять сцену по нескольким референсам или перерисовать уже снятое видео. Модель хорошо держит внешность героя между кадрами, умеет сама разбивать ролик на сцены и генерировать звук вместе с картинкой.
Типичные задачи:
Каждый вызов создаёт асинхронную операцию. Сначала вы получаете id, потом проверяете статус, пока не появится ссылка на видео. Обычно ролик готов примерно за 3 минуты, иногда генерация занимает до 7-8 минут.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим выбирается параметром kling_generation_type:
text - видео только из текстового описания, без файлов.image - видео из одной картинки, которая становится первым кадром.reference - видео по референсам: от 1 до 7 картинок с героями, предметами, местом или стилем. Этот режим используется, если kling_generation_type не передан.transformation - переделка исходного видео по описанию, по желанию с картинками-референсами.В режимах text, image и reference есть ещё выбор сцен через shot_mode: один сплошной ролик, автоматическая разбивка на сцены или свои сцены с отдельными описаниями. Во всех режимах можно добавить elements - постоянных персонажей или предметы со своими фотографиями.
{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "text",
"prompt": "...",
"duration": 5,
"resolution": "720p"
}
}
tool - slug нейросети, всегда "kling-3-0".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
kling_generation_type | enum | Нет | Режим: text - из текста, image - из первого кадра, reference - по референсам, transformation - переделка видео. Если не передан, используется reference. |
prompt | string | Да | Описание ролика: что происходит, кто в кадре, движение камеры, свет, стиль. От 3 до 3072 символов. На файлы можно ссылаться прямо в тексте: @image1, @image2 и дальше - картинки в порядке массива, @video1 - исходное видео в режиме transformation, @имя - элемент из elements. |
shot_mode | enum | Нет | Как строить ролик: single - один сплошной план, smart - модель сама разбивает ролик на сцены, custom - сцены задаются вручную в multi_prompt. Если не передан, используется single. В режиме transformation не используется. |
multi_prompt | object[] | Только при shot_mode: "custom" | Список сцен по порядку, от 1 до 6. У каждой сцены prompt - описание от 3 до 511 символов и duration - длина в целых секундах от 3 до 15. Сумма длин всех сцен должна точно совпадать с duration ролика. |
reference_image_urls | string[] (url) | Только в режиме reference | Референсы: от 1 до 7 ссылок на .jpg, .jpeg или .png, каждый файл до 50 МБ, не меньше 300×300 px. В prompt это @image1, @image2 и так далее. |
image_frame_urls | string[] (url) | Только в режиме image | Первый кадр ролика: массив ровно из одной ссылки на .jpg, .jpeg или .png, до 50 МБ, не меньше 300×300 px. |
transform_video_urls |
Все ссылки на файлы - внешние http/https URL. Картинки принимаются в jpg, jpeg и png, видео - в mp4 и mov. WebP и другие форматы Kling 3.0 не принимает: такие ссылки API отклонит с ошибкой validation_error.
Ролик 5 секунд в 720p без звука - 55 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "text",
"prompt": "Рыжий кот в вязаном шарфе идёт по заснеженной крыше на закате, за ним огни старого города. Камера плавно следует сбоку, мягкий тёплый свет",
"shot_mode": "single",
"duration": 5,
"resolution": "720p",
"audio": false,
"aspect_ratio_standard": "16:9"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'text',
prompt: 'Рыжий кот в вязаном шарфе идёт по заснеженной крыше на закате, за ним огни старого города. Камера плавно следует сбоку, мягкий тёплый свет',
shot_mode: 'single',
duration: 5,
resolution: '720p',
audio: false,
aspect_ratio_standard: '16:9',
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'text',
'prompt': 'Рыжий кот в вязаном шарфе идёт по заснеженной крыше на закате, за ним огни старого города. Камера плавно следует сбоку, мягкий тёплый свет',
'shot_mode': 'single',
'duration': 5,
'resolution': '720p',
'audio': False,
'aspect_ratio_standard': '16:9',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Картинка по ссылке становится первым кадром, дальше модель её оживляет. Формат кадра берётся с картинки. Пример: 5 секунд в 1080p со звуком - 90 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "image",
"prompt": "Девушка поднимает взгляд от письма и улыбается, осенние листья медленно падают, камера плавно приближается",
"shot_mode": "single",
"image_frame_urls": [
"https://cdn.example.com/first-frame-1.jpg"
],
"duration": 5,
"resolution": "1080p",
"audio": true
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'image',
prompt: 'Девушка поднимает взгляд от письма и улыбается, осенние листья медленно падают, камера плавно приближается',
shot_mode: 'single',
image_frame_urls: [
'https://cdn.example.com/first-frame-1.jpg',
],
duration: 5,
resolution: '1080p',
audio: true,
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'image',
'prompt': 'Девушка поднимает взгляд от письма и улыбается, осенние листья медленно падают, камера плавно приближается',
'shot_mode': 'single',
'image_frame_urls': [
'https://cdn.example.com/first-frame-1.jpg',
],
'duration': 5,
'resolution': '1080p',
'audio': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Две картинки - героиня и место действия. В prompt на них ссылаются как @image1 и @image2. shot_mode: "smart" разрешает модели самой разбить ролик на несколько планов. Вертикальный ролик 10 секунд в 720p - 110 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "reference",
"prompt": "Девушка с @image1 заходит в кофейню с @image2, садится у окна и открывает ноутбук. Утро, мягкий свет, спокойный темп",
"shot_mode": "smart",
"reference_image_urls": [
"https://cdn.example.com/reference-image-1.jpg",
"https://cdn.example.com/reference-image-2.png"
],
"duration": 10,
"resolution": "720p",
"audio": false,
"aspect_ratio_standard": "9:16"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'reference',
prompt: 'Девушка с @image1 заходит в кофейню с @image2, садится у окна и открывает ноутбук. Утро, мягкий свет, спокойный темп',
shot_mode: 'smart',
reference_image_urls: [
'https://cdn.example.com/reference-image-1.jpg',
'https://cdn.example.com/reference-image-2.png',
],
duration: 10,
resolution: '720p',
audio: false,
aspect_ratio_standard: '9:16',
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'reference',
'prompt': 'Девушка с @image1 заходит в кофейню с @image2, садится у окна и открывает ноутбук. Утро, мягкий свет, спокойный темп',
'shot_mode': 'smart',
'reference_image_urls': [
'https://cdn.example.com/reference-image-1.jpg',
'https://cdn.example.com/reference-image-2.png',
],
'duration': 10,
'resolution': '720p',
'audio': False,
'aspect_ratio_standard': '9:16',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
При shot_mode: "custom" вы описываете каждую сцену отдельно в multi_prompt. Сумма duration всех сцен должна совпасть с общим duration: здесь 4 + 4 = 8 секунд. Цена считается по общей длине - 88 ₽ за 8 секунд в 720p.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "reference",
"prompt": "Короткий рекламный ролик кроссовок с @image1 в городской стилистике",
"shot_mode": "custom",
"multi_prompt": [
{
"prompt": "Крупный план: кроссовки стоят на мокром асфальте, в лужах отражаются неоновые вывески",
"duration": 4
},
{
"prompt": "Общий план: бегун в этих кроссовках пробегает по ночной улице, камера следует за ним",
"duration": 4
}
],
"reference_image_urls": [
"https://cdn.example.com/sneakers-1.jpg",
"https://cdn.example.com/sneakers-2.jpg"
],
"duration": 8,
"resolution": "720p",
"audio": false,
"aspect_ratio_standard": "16:9"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'reference',
prompt: 'Короткий рекламный ролик кроссовок с @image1 в городской стилистике',
shot_mode: 'custom',
multi_prompt: [
{
prompt: 'Крупный план: кроссовки стоят на мокром асфальте, в лужах отражаются неоновые вывески',
duration: 4,
},
{
prompt: 'Общий план: бегун в этих кроссовках пробегает по ночной улице, камера следует за ним',
duration: 4,
},
],
reference_image_urls: [
'https://cdn.example.com/sneakers-1.jpg',
'https://cdn.example.com/sneakers-2.jpg',
],
duration: 8,
resolution: '720p',
audio: false,
aspect_ratio_standard: '16:9',
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'reference',
'prompt': 'Короткий рекламный ролик кроссовок с @image1 в городской стилистике',
'shot_mode': 'custom',
'multi_prompt': [
{
'prompt': 'Крупный план: кроссовки стоят на мокром асфальте, в лужах отражаются неоновые вывески',
'duration': 4,
},
{
'prompt': 'Общий план: бегун в этих кроссовках пробегает по ночной улице, камера следует за ним',
'duration': 4,
},
],
'reference_image_urls': [
'https://cdn.example.com/sneakers-1.jpg',
'https://cdn.example.com/sneakers-2.jpg',
],
'duration': 8,
'resolution': '720p',
'audio': False,
'aspect_ratio_standard': '16:9',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Каждому элементу даётся имя, по которому к нему обращаются в prompt через @. Основное фото плюс 1-3 фото с других ракурсов помогают модели держать внешность одинаковой во всём ролике. Элементы работают в любом режиме, здесь - в режиме из текста. 5 секунд в 720p - 55 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "text",
"prompt": "@lisa гуляет по осеннему парку, рядом бежит @max и приносит ей палку. Солнечный день, камера движется параллельно",
"shot_mode": "single",
"elements": [
{
"name": "lisa",
"description": "Девушка 25 лет, рыжие волосы до плеч, горчичный свитер, светлые джинсы",
"frontal_image_url": "https://cdn.example.com/lisa-front.jpg",
"reference_image_urls": [
"https://cdn.example.com/lisa-side.jpg",
"https://cdn.example.com/lisa-full.jpg"
]
},
{
"name": "max",
"description": "Корги с белым пятном на груди и красным ошейником",
"frontal_image_url": "https://cdn.example.com/max-front.png",
"reference_image_urls": [
"https://cdn.example.com/max-side.png",
"https://cdn.example.com/max-back.png"
]
}
],
"duration": 5,
"resolution": "720p",
"audio": false,
"aspect_ratio_standard": "16:9"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'text',
prompt: '@lisa гуляет по осеннему парку, рядом бежит @max и приносит ей палку. Солнечный день, камера движется параллельно',
shot_mode: 'single',
elements: [
{
name: 'lisa',
description: 'Девушка 25 лет, рыжие волосы до плеч, горчичный свитер, светлые джинсы',
frontal_image_url: 'https://cdn.example.com/lisa-front.jpg',
reference_image_urls: [
'https://cdn.example.com/lisa-side.jpg',
'https://cdn.example.com/lisa-full.jpg',
],
},
{
name: 'max',
description: 'Корги с белым пятном на груди и красным ошейником',
frontal_image_url: 'https://cdn.example.com/max-front.png',
reference_image_urls: [
'https://cdn.example.com/max-side.png',
'https://cdn.example.com/max-back.png',
],
},
],
duration: 5,
resolution: '720p',
audio: false,
aspect_ratio_standard: '16:9',
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'text',
'prompt': '@lisa гуляет по осеннему парку, рядом бежит @max и приносит ей палку. Солнечный день, камера движется параллельно',
'shot_mode': 'single',
'elements': [
{
'name': 'lisa',
'description': 'Девушка 25 лет, рыжие волосы до плеч, горчичный свитер, светлые джинсы',
'frontal_image_url': 'https://cdn.example.com/lisa-front.jpg',
'reference_image_urls': [
'https://cdn.example.com/lisa-side.jpg',
'https://cdn.example.com/lisa-full.jpg',
],
},
{
'name': 'max',
'description': 'Корги с белым пятном на груди и красным ошейником',
'frontal_image_url': 'https://cdn.example.com/max-front.png',
'reference_image_urls': [
'https://cdn.example.com/max-side.png',
'https://cdn.example.com/max-back.png',
],
},
],
'duration': 5,
'resolution': '720p',
'audio': False,
'aspect_ratio_standard': '16:9',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Модель перерисовывает исходный ролик по описанию и сохраняет движение. Длина результата и формат кадра берутся из исходного видео, поэтому duration и соотношение сторон не передаются. Цена зависит от длины исходника: ролик на 5,2 секунды в 720p считается как 6 секунд - 66 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "transformation",
"prompt": "Перерисуй @video1 в стиле рисованного аниме, сохрани движения и композицию",
"transform_video_urls": [
"https://cdn.example.com/source-video-1.mp4"
],
"resolution": "720p",
"audio": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'transformation',
prompt: 'Перерисуй @video1 в стиле рисованного аниме, сохрани движения и композицию',
transform_video_urls: [
'https://cdn.example.com/source-video-1.mp4',
],
resolution: '720p',
audio: false,
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'transformation',
'prompt': 'Перерисуй @video1 в стиле рисованного аниме, сохрани движения и композицию',
'transform_video_urls': [
'https://cdn.example.com/source-video-1.mp4',
],
'resolution': '720p',
'audio': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
С use_transform_images: true к видео добавляются до 4 картинок - например, новый герой и его одежда. В этом случае можно выбрать формат кадра через aspect_ratio_transform. Ролик 8 секунд в 1080p - 112 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "kling-3-0",
"input": {
"kling_generation_type": "transformation",
"prompt": "Замени героя @video1 на персонажа с @image1, одежду возьми с @image2",
"transform_video_urls": [
"https://cdn.example.com/source-video-1.mov"
],
"use_transform_images": true,
"transform_image_urls": [
"https://cdn.example.com/character-1.png",
"https://cdn.example.com/outfit-1.jpg"
],
"aspect_ratio_transform": "9:16",
"resolution": "1080p",
"audio": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'kling-3-0',
input: {
kling_generation_type: 'transformation',
prompt: 'Замени героя @video1 на персонажа с @image1, одежду возьми с @image2',
transform_video_urls: [
'https://cdn.example.com/source-video-1.mov',
],
use_transform_images: true,
transform_image_urls: [
'https://cdn.example.com/character-1.png',
'https://cdn.example.com/outfit-1.jpg',
],
aspect_ratio_transform: '9:16',
resolution: '1080p',
audio: false,
},
}),
})
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': 'kling-3-0',
'input': {
'kling_generation_type': 'transformation',
'prompt': 'Замени героя @video1 на персонажа с @image1, одежду возьми с @image2',
'transform_video_urls': [
'https://cdn.example.com/source-video-1.mov',
],
'use_transform_images': True,
'transform_image_urls': [
'https://cdn.example.com/character-1.png',
'https://cdn.example.com/outfit-1.jpg',
],
'aspect_ratio_transform': '9:16',
'resolution': '1080p',
'audio': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "kling-3-0",
"cost": 33,
"balance_after": 467,
"created_at": "2026-09-30T12:45:07Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "kling-3-0",
"cost": 33,
"created_at": "2026-09-30T12:45:07Z",
"completed_at": "2026-09-30T12:48:12Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/kling-3-0/video-1.mp4"
]
},
"error_message": null
}
Если модель не смогла сделать ролик, операция завершается со статусом failed, в result приходит null, а причина - в error_message. Списанная сумма возвращается на баланс.
{
"id": "op_uuid-123",
"status": "failed",
"tool": "kling-3-0",
"cost": 33,
"created_at": "2026-09-30T12:45:07Z",
"completed_at": "2026-09-30T13:01:41Z",
"result": null,
"error_message": "Произошла ошибка, нейросеть временно недоступна."
}
Сохраните id из ответа на создание и запрашивайте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForVideo(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') return operation.result.urls[0]
if (operation.status === 'failed') throw new Error(operation.error_message)
await new Promise((resolve) => setTimeout(resolve, 10_000))
}
}
Статус меняется так: queued - в очереди, processing - видео генерируется, затем completed или failed. Видео делается минутами, поэтому опрашивать чаще раза в 5-10 секунд смысла нет. Одну операцию можно запрашивать не чаще раза в секунду, иначе придёт 429.
После завершения Kling 3.0 возвращает одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/kling-3-0/video-1.mp4"
]
}
type - всегда "video".urls - массив из одной ссылки на готовый ролик.Файл - MP4 (H.264), 24 кадра в секунду. Размер кадра зависит от resolution и формата: например, 720p и 16:9 дают 1280×720, 1080p и 16:9 - 1920×1080. Длина совпадает с duration с точностью до долей секунды. Звуковая дорожка есть только при audio: true.
Цена считается за каждую секунду ролика. Ставка зависит от разрешения и звука:
| Разрешение | Без звука (audio: false) | Со звуком (audio: true) |
|---|---|---|
720p | 11 ₽ за секунду | 14 ₽ за секунду |
1080p | 14 ₽ за секунду | 18 ₽ за секунду |
4k | 50 ₽ за секунду | 50 ₽ за секунду |
Сколько секунд оплачивается:
text, image и reference - значение duration, от 3 до 15 секунд;shot_mode: "custom") - тоже duration, то есть сумма длин всех сцен;transformation - длина исходного видео, округлённая вверх до целой секунды: ролик на 5,2 секунды оплачивается как 6 секунд.Режим, shot_mode, количество референсов и elements на цену не влияют.
Примеры:
| Запрос | Цена |
|---|---|
3 секунды, 720p, без звука | 33 ₽ |
5 секунд, 720p, без звука | 55 ₽ |
5 секунд, 720p, со звуком | 70 ₽ |
5 секунд, 1080p, без звука | 70 ₽ |
5 секунд, 1080p, со звуком | 90 ₽ |
10 секунд, 1080p, со звуком | 180 ₽ |
15 секунд, 1080p, со звуком | 270 ₽ |
5 секунд, 4k | 250 ₽ |
15 секунд, 4k | 750 ₽ |
Переделка видео 10 секунд, 720p, без звука | 110 ₽ |
Переделка видео 15,5 секунды, 4k | 800 ₽ |
Точная сумма приходит в поле cost ответа на создание операции и сразу списывается с баланса.
POST /api/v1/operations не идемпотентен: каждый повтор запроса создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос заново вслепую - сначала проверьте историю операций в личном кабинете.queued, результат нужно забирать по id.http/https ссылками, которые открываются без авторизации. Ссылки на localhost и внутренние адреса не принимаются. Расширение в URL должно совпадать с допустимыми: .jpg, .jpeg, .png для картинок, .mp4, .mov для видео.image_frame_urls и transform_video_urls передаются как ["https://..."], а не строкой.multi_prompt сумма длин сцен должна точно равняться duration, иначе API вернёт validation_error ещё до запуска.elements не должны повторяться. Пишите их латиницей без пробелов и обязательно упоминайте в prompt через @, иначе модель может не понять, куда поставить героя.transformation длина исходного видео должна быть от 3 до 15,5 секунды - иначе запрос вернёт validation_error.failed с сообщением о модерации или авторских правах. Деньги за такие операции возвращаются.failed с сообщением «нейросеть временно недоступна» или «сервис временно недоступен», причём такой ответ может прийти и через 15 минут после запуска. Такой запрос можно повторить позже, деньги за неудачную попытку возвращаются. Ждите результат хотя бы 20 минут, прежде чем считать операцию зависшей.audio: true, обычно тихий. Если он нужен громче, выровняйте громкость при монтаже.string[] (url) |
Только в режиме transformation |
Исходное видео: массив из одной ссылки на .mp4 или .mov, до 200 МБ, длиной от 3 до 15,5 секунды, 24-60 кадров в секунду. В prompt это @video1. |
use_transform_images | boolean | Нет | Только в режиме transformation. true - добавить к видео картинки-референсы из transform_image_urls, например нового героя или одежду. |
transform_image_urls | string[] (url) | При use_transform_images: true | Картинки для переделки видео: от 1 до 4 ссылок на .jpg, .jpeg или .png, каждый файл до 50 МБ. В prompt это @image1, @image2 и так далее. |
elements | object[] | Нет | Постоянные персонажи или предметы, до 3 штук, в любом режиме. У каждого: name - уникальное имя латиницей, цифрами или _ (в prompt пишется как @name), description - внешность и отличительные черты, frontal_image_url - одна ссылка на основное фото (.jpg, .jpeg, .png), reference_image_urls - от 1 до 3 дополнительных фото с других ракурсов. Все четыре поля обязательны. |
duration | number | Нет | Длина ролика в целых секундах, от 3 до 15. Если не передан, используется 5. В режиме transformation длина берётся из исходного видео. |
resolution | enum | Нет | Разрешение: 720p, 1080p или 4k. Если не передан, используется 720p. |
audio | boolean | Нет | true - сгенерировать звук вместе с видео: шумы, музыку, голоса по описанию. По умолчанию false. В 720p и 1080p со звуком дороже. |
aspect_ratio_standard | enum | Нет | Только в режимах text и reference. Формат кадра: 16:9, 9:16 или 1:1. По умолчанию 16:9. |
aspect_ratio_image | enum | Нет | Только в режиме image вместе с shot_mode: "custom": 16:9, 9:16 или 1:1, по умолчанию 16:9. В остальных случаях режима image формат берётся с первого кадра. |
aspect_ratio_transform | enum | Нет | Только в режиме transformation вместе с use_transform_images: true: 16:9, 9:16 или 1:1, по умолчанию 16:9. Без картинок формат берётся с исходного видео. |