> ## 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.

# واجهات برمجة تطبيقات توليد الفيديو

> اختر مسارات فيديو CometAPI لسير عمل Seedance وHappyHorse وSora 2 وVeo 3 وWan وxAI وVidu وOmni وKling وRunway.

استخدم مستندات نماذج الفيديو في CometAPI عبر اختيار سير عمل المزوّد الذي يطابق نوع المهمة لديك. تنشئ معظم نقاط نهاية الفيديو مهامًا غير متزامنة، لذا احفظ معرّف المهمة واستخدم polling لاسترجاع النتائج. أضف callbacks فقط عندما توثّق الصفحة الخاصة بالنموذج دعم callback.

## اختر واجهة برمجة تطبيقات فيديو

<CardGroup cols={2}>
  <Card title="إنشاء فيديو Seedance" icon="sparkles" href="/api/video/seedance/create">
    إنشاء مهام فيديو Seedance.
  </Card>

  <Card title="إنشاء فيديو HappyHorse" icon="sparkles" href="/api/video/happyhorse/create">
    إنشاء مهام HappyHorse من النص إلى الفيديو.
  </Card>

  <Card title="إنشاء فيديو Sora 2" icon="film" href="/api/video/sora-2/create">
    إنشاء مهام فيديو Sora 2.
  </Card>

  <Card title="استرجاع فيديو Sora 2" icon="refresh" href="/api/video/sora-2/retrieve">
    الاستعلام عن مهام فيديو Sora.
  </Card>

  <Card title="إنشاء فيديو Veo 3" icon="film" href="/api/video/veo3/create">
    إنشاء مهام فيديو Veo.
  </Card>

  <Card title="إنشاء فيديو Wan" icon="sparkles" href="/api/video/wan/create">
    إنشاء مهام Wan من النص إلى الفيديو.
  </Card>

  <Card title="إنشاء فيديو xAI" icon="film" href="/api/video/xai/video-generation">
    توليد مهام فيديو xAI.
  </Card>

  <Card title="إنشاء فيديو Vidu" icon="sparkles" href="/api/video/vidu/create">
    إنشاء مهام Vidu من النص إلى الفيديو.
  </Card>

  <Card title="إنشاء فيديو Omni (بيتا)" icon="sparkles" href="/api/video/omni/create">
    إنشاء مهام فيديو Omni التجريبية.
  </Card>

  <Card title="إنشاء مهمة Kling من النص إلى الفيديو" icon="film" href="/api/video/kling/text-to-video">
    توليد فيديوهات Kling من prompts نصية.
  </Card>

  <Card title="إنشاء مهمة Runway من الصورة إلى الفيديو" icon="film" href="/api/video/runway/official-format/runway-images-raw-video">
    توليد فيديوهات Runway من الصور.
  </Card>
</CardGroup>

## إنشاء مهمة فيديو والاستعلام عنها حتى الاكتمال

استخدم model ID يدعم الفيديو من [صفحة Models](/ar/overview/models) أو [دليل النماذج](https://www.cometapi.com/models/). تنشئ الأمثلة أدناه مهمة فيديو باستخدام `POST /v1/videos`، ثم تستعلم بشكل متكرر عن task ID المُعاد حتى تصل المهمة إلى حالة نهائية.

<Note>
  تستخدم هذه الأمثلة القيمة البديلة `your-video-model-id`. استبدلها بـ model ID فيديو متاح من [صفحة Models](/ar/overview/models) أو [دليل النماذج](https://www.cometapi.com/models/) قبل تشغيل الطلب.
</Note>

<Tip>
  افتح [Create a Seedance video](/api/video/seedance/create) و[Retrieve a Seedance video](/api/video/seedance/query) لاستخدام ساحات تجريب API ومخططات نقاط النهاية.
</Tip>

<CodeGroup>
  ```python Python theme={null}
  import os
  import time
  import requests

  headers = {"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]}

  create_response = requests.post(
      "https://api.cometapi.com/v1/videos",
      headers=headers,
      data={
          "model": "your-video-model-id",
          "prompt": "A calm camera move across a desk with a paper airplane",
      },
      timeout=30,
  )
  create_response.raise_for_status()
  task = create_response.json()
  task_id = task["id"]

  terminal_statuses = {"completed", "failed", "error"}

  while True:
      poll_response = requests.get(
          f"https://api.cometapi.com/v1/videos/{task_id}",
          headers=headers,
          timeout=30,
      )
      poll_response.raise_for_status()
      result = poll_response.json()
      print(result["status"], result.get("progress"))

      if result["status"] in terminal_statuses:
          print(result.get("video_url"))
          break

      time.sleep(10)
  ```

  ```javascript Node.js theme={null}
  const form = new FormData();
  form.append("model", "your-video-model-id");
  form.append("prompt", "A calm camera move across a desk with a paper airplane");

  const createResponse = await fetch("https://api.cometapi.com/v1/videos", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
    },
    body: form,
  });

  if (!createResponse.ok) {
    throw new Error(await createResponse.text());
  }

  const task = await createResponse.json();
  const terminalStatuses = new Set(["completed", "failed", "error"]);

  while (true) {
    const pollResponse = await fetch(
      `https://api.cometapi.com/v1/videos/${task.id}`,
      {
        headers: {
          Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
        },
      },
    );

    if (!pollResponse.ok) {
      throw new Error(await pollResponse.text());
    }

    const result = await pollResponse.json();
    console.log(result.status, result.progress);

    if (terminalStatuses.has(result.status)) {
      console.log(result.video_url);
      break;
    }

    await new Promise((resolve) => setTimeout(resolve, 10_000));
  }
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/videos \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -F "model=your-video-model-id" \
    -F "prompt=A calm camera move across a desk with a paper airplane"

  curl https://api.cometapi.com/v1/videos/task_example \
    -H "Authorization: Bearer $COMETAPI_KEY"
  ```
</CodeGroup>

## أمثلة على الاستجابة

قد تبدو استجابة الإنشاء الناجحة كما يلي. خزّن task ID قبل بدء الاستعلام:

```json theme={null}
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "your-video-model-id",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}
```

قد تبدو استجابة الاستعلام الناجحة كما يلي. يمكن أن تتضمن الاستجابات المكتملة `video_url`؛ وتستخدم بعض تنسيقات المزوّد حقول نتائج خاصة بكل model أو مسار محتوى الفيديو عندما يكون ذلك المسار موثقًا:

```json theme={null}
{
  "id": "task_example",
  "object": "video",
  "model": "your-video-model-id",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "https://example.com/generated-video.mp4"
}
```

## سجلات نماذج مثال

<Info>
  يوضح هذا المثال لاستجابة فهرس النماذج غلاف `/api/models` وشكل سجل نموذج فيديو واحد. وهو ليس قائمة نماذج كاملة.
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1767529753,
      "id": "your-video-model-id",
      "code": "your-video-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example video model",
      "model_type": "video",
      "features": [
        "text-to-video"
      ],
      "endpoints": "{\n  \"seedance\": {\n    \"path\": \"/v1/videos\",\n    \"method\": \"POST\"\n  }\n}",
      "pricing": {
        "currency": "USD / M Tokens",
        "input": null,
        "output": null,
        "per_request": null,
        "per_second": 0.024
      }
    }
  ]
}
```

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

<AccordionGroup>
  <Accordion title="معرّف المهمة مفقود">
    خزّن المعرّف من استجابة الإنشاء قبل الإرجاع من معالج المهمة الخاص بك.
  </Accordion>

  <Accordion title="الاستطلاع سريع جدًا">
    أضف تأخيرًا وتراجعًا تدريجيًا بين عمليات التحقق من الحالة.
  </Accordion>

  <Accordion title="المدة أو الحجم غير مدعوم">
    استخدم حقول المدة والدقة الموثقة لنقطة نهاية الفيديو المحددة.
  </Accordion>

  <Accordion title="video_url مفقود">
    تعامل مع `video_url` على أنه اختياري، وارجع إلى حقول النتائج الخاصة بالنموذج أو مسار content عند توفره.
  </Accordion>

  <Accordion title="لم يتم استلام Callback">
    استخدم الاستطلاع بوصفه المصدر الموثوق للحقيقة، وتحقق من أن عنوان URL الخاص بـ callback يقبل طلبات POST.
  </Accordion>
</AccordionGroup>

## رموز الأخطاء واستراتيجية إعادة المحاولة

<AccordionGroup>
  <Accordion title="400">
    لا تُعِد المحاولة حتى يتم تصحيح حقول prompt أو الملفات أو المدة أو الحجم.
  </Accordion>

  <Accordion title="401">
    لا تُعِد المحاولة حتى يكون مفتاح API موجودًا وصالحًا.
  </Accordion>

  <Accordion title="404">
    تحقق من معرّف المهمة، وBase URL، والمسار، وmodel ID قبل إعادة المحاولة.
  </Accordion>

  <Accordion title="413">
    قلّل حجم الرفع قبل إعادة المحاولة.
  </Accordion>

  <Accordion title="429">
    أعد المحاولة مع exponential backoff وقلّل التزامن في الإنشاء أو الاستطلاع.
  </Accordion>

  <Accordion title="500 or 503">
    أعد محاولة إنشاء المهمة مع backoff؛ واستمر في استطلاع المهام الحالية ما لم تصل المهمة إلى خطأ نهائي.
  </Accordion>
</AccordionGroup>

<Tip>
  للاطلاع على أنماط التنفيذ، راجع [رموز الأخطاء واستراتيجية إعادة المحاولة](/ar/guides/error-codes-and-retry-strategy)، و[حدود المعدل والتزامن](/ar/guides/rate-limits-and-concurrency)، و[Webhook والاستطلاع لتوليد الفيديو](/ar/guides/webhook-and-polling-for-video-generation).
</Tip>

## التسعير ودليل النماذج

<CardGroup cols={3}>
  <Card title="صفحة النماذج" icon="list" href="/overview/models">
    اقرأ كيف يعرض CometAPI معرّفات النماذج في الوثائق.
  </Card>

  <Card title="دليل النماذج" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    تصفح توفر النماذج وإمكاناتها.
  </Card>

  <Card title="التسعير" icon="tag" href="https://www.cometapi.com/pricing/">
    تحقق من التسعير قبل استدعاء نموذج.
  </Card>
</CardGroup>
