Генерация видео
Генерация видео выполняется через POST /api/v1/videos. Запрос сразу отвечает 202, результат забирается поллингом. В SDK OpenAI это client.post("/videos", ...).
Подробно о модальностях каждой модели можно узнать на странице моделей.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| model | string | Да | Название видеомодели из списка |
| prompt | string | Да | Текст запроса к нейросети |
| size | string | Нет | Соотношение сторон видео (например: "16:9", "9:16"). Поддерживаемые значения зависят от модели |
| quality | string | Нет | Качество видео (например: "720p", "1080p", "4k", "2K"). Поддерживаемые значения зависят от модели |
| duration | integer | Нет | Длительность видео в секундах (например: 4, 6, 8). Поддерживаемые значения зависят от модели |
Пример запроса на генерацию видео
SDK OpenAI
Python
cURL
PHP
import time
import base64
import httpx
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://ai.mitup.ru/api/v1",
)
response = client.post("/videos",
body={
"model": "gemini-omni-flash",
"prompt": "Сгенерируй короткое видео: закат над морем, волны и чайки",
},
cast_to=httpx.Response,
)
data = response.json()
task_id = data["id"]
while True:
status_response = client.get(f"/videos/{task_id}", cast_to=httpx.Response)
data = status_response.json()
status = data.get("status")
if status == "completed":
for index, item in enumerate(data.get("data") or []):
filename = f"output_{index}.mp4"
with open(filename, "wb") as f:
f.write(base64.b64decode(item["b64_json"]))
print("Видео сохранено:", filename)
break
if status == "failed":
print("Ошибка:", data.get("error"))
break
time.sleep(2)import time
import base64
import requests
url = "https://ai.mitup.ru/api/v1/videos"
api_key = "YOUR_API_KEY"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
params = {
"model": "gemini-omni-flash",
"prompt": "Сгенерируй короткое видео: закат над морем, волны и чайки"
}
response = requests.post(url, json=params, headers=headers)
data = response.json()
task_id = data["id"]
while True:
status_response = requests.get(f"https://ai.mitup.ru/api/v1/videos/{task_id}", headers=headers)
data = status_response.json()
status = data.get("status")
if status == "completed":
for index, item in enumerate(data.get("data") or []):
filename = f"output_{index}.mp4"
with open(filename, "wb") as f:
f.write(base64.b64decode(item["b64_json"]))
print("Видео сохранено:", filename)
break
if status == "failed":
print("Ошибка:", data.get("error"))
break
time.sleep(2)curl -X POST "https://ai.mitup.ru/api/v1/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gemini-omni-flash",
"prompt": "Сгенерируй короткое видео: закат над морем, волны и чайки"
}'
curl -X GET "https://ai.mitup.ru/api/v1/videos/YOUR_TASK_ID" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY"<?php
$url = "https://ai.mitup.ru/api/v1/videos";
$api_key = "YOUR_API_KEY";
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key,
];
$params = [
"model" => "gemini-omni-flash",
"prompt" => "Сгенерируй короткое видео: закат над морем, волны и чайки"
];
$data = json_encode($params, JSON_UNESCAPED_UNICODE);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'mitupai-API-client');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
$task_id = $response['id'] ?? '';
do {
sleep(2);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'mitupai-API-client');
curl_setopt($ch, CURLOPT_URL, "https://ai.mitup.ru/api/v1/videos/" . $task_id);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$poll = json_decode(curl_exec($ch), true);
curl_close($ch);
$status = $poll['status'] ?? '';
} while (in_array($status, ['pending', 'processing'], true));
if ($status === 'completed') {
foreach ($poll['data'] ?? [] as $index => $item) {
$filename = "output_{$index}.mp4";
file_put_contents($filename, base64_decode($item['b64_json'] ?? ''));
echo "Видео сохранено: {$filename}\n";
}
} else {
echo "Ошибка: " . json_encode($poll['error'] ?? $poll, JSON_UNESCAPED_UNICODE) . "\n";
}
?>Пример запроса на генерацию видео с файлом
SDK OpenAI
Python
cURL
PHP
import httpx
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://ai.mitup.ru/api/v1",
)
response = client.post("/videos",
body={
"model": "gemini-omni-flash",
"prompt": "Оживи это изображение: добавь лёгкое движение камеры и ветер в листьях",
"image": [
{"type": "input_image", "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}
],
},
cast_to=httpx.Response,
)
data = response.json()
print(data)import requests
url = "https://ai.mitup.ru/api/v1/videos"
api_key = "YOUR_API_KEY"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
params = {
"model": "gemini-omni-flash",
"prompt": "Оживи это изображение: добавь лёгкое движение камеры и ветер в листьях",
"image": [
{"type": "input_image", "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}
]
}
response = requests.post(url, json=params, headers=headers)
print(response.json())curl -X POST "https://ai.mitup.ru/api/v1/videos" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gemini-omni-flash",
"prompt": "Оживи это изображение: добавь лёгкое движение камеры и ветер в листьях",
"image": [
{"type": "input_image", "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}
]
}'<?php
$url = "https://ai.mitup.ru/api/v1/videos";
$api_key = "YOUR_API_KEY";
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key,
];
$params = [
"model" => "gemini-omni-flash",
"prompt" => "Оживи это изображение: добавь лёгкое движение камеры и ветер в листьях",
"image" => [
["type" => "input_image", "image_url" => "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="]
]
];
$data = json_encode($params, JSON_UNESCAPED_UNICODE);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'mitupai-API-client');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
print_r($response);
?>Пример ответа статуса задачи при поллинге:
Ожидание (200)
Успех (200)
Ошибка (4xx, 5xx)
{
"id": "YOUR_TASK_ID",
"status": "pending"
}{
"id": "YOUR_TASK_ID",
"status": "completed",
"created": 1710000000,
"data": [{"b64_json": "..."}],
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"total_tokens": 0
}
}{
"id": "YOUR_TASK_ID",
"created": 1710000000,
"status": "failed",
"error": {
"message": "...",
"type": "server_error",
"code": "500"
}
}Удалить задачу любого типа можно на странице Удаление задачи.