Генерация видео

Генерация видео

Генерация видео выполняется через POST /api/v1/videos. Запрос сразу отвечает 202, результат забирается поллингом. В SDK OpenAI это client.post("/videos", ...).

Подробно о модальностях каждой модели можно узнать на странице моделей.

Параметры запроса

ПараметрТипОбязательныйОписание
modelstringДаНазвание видеомодели из списка
promptstringДаТекст запроса к нейросети
sizestringНетСоотношение сторон видео (например: "16:9", "9:16"). Поддерживаемые значения зависят от модели
qualitystringНетКачество видео (например: "720p", "1080p", "4k", "2K"). Поддерживаемые значения зависят от модели
durationintegerНетДлительность видео в секундах (например: 4, 6, 8). Поддерживаемые значения зависят от модели

Пример запроса на генерацию видео

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";
}
?>

Пример запроса на генерацию видео с файлом

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);
?>

Пример ответа статуса задачи при поллинге:

{
    "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"
    }
}

Удалить задачу любого типа можно на странице Удаление задачи.

Чат-боты

Выберите чат-бота на интересующую вас тематику и начните с ним работу

Сайт использует cookies

Продолжая работу, вы принимаете оферту, пользовательское соглашение и политику конфиденциальности.