الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

استخدم polling كنهج أساسي لتوليد الفيديو لأن كل مهمة async تُرجع معرّف مهمة يمكنك الاستعلام عنه. أضف webhooks فقط عندما تدعم نقطة نهاية الفيديو المحددة عناوين URL الخاصة بـ callback، واحتفظ بـ polling كمصدر الحقيقة في حال فوات callback أو وجود آلية تسليم خاصة بالمزوّد.

إنشاء مهمة فيديو

ينشئ الطلب التالي مهمة فيديو بسيطة ويخزّن المعرّف المُعاد. أضف حقول المدة أو الدقة أو callback فقط عندما توثّق صفحة model المحدد هذه الحقول.
curl https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=doubao-seedance-2-0" \
  -F "prompt=A cinematic shot of a paper airplane crossing a desk"
يتضمن الرد معرّف المهمة والحالة:
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

الاستعلام عن الحالة

يفحص الطلب التالي حالة مهمة الفيديو:
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
يتغير الرد مع تقدم المهمة. يمكن أن تتضمن الردود المكتملة video_url عندما يوفّر model adapter عنوان URL للنتيجة؛ وإلا فاستخدم حقول النتيجة الخاصة بـ model أو مسار المحتوى /v1/videos/{id}/content عندما يدعم ذلك model التنزيلات الممرّرة عبر الوكيل.
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

استلام webhook

لا يعرّف CometAPI حمولة callback موحّدة واحدة لكل model فيديو. تعامل مع callbacks على أنها أحداث تمرير مباشر خاصة بالمزوّد، وخزّن النص الخام للطلب، وطابق الحالة النهائية باستخدام polling. يعالج معالج Express التالي callback للفيديو ويخزّن الحدث:
import express from "express";

const app = express();
app.use(express.json({ limit: "2mb" }));

app.post("/cometapi/video-webhook", async (request, response) => {
  const event = request.body;

  console.log("Task ID:", event.task_id || event.id);
  console.log("Status:", event.status);

  response.status(200).json({ received: true });
});

app.listen(3000);
تتضمن حمولة callback عادةً هوية المهمة وحقول الحالة، لكن البنية الدقيقة تعتمد على model أو المزوّد المحدد:
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

الأخطاء الشائعة

الخطأالإصلاح
فقدان callbackاستخدم polling عبر معرّف المهمة حتى يخزّن تطبيقك حالة نهائية.
callback مكرراجعل معالجة callback idempotent باستخدام معرّف المهمة.
رفض callbackأرجع استجابة 2xx بسرعة، ثم عالج المهمة في الخلفية.
عدم تطابق حمولة خاصة بالمزوّدخزّن حمولة callback الخام وقم بتوحيدها داخل تطبيقك.
عدم وجود video_urlتعامل مع video_url على أنه اختياري واستخدم polling بالإضافة إلى حقول النتيجة الخاصة بـ model أو /v1/videos/{id}/content عند توفره.

روابط ذات صلة

Last modified on May 28, 2026