KozeKoze
Вернуться к блогу
Учебное пособие2026年6月28日·管理员

Документация по вызовам API для генерации видео

Kozeai предоставляет интерфейс для генерации видео, совместимый с OpenAI Sora, использующий асинхронный режим выполнения задач: сначала отправляется задача для получения `task_id`, затем проверяется статус задачи, и после завершения загружается видеоконтент.

Документация по вызову API для генерации видео

kozeai предоставляет интерфейс генерации видео, совместимый с OpenAI Sora, использующий **асинхронный режим задач**: сначала отправляется задача для получения `task_id`, затем проверяется статус задачи, и после завершения загружается видеоконтент.

Аутентификация

Все запросы аутентифицируются с помощью `Authorization: Bearer `. Используйте это после создания токена API в консоли.

export KOZEAI_API_KEY="sk-your-token"
export KOZEAI_BASE_URL="https://api.kozeai.com"

Интерфейс Обзор

mp4
Метод Путь Назначение
POST /v1/videos/generations Создать видеозадачу
GET /v1/videos/{task_id} Запрос статуса задачи
GET /v1/videos/{task_id}/content Играть онлайн или Скачать

Идентификатор задачи в формате task_12345, возвращаемый интерфейсом отправки, принадлежит только текущему пользователю.


1. Создать задачу видео

curl "$KOZEAI_BASE_URL/v1/videos/generations" \

-H "Авторизация: Bearer $KOZEAI_API_KEY" \

-H "Тип содержимого: application/json" \

-d '{
"модель": "video-ds-2.0",

"prompt": "Кинематографическое видео 9:16, на котором кошка бежит под теплым солнечным светом",

"секунд": 15,

"aspect_ratio": "9:16"

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

Параметры Тип Обязательный Описание
модель строка Да Название модели видео, например, video-ds-2.0
подсказка строка Да Видеоконтент описание
секунды целое число Нет Длительность видео (в секундах), в зависимости от диапазона поддержки модели источника
соотношение сторон строка Нет Соотношение сторон, обычно используемое: 9:16, 16:9, 1:1
изображения массив Нет URL эталонных изображений или base64
videos array No Reference Video URL
audios array No Reference Audio URL

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

Видео, сгенерированное с помощью изображений (с эталонными изображениями)

Передайте массив images для генерации видео на основе эталонных изображений:

curl "$KOZEAI_BASE_URL/v1/videos/generations" \

-H "Авторизация: Bearer $KOZEAI_API_KEY" \

-H "Content-Type: application/json" \

-d '{

"model": "video-ds-2.0",
"prompt": "Используйте стиль эталонного изображения и создайте плавное видео о продукте",
"seconds": 15,
"aspect_ratio": "9:16",

"images": ["https://example.com/input.png"],

"videos": ["https://example.com/input.mp4"],

"audios": ["https://example.com/input.mp3"]
}'

  • images поддерживает URL-адреса изображений или base64.
  • videos / audios являются необязательными справочными материалами.
  • При обращении через интерфейс автозаполнения чата (см. конец статьи) просто прикрепите изображение к сообщению; система автоматически преобразует его в параметр images.

Ответ (отправка прошла успешно)

{
"id": "task_12345",
"task_id": "task_12345",

"model": "video-ds-2.0",

"status": "queued",

"progress": 0,

"created_at": 

}

status Значения: queued (в очереди), in_progress (в процессе), completed (завершено), failed (сбой).


2. Опрос статуса задачи

Используйте id, возвращаемый при отправке запроса, для опроса с рекомендуемым интервалом 3-5 секунд.

curl "$KOZEAI_BASE_URL/v1/videos/task_12345" \

-H "Авторизация: Bearer $KOZEAI_API_KEY"

Ответ (генерируется)

{
"id": "task_12345",
"object": "video",
"model": "video-ds-2.0",
"status": "in_progress",

"progress": 45,

"created_at": 1751000000
}

Response (Complete)

{
"id": "task_12345",

"object": "video",
"model": "video-ds-2.0",
"status": "completed",
"progress": 100,
"created_at": 1751000000,

После завершения `metadata.content_url` предоставляет непосредственно доступный адрес видео; его также можно загрузить, используя интерфейс контента ниже.

Ответ (сбой)

{
"id": "task_12345",
"object": "video",

"status": "failed",

 class="hljs-attr">"error": { "message": "Failure reason" }
}

3. Загрузка видеоконтента

curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \

-H "Авторизация: Bearer $KOZEAI_API_KEY" \

-o result.mp4

  • Возвращает 409 Conflict, если задача не выполнена (все еще в очереди/генерируется).
  • Поддерживает сегментированную загрузку/воспроизведение методом перетаскивания с использованием запроса заголовок.
  • Возвращает .

Полный пример

JavaScript (fetch + polling)

const BASE = process.env.KOZEAI_BASE_URL;

const KEY = process.env.KOZEAI_API_KEY;

const headers = { Authorization: `Bearer ${KEY}` };

// 1. Отправить задачу
const submit = await fetch(`${BASE}/v1/videos/generations`, {
method: 'POST',

headers: { ...headers, 'Content-Type': 'application/json' },

body: JSON.stringify({
model: 'video-ds-2.0',

prompt: 'Плавный рекламный ролик с флаконом духов на стекле',

seconds: 15,

class="hljs-attr">aspect_ratio: '9:16',

}),
});
const task = await submit.json();

const taskId = task.id;

// 2. Опрашивать до завершения
асинхронный функция опрос() {

пока (true) {

const res = await fetch(`${BASE}/v1/videos/${taskId}`, { headers });

const data = await res.json();

if (data.status === 'completed') return data;

if (data.status === 'failed') throw new Error(data.error?.message || 'failed');
await new Promise((r) => setTimeout(r, 5000));

}
}
const done = await poll();

// 3. Получение адреса видео
console.log('Адрес видео:', done.metadata?.content_url

|| `${BASE}/v1/videos/${taskId}/content`);

Python (requests + polling)

import os, time, requests

BASE = os.environ["KOZEAI_BASE_URL"]
KEY = os.environ["KOZEAI_API_KEY"]
headers = {"Авторизация": f"Bearer {KEY}"}

# 1. Отправить задачу
resp = requests.post(
f"{BASE}/v1/videos/generations",

headers=headers,

json={

"model": "video-ds-2.0",

"prompt": "Кинематографическое видео 9:16, на котором кошка бежит под теплым солнечным светом",

"seconds": 15,

"aspect_ratio": "9:16",

},
)
task_id = resp.json()["id"]

# 2. Опрос
while True:

data = requests.get(f"{BASE}/v1/videos/{task_id}", headers=headers).json()
if data["status"] == "completed":
break
if data["status"] == "failed":
raise RuntimeError(data.get("error", {}).get("message", "failed"))
time.sleep(5)

# 3. Download
mp4 = requests.get(f"{BASE}/v1/videos/{task_id}/content", headers=headers)
with open("result.mp4", "wb") as f: f.write(mp4.content)


Вызывается в интерфейсе автозавершения чата (совместимое использование)

Видеомодель также может быть вызвана через /v1/chat/completions, облегчая повторное использование чат-клиентов.

При отправке запроса просто передайте имя модели видео в `model`, и система автоматически преобразует его в задачу видео:
curl $KOZEAI_BASE_URL/v1/chat/completions

\ -H Authorization: Bearer $KOZEAI_API_KEY \ -H Content-Type: application/json \ -d { Model: } `

returns "video-ds-2.0

, "messages: [{"role: "user, "content: "a cat running in the sunlight, cinematic, 9:16}] }

Возвращает результат завершения чата

Формат — `message.content`, который содержит статус задачи и ссылку `/v1/videos/{task_id}`. Эта ссылка воспроизведет видео после завершения задачи. Страница лобби чата использует этот метод.

Обе точки входа (/v1/videos/generations и /v1/chat/completions) используют одну и ту же систему задач и не конфликтуют друг с другом. Для прямой интеграции рекомендуется использовать стандартный интерфейс `/v1/videos/*`.


Код ошибки

Код состояния Значение
401 Токен отсутствует, истек или недействителен
403 Недостаточный баланс или у текущей группы нет разрешения на эту модель
404 Идентификатор задачи не существует или не принадлежит текущему пользователю; или модель не является настроено.
409 Видеоконтент не готов (задача все еще находится в очереди/генерируется)
429 Срабатывает ограничение скорости
502 Поставщик вышестоящего уровня не справился или вернул недействительный результат

Документация по вызовам API для генерации видео | Koze AI