Создаёт короткое видео из одного изображения и может усилить или смягчить движение по вашему описанию. Цена зависит от разрешения: 480p - 50 ₽ за видео, 720p - 150 ₽ за видео.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Midjourney Video оживляет готовую картинку: из одного кадра получается короткий ролик около 5 секунд без звука. За один запуск модель возвращает сразу четыре варианта движения, из которых можно выбрать лучший. Подходит для оживления артов и иллюстраций из Midjourney, обложек, превью и фонов для соцсетей.
Задание необязательно: без него модель сама решает, что будет двигаться в кадре. С заданием можно подсказать действие, движение камеры и атмосферу. Сила движения и качество видео задаются отдельными параметрами.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим у модели один - видео из изображения. Результат настраивают три параметра:
prompt - что должно происходить в кадре (необязательно);motion - low для спокойного движения, high для динамичного;resolution - 480p или 720p, от него зависит цена.{
"tool": "midjourney-video",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "midjourney-video".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.image, остальное подставится по умолчанию: low и 480p.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
image | string (url) | Да | Ссылка на картинку, которая станет первым кадром. Один файл: jpg, jpeg, png или webp. Пропорции ролика повторяют картинку. |
prompt | string | Нет | Что должно происходить в кадре: действие, движение камеры, атмосфера. До 2000 символов, можно по-русски. Если не передать, модель оживит картинку по своему усмотрению. |
motion | enum | Да | Сила движения. low - спокойное движение, сцена остаётся ближе к исходному кадру. high - динамичный ролик, больше перемещений объектов и камеры. Если не указать - low. |
resolution | enum | Да | Качество видео: 480p или 720p. Если не указать - 480p. |
Ссылка в 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": "midjourney-video",
"input": {
"image": "https://cdn.example.com/source-image-1.jpg",
"motion": "low",
"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: 'midjourney-video',
input: {
image: 'https://cdn.example.com/source-image-1.jpg',
motion: 'low',
resolution: '480p',
},
}),
})
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': 'midjourney-video',
'input': {
'image': 'https://cdn.example.com/source-image-1.jpg',
'motion': 'low',
'resolution': '480p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Задание подсказывает действие, motion: "high" делает ролик динамичнее, 720p даёт более чёткую картинку.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "midjourney-video",
"input": {
"image": "https://cdn.example.com/source-image-1.png",
"prompt": "Девушка опускает письмо в синий почтовый ящик и улыбается, с клёна медленно падают жёлтые листья",
"motion": "high",
"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: 'midjourney-video',
input: {
image: 'https://cdn.example.com/source-image-1.png',
prompt:
'Девушка опускает письмо в синий почтовый ящик и улыбается, с клёна медленно падают жёлтые листья',
motion: 'high',
resolution: '720p',
},
}),
})
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': 'midjourney-video',
'input': {
'image': 'https://cdn.example.com/source-image-1.png',
'prompt': 'Девушка опускает письмо в синий почтовый ящик и улыбается, с клёна медленно падают жёлтые листья',
'motion': 'high',
'resolution': '720p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "midjourney-video",
"cost": 50,
"balance_after": 450,
"created_at": "2026-09-30T21:31:10.988455+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "midjourney-video",
"cost": 50,
"created_at": "2026-09-30T21:31:10.988455+00:00",
"completed_at": "2026-09-30T21:32:31.098143+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/midjourney-video/video-1.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-2.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-3.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-4.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "midjourney-video",
"cost": 50,
"created_at": "2026-09-30T21:31:10.988455+00:00",
"completed_at": "2026-09-30T21:31:40.512004+00:00",
"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 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))
}
}
Обычно видео готово за 1-3 минуты. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 10 секунд.
После завершения в result приходят четыре варианта ролика:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/midjourney-video/video-1.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-2.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-3.mp4",
"https://storage.bratuha.ru/results/midjourney-video/video-4.mp4"
]
}
type - всегда "video".urls - массив из четырёх ссылок на MP4: разные варианты движения по одному и тому же кадру и заданию.480p - кадр около 0,4 Мп (картинка 16:9 даёт 832×464, картинка 3:4 - 544×720), 720p - около 0,9 Мп (картинка 3:4 даёт 832×1104).Цена фиксирована за запуск и зависит только от resolution. В неё входят все четыре варианта.
| Качество | Цена за запуск | За один вариант |
|---|---|---|
480p | 50 ₽ | 12,5 ₽ |
720p | 150 ₽ | 37,5 ₽ |
Задание и motion на цену не влияют. Запрос только с image использует 480p и стоит 50 ₽. Сумма списывается при создании операции и видна в поле cost. Если операция завершилась ошибкой, деньги возвращаются на баланс.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.image принимает только внешние http/https ссылки на jpg, jpeg, png или webp. Адреса localhost и внутренних сетей не принимаются, файл должен открываться без авторизации.--ar, --v или --raw в задание не добавляйте: пропорции берутся из картинки, а движение и качество задаются параметрами motion и resolution. Пишите в prompt обычный текст.motion: "low". high даёт больше движения, но сильнее уводит сцену от исходного кадра.480p: четыре варианта за 50 ₽ быстро покажут, как модель поняла сцену. Удачное задание затем можно повторить в 720p.