Video Oluşturma API Çağrısı Dokümantasyonu
kozeai, OpenAI Sora ile uyumlu bir video oluşturma arayüzü sunar ve **eşzamansız görev** modunu kullanır: önce `task_id`'yi almak için görevi gönderin, ardından görev durumunu sorgulayın ve tamamlandığında video içeriğini indirin.
Kimlik Doğrulama
Tüm istekler `Authorization: Bearer
dışa aktar KOZEAI_API_KEY="sk-your-token"
dışa aktar KOZEAI_BASE_URL="https://api.kozeai.com"
Arayüz Genel Bakış
| Yöntem | Yol | Amaç |
|---|---|---|
| POST | /v1/videos/generations |
Video Görevi Oluştur |
| GET | /v1/videos/{task_id} |
Görev Durumunu Sorgula |
| GET | /v1/videos/{task_id}/content |
Çevrimiçi Oynat veya İndir | mp4
Gönderim arayüzü tarafından döndürülen
task_12345biçimindeki Görev Kimliği yalnızca geçerli kullanıcıya aittir.
1. Video oluşturma görevi
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ıcak güneş ışığında koşan bir kedinin sinematik 9:16'lık videosu",
"Saniye": 15",
"Aspect_ratio": "9:16"
}
İstek Parametreleri
| Parametreler | Tür | Gerekli | Açıklama |
|---|---|---|---|
model |
string | Evet | Video model adı, örneğin video-ds-2.0 |
prompt |
string | Evet | Video içeriği açıklaması | saniye |
tamsayı | Hayır | Üst akış modelinin destek aralığına göre video süresi (saniye) |
en boy oranı |
dize | Hayır | En boy oranı, yaygın olarak kullanılan 9:16, 16:9, 1:1 |
görüntüler |
dizi | Hayır | Referans görüntülerin URL'si veya base64 |
videolar |
dizi | Hayır | Referans Video URL'si |
sesler |
dizi | Hayır | Referans Ses URL'si |
Farklı yukarı akış modelleri farklı parametreleri destekleyebilir. Listelenmeyen parametreler, yukarı akış protokolüne göre iletilecektir.
Resim tabanlı video (referans resimlerle)
Referans resimlere dayalı bir video oluşturmak için images dizisini iletin:
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": "Referans görsel stilini kullanın ve akıcı bir ürün videosu oluşturun",
"seconds": 15,
"aspect_ratio": "9:16",
"resimler": ["https://example.com/input.png"],
"videolar": ["https://example.com/input.mp4"],
"sesler": ["https://example.com/input.mp3"]
}'
resimlerresim URL'lerini veya base64'ü destekler.videolar/sesleristeğe bağlı referans materyalleridir.- Sohbet otomatik tamamlama arayüzü üzerinden arama yaparken (makalenin sonuna bakın), resmi mesaja eklemeniz yeterlidir; sistem otomatik olarak
resimlerparametresine dönüştürecektir.
Yanıt (gönderim başarılı)
{
"id": "task_12345",
"task_id": "task_12345",
"object": "video",
"model":
durum
2. Yoklama Görevi Durumu
Gönderim tarafından döndürülen id'yi yoklama için kullanın, önerilen aralık 3-5 saniyedir.
curl "$KOZEAI_BASE_URL/v1/videos/task_12345" \
-H "Yetkilendirme: Bearer $KOZEAI_API_KEY"
Yanıt (oluşturuluyor)
{
"id": "task_12345",
"object": "video",
"model": "video-ds-2.0",
"status": "in_progress",
"progress": Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tamamlandı)
Yanıt (Tanım ... "model": "video-ds-2.0",
"status": "completed",
"progress": 100,
"created_at": 1751000000,
Tamamlandıktan sonra, `metadata.content_url` doğrudan erişilebilir video adresini sağlar; ayrıca aşağıdaki içerik arayüzü kullanılarak da indirilebilir.
Yanıt (başarısız)
{
"id": "task_12345",
"object": "video",
"status": "failed",
"error": { "mesaj": "Başarısızlık nedeni" }
}
3. Video içeriğini indir
curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \
-H "Authorization: Bearer $KOZEAI_API_KEY" \
-o result.mp4
- Görev tamamlanmadıysa (hala kuyrukta/oluşturuluyor) 409 Çakışma hatası döndürür.
istek başlığını kullanarak bölümlü indirme/sürükle bırak oynatmayı destekler.
- Döndürür
.
Tam örnek
JavaScript (fetch + polling)
const BASE = process.env.KOZEAI_BASE_URL;
const KEY = process.env.KOZEAI_API_KEY;
const headers = { Authorization: `Bearer ${KEY}` };
// 1. Görevi Gönder
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: 'Cam üzerinde bir parfüm şişesinin akıcı bir reklam videosu',
seconds: 15,
aspect_ratio: '9:16',
}),
});
const task = await submit.json();
const taskId = task.id;
// 2. Tamamlanana kadar anket yap
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. Video adresini alın
console.log('Video adresi:', 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örevi Gönder
resp = requests.post(
f"{BASE}/v1/videos/generations",
headers=headers,
json={
"model": "video-ds-2.0",
"prompt": "Sıcak güneş ışığında koşan bir kedinin sinematik 9:16 videosu",
"saniye": 15,
"en boy oranı": "9:16",
},
)
task_id = resp.json()["id"]
# 2. Yoklama
while True:
data = requests.get(f"{BASE}/v1/videos/{task_id}", headers=headers).json()
Eğer data["status"] == "completed" ise:
break
Eğer data["status"] == "failed" ise:
raise RuntimeError(data.get("hata", {}).get("mesaj", "başarısız"))
time.sleep("5")
# 3. İndir
mp4 = requests.get(f"{BASE}/v1/videos/{task_id}/content", headers=headers)
ile open("result.mp4", "wb") as f: f.write(mp4.content)
Sohbet tamamlama arayüzünde çağrılır (uyumlu kullanım)
Video modeli ayrıca /v1/chat/completions üzerinden de çağrılabilir, bu da sohbet istemcilerinin yeniden kullanımını kolaylaştırır.
Bir istekte bulunurken, `model` içinde video modeli adını geçirmeniz yeterlidir ve sistem bunu otomatik olarak bir video görevine dönüştürecektir:
curl $KOZEAI_BASE_URL/v1/chat/completions \
-H Authorization: Bearer $KOZEAI_API_KEY \
-H Content-Type: application/json \
-d {
Model: } `"video-ds-2.0" döndürür
,
mesajlar: [{rol: kullanıcı, içerik: güneş ışığında koşan bir kedi, sinematik, 9:16}]
}
Sohbetin tamamlandığını döndürür
Biçim `mesaj.içerik` şeklindedir ve görev durumunu ve `/v1/videos/{task_id}` bağlantısını içerir. Bu bağlantı, görev tamamlandığında videoyu oynatacaktır. Sohbet lobisi sayfası Bu yöntemi kullanır.
Her iki giriş noktası (/v1/videos/generations ve /v1/chat/completions) aynı görev sistemini paylaşır ve birbirleriyle çakışmaz. Doğrudan entegrasyon için standart `/v1/videos/*` arayüzünün kullanılması önerilir.
Hata Kodu
Durum Kodu
Anlamı
401
Token eksik, süresi dolmuş veya geçersiz
403
Yetersiz bakiye veya mevcut grubun bu model için izni yok
404
Görev Kimliği mevcut değil veya mevcut kullanıcıya ait değil; veya model yapılandırılmamış.
409
Video içeriği hazır değil (görev hala kuyruğa alınıyor/oluşturuluyor)
429
Oran sınırı tetikleniyor
502
Üst tedarikçi başarısız oldu veya geçersiz sonuç döndürdü