curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json",
},
json={
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P",
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "MiniMax-Hailuo-02",
prompt: "Ночной город, мерцающие неоновые огни, поток транспорта",
duration: 6,
resolution: "1080P"
})
});
console.log(await response.json());
{
"id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "MiniMax-Hailuo-02",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
MiniMax-Hailuo-02
Генерация видео MiniMax-Hailuo-02
Генерация видео с помощью модели MiniMax Hailuo 02, поддержка текст-в-видео, изображение-в-видео и генерации по первому и последнему кадру
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json",
},
json={
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P",
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "MiniMax-Hailuo-02",
prompt: "Ночной город, мерцающие неоновые огни, поток транспорта",
duration: 6,
resolution: "1080P"
})
});
console.log(await response.json());
{
"id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "MiniMax-Hailuo-02",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.- Асинхронный режим, возвращает ID задачи
- Поддерживаемая модель:
MiniMax-Hailuo-02 - Три режима генерации: текст-в-видео, изображение-в-видео, генерация по первому и последнему кадру
- Разрешения 512P / 768P / 1080P, длительность 6 и 10 секунд
Используйте публично доступные URL изображений. Не передавайте base64 данные в
image_urls или metadata; для локальных изображений сначала используйте API загрузки изображений для получения URL.Аутентификация
string
обязательно
Все эндпоинты требуют аутентификации Bearer Token.
Authorization: Bearer YOUR_API_KEY
Параметры запроса
string
обязательно
Название модели, фиксированное значение
MiniMax-Hailuo-02.string
Описание содержимого видео, максимум 2000 символов.
- В режиме текст-в-видео — обязательно
- В режиме изображение-в-видео и генерации по кадрам — необязательно (можно описать желаемое движение)
[推进], [拉远], [左摇,上升]), см. таблицу ниже.Пример: "Кот бежит к камере, улыбается и моргает"integer
по умолчанию:"6"
Длительность видео (секунды).Доступные значения:
6 или 10При разрешении
1080P поддерживается только длительность 6 секунд.string
по умолчанию:"768P"
Разрешение видео.Доступные значения:
512P- стандартное разрешение (для изображение-в-видео)768P- HD (по умолчанию)1080P- Full HD (только 6 секунд)
string[]
Массив URL изображений первого кадра.
- Не передавать: текст-в-видео
- 1 изображение: изображение-в-видео, изображение используется как первый кадр
- Формат: JPG, JPEG, PNG, WebP
- Размер: до 20MB
- Разрешение: короткая сторона > 300px, соотношение сторон от 2:5 до 5:2
["https://example.com/first-frame.jpg"]object
Расширенные параметры.
Показать Показать поля metadata
Показать Показать поля metadata
string
URL изображения последнего кадра для режима генерации по первому и последнему кадру.При передаче этого параметра автоматически активируется режим генерации по кадрам — система создаст переходное видео от первого кадра к последнему.
- При одновременной передаче
image_urls(первый кадр) иlast_frame_image(последний кадр) размер видео определяется по первому кадру - При несовпадении размеров кадров модель обрежет последний кадр по первому
- Режим генерации по кадрам не поддерживает 512P
image_urls.Пример: "https://example.com/last-frame.jpg"boolean
по умолчанию:"true"
Автоматическая оптимизация промпта. Установите
false для более точного контроля.boolean
по умолчанию:"false"
Сократить время оптимизации промпта. Ускоряет обработку при включении.
boolean
по умолчанию:"false"
Добавить водяной знак к сгенерированному видео.
Три режима генерации
| Режим | image_urls | metadata.last_frame_image | Описание |
|---|---|---|---|
| Текст-в-видео | Не передавать | Не передавать | Генерация видео по текстовому описанию |
| Изображение-в-видео | ✅ 1 изображение | Не передавать | Генерация видео с первым кадром |
| По первому и последнему кадру | ✅ 1 изображение (первый кадр) | ✅ Передать (последний кадр) | Переходное видео от первого к последнему кадру |
Комбинации разрешения и длительности
| Разрешение | Поддерживаемая длительность | Текст-в-видео | Изображение-в-видео | По кадрам |
|---|---|---|---|---|
| 512P | 6 с, 10 с | ✅ | ✅ | ❌ |
| 768P | 6 с, 10 с | ✅ | ✅ | ✅ |
| 1080P | 6 с | ✅ | ✅ | ✅ |
Команды камеры
Вprompt используйте синтаксис [команда] для управления камерой:
| Категория | Команды |
|---|---|
| Панорама | [左移] [右移] |
| Поворот | [左摇] [右摇] |
| Наезд/отъезд | [推进] [拉远] |
| Подъём/спуск | [上升] [下降] |
| Наклон | [上摇] [下摇] |
| Зум | [变焦推近] [变焦拉远] |
| Прочее | [晃动] [跟随] [固定] |
- Комбинация: несколько команд в одних
[]действуют одновременно, например[左摇,上升], рекомендуется не более 3 - Последовательность: команды в разных позициях промпта действуют по порядку, например
"...[推进], затем...[拉远]"
Ответ
string
ID задачи для запроса статуса.
string
Тип объекта, всегда
generation.task.string
Использованная модель.
string
Статус задачи:
queued, in_progress, completed или failed.integer
Временная метка создания задачи.
Примеры
Текст-в-видео
{
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта [推进]",
"duration": 6,
"resolution": "1080P"
}
Изображение-в-видео
{
"model": "MiniMax-Hailuo-02",
"prompt": "Человек медленно поворачивается, улыбается",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 6,
"resolution": "768P"
}
Генерация по первому и последнему кадру
{
"model": "MiniMax-Hailuo-02",
"prompt": "Девочка постепенно взрослеет",
"image_urls": ["https://example.com/child.jpg"],
"duration": 6,
"resolution": "1080P",
"metadata": {
"last_frame_image": "https://example.com/adult.jpg"
}
}
Управление камерой
{
"model": "MiniMax-Hailuo-02",
"prompt": "Человек берёт книгу [上升], затем начинает читать [固定]",
"duration": 6,
"resolution": "768P"
}
10-секундное видео + быстрая предобработка
{
"model": "MiniMax-Hailuo-02",
"prompt": "Волны бьются о берег на закате, золотистый свет на воде",
"duration": 10,
"resolution": "768P",
"metadata": {
"prompt_optimizer": true,
"fast_pretreatment": true
}
}
Генерация видео — асинхронная задача. После отправки используйте Получить статус задачи для запроса прогресса и результатов.
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json",
},
json={
"model": "MiniMax-Hailuo-02",
"prompt": "Ночной город, мерцающие неоновые огни, поток транспорта",
"duration": 6,
"resolution": "1080P",
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "MiniMax-Hailuo-02",
prompt: "Ночной город, мерцающие неоновые огни, поток транспорта",
duration: 6,
resolution: "1080P"
})
});
console.log(await response.json());
{
"id": "vid_01K8SGYNNNVBQTXNR4MM964S7K",
"object": "generation.task",
"model": "MiniMax-Hailuo-02",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}