KozeKoze
Quay lại Blog
Hướng dẫn2026年6月28日·管理员

Tài liệu hướng dẫn gọi API tạo video

Kozeai cung cấp giao diện tạo video tương thích với OpenAI Sora, sử dụng chế độ tác vụ bất đồng bộ: trước tiên gửi tác vụ để nhận `task_id`, sau đó kiểm tra trạng thái tác vụ và tải xuống nội dung video sau khi hoàn thành.

Tài liệu hướng dẫn gọi API tạo video

kozeai cung cấp giao diện tạo video tương thích với OpenAI Sora, sử dụng chế độ **tác vụ bất đồng bộ**: trước tiên gửi tác vụ để lấy `task_id`, sau đó kiểm tra trạng thái tác vụ và tải xuống nội dung video sau khi hoàn thành.

Xác thực

Tất cả các yêu cầu đều được xác thực bằng `Authorization: Bearer `.

Sử dụng lệnh này sau khi tạo mã thông báo API trong bảng điều khiển.

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

Giao diện Tổng quan

mp4
Phương thức Đường dẫn Mục đích
POST /v1/videos/generations Tạo tác vụ video
GET /v1/videos/{task_id} Truy vấn trạng thái tác vụ
GET /v1/videos/{task_id}/content Xem trực tuyến hoặc Tải xuống

Mã ID nhiệm vụ có dạng task_12345, được giao diện gửi trả về, chỉ thuộc về người dùng hiện tại.


1. Tạo tác vụ video

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

-H "Authorization: Bearer $KOZEAI_API_KEY" \

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

-d '{

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

"prompt": "Một video điện ảnh dài 9:16 về một con mèo đang chạy dưới ánh nắng ấm áp",

"giây": 15,

"tỷ_lệ_khung_hình": "9:16"

}' 

Tham số yêu cầu

Tham số Loại Bắt buộc Mô tả
mẫu chuỗi Tên mẫu video, ví dụ như video-ds-2.0
lời nhắc chuỗi Mô tả nội dung video
giây số nguyên Không Thời lượng video (giây), dựa trên phạm vi hỗ trợ của mô hình nguồn
tỷ lệ khung hình chuỗi Không Tỷ lệ khung hình, thường dùng: 9:16, 16:9, 1:1
hình ảnh mảng Không URL hình ảnh tham chiếu hoặc base64
video mảng Không URL video tham chiếu
âm thanh mảng Không URL âm thanh tham chiếu

Các mô hình nguồn khác nhau có thể hỗ trợ các tham số khác nhau. Các tham số không được liệt kê sẽ được truyền theo giao thức của máy chủ đầu vào.

Video được tạo từ hình ảnh (với hình ảnh tham chiếu)

Truyền vào mảng images để tạo video dựa trên các hình ảnh tham chiếu:

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

-H "Authorization: Bearer $KOZEAI_API_KEY" \

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

-d '{

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

"prompt": "Sử dụng kiểu ảnh tham khảo và tạo video sản phẩm mượt mà",

"giây": 15,

"tỷ lệ khung hình": "9:16",

"hình ảnh": ["https://example.com/input.png"],

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

"audio": ["https://example.com/input.mp3"]

}'

  • hình ảnh hỗ trợ URL hình ảnh hoặc base64.
  • video / audio là tài liệu tham khảo tùy chọn.
  • Khi gọi điện qua giao diện tự động hoàn thành trò chuyện (xem cuối bài viết), chỉ cần đính kèm hình ảnh vào tin nhắn; Hệ thống sẽ tự động chuyển đổi nó thành tham số images.

Phản hồi (gửi thành công)

{

"id": "task_12345",

"task_id": "task_12345",

"object": "video",

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

Trạng thái

: đang chờ, tiến độ: 0, được tạo lúc: }

Trạng thái Giá trị: đang chờ (queued), đang tiến hành (in progress), đã hoàn thành (completed), thất bại (failed).


2. Trạng thái tác vụ thăm dò

Sử dụng id được trả về từ yêu cầu để thăm dò, với khoảng thời gian khuyến nghị là 3-5 giây.

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

-H "Authorization: Bearer $KOZEAI_API_KEY"

Phản hồi (đang tạo)

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

"progress": 45,

"created_at":  class="hljs-number">1751000000
}

Phản hồi (Hoàn tất)

{
"id": "task_12345",

"object": "video",

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

"status": "completed",

"progress": 100,

"created_at": 1751000000,

Sau khi hoàn thành, `metadata.content_url` cung cấp địa chỉ video có thể truy cập trực tiếp; video cũng có thể được tải xuống bằng giao diện nội dung bên dưới.

Phản hồi (thất bại)

{
"id": "task_12345",

"object": "video",

"status": "failed",

"error": { "message": "Lý do thất bại" }
}

3. Tải xuống nội dung video

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

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-o result.mp4

  • Trả về lỗi 409 Conflict nếu tác vụ không hoàn thành (Vẫn đang trong hàng đợi/đang tạo).
  • Hỗ trợ tải xuống phân đoạn/phát lại kéo và thả bằng cách sử dụng tiêu đề yêu cầu .
  • Trả về .

Ví dụ đầy đủ

JavaScript (truy xuất + thăm dò)

const BASE = process.env.KOZEAI_BASE_URL;

const KEY = process.env.KOZEAI_API_KEY;

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

// 1. Gửi nhiệm vụ
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: 'Một video quảng cáo mượt mà về chai nước hoa trên kính',

giây: 15,

tỷ lệ khung hình: '9:16',

}),
});

const task = await submit.json();
const taskId = task.id;

// 2. Kiểm tra cho đến khi hoàn thành
async function poll() {
while (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. Lấy địa chỉ video
console.log('Địa chỉ video:', 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 = {"Authorization": f"Bearer {KEY}"}

# 1. Gửi nhiệm vụ
resp = requests.post(

f"{BASE}/v1/videos/generations",

headers=headers,

json={

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

"prompt": "Một video điện ảnh dài 9:16 về một con mèo đang chạy dưới ánh nắng ấm áp",

"giây": 15,

"tỷ lệ khung hình": "9:16",

},

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

# 2. Polling
trong khi 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. Tải xuống
mp4 = requests.get(f"{BASE}/v1/videos/{task_id}/content", headers=headers)
with open("result.mp4", "wb") as f: f.write(mp4.content)


Được gọi trong giao diện hoàn thành trò chuyện (sử dụng tương thích)

Mô hình video cũng có thể được gọi thông qua /v1/chat/completions, tạo điều kiện thuận lợi cho việc tái sử dụng các ứng dụng khách trò chuyện.

Khi thực hiện yêu cầu, Chỉ cần truyền tên mô hình video vào `model`, và hệ thống sẽ tự động chuyển đổi nó thành một tác vụ video:
curl $KOZEAI_BASE_URL/v1/chat/completions

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

trả về "video-ds-2.0

, "messages: [{"role: "user, "content: "một con mèo đang chạy dưới ánh nắng mặt trời, điện ảnh, 9:16}] }

Trả về trạng thái hoàn thành cuộc trò chuyện

Định dạng là `message.content`, chứa trạng thái nhiệm vụ và một liên kết `/v1/videos/{task_id}`. Liên kết này sẽ phát video sau khi hoàn thành. Trang sảnh trò chuyện sử dụng phương thức này.

Cả hai điểm truy cập (/v1/videos/generations/v1/chat/completions) đều dùng chung hệ thống nhiệm vụ và không xung đột với nhau. Để tích hợp trực tiếp, nên sử dụng giao diện chuẩn `/v1/videos/*`.


Mã lỗi

Trạng thái Mã Ý nghĩa
401 Mã thông báo bị thiếu, hết hạn hoặc không hợp lệ
403 Số dư không đủ, hoặc nhóm hiện tại không có quyền truy cập vào mô hình này
404 ID tác vụ không tồn tại, hoặc không thuộc về người dùng hiện tại; hoặc mô hình chưa được cấu hình.
409 Nội dung video chưa sẵn sàng (tác vụ vẫn đang xếp hàng/tạo)
429 Tỷ lệ kích hoạt giới hạn
502 Nhà cung cấp thượng nguồn gặp lỗi hoặc trả về kết quả không hợp lệ

Tài liệu hướng dẫn gọi API tạo video | Koze AI