وثائق استدعاء واجهة برمجة تطبيقات إنشاء الفيديو
توفر kozeai واجهة لإنشاء الفيديو متوافقة مع OpenAI Sora، باستخدام وضع **المهام غير المتزامنة**: يتم أولاً إرسال المهمة للحصول على `task_id`، ثم يتم التحقق من حالة المهمة، وتنزيل محتوى الفيديو عند اكتمالها.
المصادقة
يتم التحقق من جميع الطلبات باستخدام `Authorization: Bearer
export KOZEAI_API_KEY="sk-your-token"
export KOZEAI_BASE_URL="https://api.kozeai.com"
الواجهة نظرة عامة
| الطريقة | المسار | الغرض |
|---|---|---|
| POST | /v1/videos/generations |
إنشاء مهمة فيديو |
| GET | /v1/videos/{task_id} |
استعلام عن المهمة الحالة |
| استرجاع | /v1/videos/{task_id}/content |
تشغيل عبر الإنترنت أو تنزيل | mp4
معرف المهمة، بالشكل
task_12345، الذي تُرجعه واجهة الإرسال، خاص بالمستخدم الحالي فقط.
1. إنشاء مهمة فيديو
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": "فيديو سينمائي مدته 9:16 لقطة تركض تحت أشعة الشمس الدافئة",
"seconds": 15,
"aspect_ratio": "9:16"
}'
معلمات الطلب
| المعلمات | النوع | مطلوب | الوصف |
|---|---|---|---|
model |
string | نعم | اسم نموذج الفيديو، مثل video-ds-2.0 |
prompt |
string | نعم | وصف محتوى الفيديو | ثواني |
عدد صحيح | لا | مدة الفيديو (بالثواني)، بناءً على نطاق دعم النموذج الأساسي |
نسبة العرض إلى الارتفاع |
نص | لا | نسبة العرض إلى الارتفاع، شائعة الاستخدام 9:16، 16:9، 1:1 |
صور |
مصفوفة | لا | رابط الصورة المرجعية أو base64 |
videos |
array | No | Reference Video URL |
audios |
array | No | Reference Audio URL |
قد تدعم نماذج المصدر المختلفة معلمات مختلفة. سيتم تمرير المعلمات غير المدرجة وفقًا للبروتوكول الأصلي.
فيديو مُنشأ من الصور (مع صور مرجعية)
مرر مصفوفة images لإنشاء فيديو بناءً على الصور المرجعية:
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: استخدم نمط الصورة المرجعية لإنشاء فيديو منتج سلس,
seconds: 15,
aspect_ratio: 9:16,
class="hljs-string">"images": ["https://example.com/input.png"],
"videos": ["https://example.com/input.mp4"],
"audios": ["https://example.com/input.mp3"]
}'
imagesيدعم روابط الصور أو ترميز base64.مقاطع الفيديو/الملفات الصوتيةمواد مرجعية اختيارية.- عند الاتصال عبر واجهة الإكمال التلقائي للدردشة (انظر نهاية المقال)، ما عليك سوى إرفاق الصورة بالرسالة؛ سيقوم النظام بتحويلها تلقائيًا إلى مُعامل
images.
الاستجابة (تم الإرسال بنجاح)
{
"id": "task_12345",
"task_id": "task_12345",
"object": "video",
"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 "Authorization: Bearer $KOZEAI_API_KEY"
الاستجابة (جاري الإنشاء)
{
"id": "task_12345",
"object": "video",
"status": "in_progress",
"progress": 45,
"created_at": 1751000000
}
الاستجابة (مكتملة)
{
"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",
"error": { "message": "سبب الفشل" }
}
3. تنزيل محتوى الفيديو
curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \
-H "Authorization: Bearer $KOZEAI_API_KEY" \
-o result.mp4
- يُرجع رمز الخطأ 409 (تعارض) إذا لم تكتمل المهمة (لا تزال في قائمة الانتظار/جاري الإنشاء).
- يدعم التنزيل المُجزأ/تشغيل السحب والإفلات باستخدام طلب
header.
- يُرجع
.
مثال كامل
جافا سكريبت (جلب + استطلاع)
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: 'A smooth commercial video of a perfume bottle on glass',
seconds: 15,
aspect_ratio: '9:16',
}),
});
const task = await submit.json();
const taskId = task.id;
// 2. استطلاع حتى الاكتمال
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. الحصول على عنوان الفيديو
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 = {"Authorization": f"Bearer {KEY}"}
# 1. إرسال المهمة
resp = requests.post(
f"{BASE}/v1/videos/generations",
headers=headers,
json={
"model":
"video-ds-2.0",
"prompt":
فيديو سينمائي مدته 9:16 لقطة تجري تحت أشعة الشمس الدافئة،
ثانية: 15،
نسبة العرض إلى الارتفاع: 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( class="hljs-string">"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}]
}
Returns chat completion
The format is `message.content`, which contains the task status and a link `/v1/videos/{task_id}`. This link will play the video once the complete. The تستخدم صفحة ردهة الدردشة هذه الطريقة.
تتشارك نقطتا الدخول (/v1/videos/generations و/v1/chat/completions) نظام المهام نفسه، ولا يوجد بينهما أي تعارض. وللتكامل المباشر، يُنصح باستخدام واجهة `/v1/videos/*` القياسية.
رمز الخطأ
رمز الحالة
المعنى
401
الرمز المميز مفقود، أو منتهي الصلاحية، أو غير صالح
403
رصيد غير كافٍ، أو لا تملك المجموعة الحالية صلاحية الوصول إلى هذا النموذج
404
معرّف المهمة غير موجود، أو لا ينتمي إلى المستخدم الحالي؛ أو النموذج غير مُهيأ.
409
محتوى الفيديو غير جاهز (المهمة لا تزال في قائمة الانتظار/الإنشاء)
429
تجاوز حد معدل التشغيل
502
فشل المورّد الأصلي أو أعاد نتيجة غير صالحة