KozeKoze
โ† Kembali ke Blog
Tutorial2026ๅนด6ๆœˆ28ๆ—ฅยท็ฎก็†ๅ‘˜

Dokumentasi Panggilan API Pembuatan Video

Kozeai menyediakan antarmuka pembuatan video yang kompatibel dengan OpenAI Sora, menggunakan mode tugas asinkron: pertama-tama kirimkan tugas untuk mendapatkan `task_id`, kemudian periksa status tugas, dan unduh konten video setelah selesai.

Dokumentasi Panggilan API Pembuatan Video

kozeai menyediakan antarmuka pembuatan video yang kompatibel dengan OpenAI Sora, menggunakan mode **tugas asinkron**: pertama-tama kirimkan tugas untuk mendapatkan `task_id`, kemudian periksa status tugas, dan unduh konten video setelah selesai.

Autentikasi

Semua permintaan diautentikasi menggunakan `Authorization: Bearer `.

Gunakan ini setelah membuat token API di konsol.

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

Antarmuka Gambaran Umum

Metode Jalur Tujuan POST /v1/videos/generations Buat Tugas Video GET /v1/videos/{task_id} Periksa Status Tugas GET /v1/videos/{task_id}/content Putar Online atau Unduh mp4

ID Tugas dalam bentuk task_12345, yang dikembalikan oleh antarmuka pengiriman, hanya milik pengguna saat ini.


1. Buat tugas 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": "Video sinematik berdurasi 9:16 tentang seekor kucing yang berlari di bawah sinar matahari yang hangat",
"detik": 15,
"rasio_aspek": "9:16"
}'

Parameter Permintaan

Parameter Tipe Wajib Deskripsi
model string Ya Nama model video, misalnya video-ds-2.0
prompt string Ya Deskripsi konten video
detik bilangan bulat Tidak Durasi video (detik), berdasarkan rentang dukungan model upstream
rasio aspek string Tidak Rasio aspek, yang umum digunakan 9:16, 16:9, 1:1
gambar array Tidak URL gambar referensi atau base64
video array Tidak URL Video Referensi
audio array Tidak URL Audio Referensi

Model upstream yang berbeda mungkin mendukung parameter yang berbeda. Parameter yang tidak tercantum akan diteruskan sesuai dengan protokol hulu.

Video yang dihasilkan dari gambar (dengan gambar referensi)

Masukkan array images untuk menghasilkan video berdasarkan gambar referensi:

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: Gunakan gaya gambar referensi dan buat video produk yang halus,

detik: 15,

rasio_aspek: "9:16",
"gambar": ["https://example.com/input.png"],
"video": ["https://example.com/input.mp4"],
"audio": ["https://example.com/input.mp3"]
}'

  • images mendukung URL gambar atau base64.
  • videos / audios adalah materi referensi opsional.
  • Saat melakukan panggilan melalui antarmuka pelengkapan otomatis obrolan (lihat akhir artikel), cukup lampirkan gambar ke pesan; sistem akan secara otomatis mengonversinya ke parameter images.

Respons (pengiriman berhasil)

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

"status": "queued",

"progress": 0",

"created_at": 

}

status Nilai: queued (dalam antrian), in_progress (sedang berlangsung), completed (selesai), gagal (gagal).


2. Status Tugas Polling

Gunakan id yang dikembalikan oleh pengajuan untuk melakukan polling, dengan interval yang disarankan 3-5 detik.

curl "$KOZEAI_BASE_URL/v1/videos/task_12345" \
-H "Authorization: Bearer $KOZEAI_API_KEY"

Respons (sedang dibuat)

{

id: task_12345,
object: video,
model: video-ds-2.0,
status: in_progress,
"progress": 45,
"created_at": 1751000000
}

Respons (Selesai)

{
"id": "task_12345",
"object": ,
: ,
: ,
: 100,
: 1751000000,

Setelah selesai, `metadata.content_url` akan memberikan alamat video yang dapat diakses langsung; video tersebut juga dapat diunduh menggunakan antarmuka konten di bawah ini.

Respons (gagal)

{
id: task_12345,
objek: video,
status: gagal,
error: { pesan: Alasan kegagalan }
}

3. Unduh konten video

curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \
-H "Authorization: Bearer $KOZEAI_API_KEY" \
-o result.mp4

  • Mengembalikan 409 Conflict jika tugas belum selesai (Masih dalam antrian/sedang dibuat).
  • Mendukung pengunduhan tersegmentasi/pemutaran seret dan lepas menggunakan header permintaan .
  • Mengembalikan .

Contoh lengkap

JavaScript (fetch + polling)

const BASE = process.env.KOZEAI_BASE_URL;
const KEY = process.env.KOZEAI_API_KEY;
const headers = { Authorization: `Bearer ${KEY}` };

// 1. Kirim tugas
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: 'Video komersial yang halus tentang botol parfum di atas kaca',
seconds: 15,
aspect_ratio: '9:16',

}),
});

const task = await submit.json();

const taskId = task.id;

// 2. Polling sampai selesai
async function poll() {
while (true) {
const res = await fetch(`${BASE}/v1/videos/${taskId}`, { headers });

const data = await res.json();

if (data.status === 'complete') 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. Dapatkan alamat video
console.log('Alamat 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": fPembawa {KEY}}

# 1. Kirim tugas
resp = requests.post(

f{BASE}/v1/videos/generations,
headers=headers,
json={
model: video-ds-2.0,
prompt: Sebuah video sinematik berdurasi 9:16 tentang seekor kucing yang berlari di bawah sinar matahari yang hangat,

detik: 15,

rasio_aspek: 9:16,

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

# 2. Polling
while True:

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

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


Dipanggil di antarmuka penyelesaian obrolan (penggunaan yang kompatibel)

Model video juga dapat dipanggil melalui /v1/chat/completions, sehingga memudahkan penggunaan kembali klien obrolan.

Saat membuat permintaan, cukup berikan nama model video di `model`, dan sistem akan secara otomatis mengubahnya menjadi tugas video:
curl $KOZEAI_BASE_URL/v1/chat/completions

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

mengembalikan "video-ds-2.0

, "pesan: [{"peran: "pengguna, "konten: "seekor kucing berlari di bawah sinar matahari, sinematik, 9:16}] }

Mengembalikan penyelesaian obrolan

Formatnya adalah `pesan.konten`, yang berisi status tugas dan tautan `/v1/videos/{task_id}`. Tautan ini akan memutar video setelah selesai. Halaman lobi obrolan menggunakan metode ini.

Kedua titik masuk (/v1/videos/generations dan /v1/chat/completions) berbagi sistem tugas yang sama dan tidak saling bertentangan. Untuk integrasi langsung, disarankan untuk menggunakan antarmuka standar `/v1/videos/*`.


Kode Kesalahan

Status Kode Arti
401 Token hilang, kedaluwarsa, atau tidak valid
403 Saldo tidak mencukupi, atau grup saat ini tidak memiliki izin untuk model ini
404 ID Tugas Tidak ada, atau tidak dimiliki oleh pengguna saat ini; atau model belum dikonfigurasi.
409 Konten video belum siap (tugas masih mengantri/membuat)
429 Tingkat pemicu batas
502 Pemasok hulu gagal atau mengembalikan hasil yang tidak valid

Dokumentasi Panggilan API Pembuatan Video | Koze AI