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

# إنشاء فيديو Omni

> أنشئ مهمة بيتا لتحويل النص إلى فيديو أو لتحرير فيديو مرجعي من Omni عبر CometAPI باستخدام POST /v1/videos، ثم استعلم عن المهمة دوريًا ونزّل ملف MP4 المكتمل.

استخدم نقطة نهاية بيتا هذه لإنشاء مهمة لتحويل النص إلى فيديو أو تحويل فيديو إلى فيديو. تُرجع API معرّف المهمة فورًا، لذا خزّن القيمة المُعادة `id` واستعلم عن المهمة دوريًا حتى تصل إلى حالة نهائية.

اختر نوع محتوى الطلب الذي يطابق وضع الإدخال. أرسل عناصر التحكّم الخاصة بتحويل النص إلى فيديو كحقول `multipart/form-data`. أرسل تحرير فيديو مرجعي كنص طلب `application/json`.

## اختر وضع إدخال

| الهدف                 | نوع المحتوى           | الحقول المطلوبة            | الحقول الاختيارية                       |
| --------------------- | --------------------- | -------------------------- | --------------------------------------- |
| تحويل النص إلى فيديو  | `multipart/form-data` | `model`, `prompt`          | `seconds`, `aspect_ratio`, `resolution` |
| تحويل فيديو إلى فيديو | `application/json`    | `model`, `prompt`, `video` | `seconds`, `aspect_ratio`, `resolution` |

تستخدم أمثلة تحويل النص إلى فيديو `model=omni-fast`. وتستخدم أمثلة تحويل فيديو إلى فيديو `model=omni-fast-v2v`. استخدم [إدراج النماذج المتاحة](/ar/guides/how-to-list-available-models) للتأكد من أن معرّف نموذج ظاهر لمفتاح API الخاص بك.

## حرّر فيديو مرجعيًا

لتحويل فيديو إلى فيديو، شفّر ملف MP4 محليًا باستخدام base64 وسبّق البايتات المشفّرة بـ `data:video/mp4;base64,`. أرسل عنوان URL الكامل للبيانات في الحقل `video`.

صِف التغييرات المطلوبة في `prompt`. واذكر أيضًا الأشخاص أو العناصر أو التكوين أو الحركة التي ينبغي أن تحافظ عليها النتيجة. يتضمن محدد عيّنات التعليمات البرمجية أمثلة Shell وPython وJavaScript تقرأ `reference.mp4` من دليل العمل.

يغطي شكل الطلب هذا عنوان URL مضمنًا لبيانات MP4. ولا يعرّف إدخال URL أو تنسيقات حاويات فيديو أخرى أو حدود حجم الملفات.

## عيّن المدة والنسبة والدقة

تم وضع علامة بيتا على Omni لأن استقرار التوليد قد يختلف حسب الإدخال والمسار المحدد. اجعل الطلب الأول صغيرًا، ثم افحص الفيديو المكتمل قبل الاعتماد على مدة عرض أو حجم إطار محدد.

| الإعداد        | القيم المدعومة                    | الافتراضي        | سلوك الحدود                                                                 |
| -------------- | --------------------------------- | ---------------- | --------------------------------------------------------------------------- |
| `seconds`      | ابدأ بـ `4`                       | يعتمد على المسار | تعامل مع هذا كمدة مطلوبة وتحقق من ملف MP4 المكتمل لأن مدة الإخراج قد تختلف. |
| `aspect_ratio` | `16:9`, `9:16`, `1:1`             | `16:9`           | `9:16` يمكنه عرض مخرجات عمودية. يمكن قبول `1:1` أثناء العرض الأفقي.         |
| `resolution`   | ابدأ بـ `720p`؛ يمكن قبول `1080p` | `720p`           | قد تُوحِّد مخرجات الإنتاج الحالية القيمة إلى `720p` حتى عند طلب `1080p`.    |

| الطلب                                   | الإطار المكتمل المرصود |
| --------------------------------------- | ---------------------- |
| `resolution=720p`, `aspect_ratio=16:9`  | `1280x720`             |
| `resolution=720p`, `aspect_ratio=9:16`  | `720x1280`             |
| `resolution=720p`, `aspect_ratio=1:1`   | `1280x720`             |
| `resolution=1080p`, `aspect_ratio=16:9` | `1280x720`             |

نظرًا لأن نقطة النهاية هذه بيتا، تعامل مع `aspect_ratio` و`resolution` كتفضيلات للتوليد وتحقق من ملف MP4 الذي تم تنزيله قبل الاعتماد على وحدات البكسل النهائية.

## تدفق المهمة

<Steps>
  <Step title="إنشاء المهمة">
    أرسل الطلب بنوع المحتوى الخاص بوضع الإدخال المحدد وخزّن القيمة المُعادة `id`.
  </Step>

  <Step title="استعلم عن المهمة دوريًا">
    استدعِ [استرداد فيديو Omni](./retrieve) إلى أن تصبح قيمة `status` هي `completed` أو `failed`.
  </Step>

  <Step title="تنزيل النتيجة">
    عندما تكون المهمة `completed`، استدعِ [استرداد محتوى فيديو Omni](./retrieve-content) لتنزيل ملف MP4.
  </Step>
</Steps>


## OpenAPI

````yaml api/openapi/video/omni/post-create.openapi.json POST /v1/videos
openapi: 3.1.0
info:
  title: Omni Video Create API
  version: 1.0.0
  description: >-
    Create an asynchronous beta Omni text-to-video or reference-video editing
    task through CometAPI. Save the returned id, poll GET /v1/videos/{task_id},
    and download the completed MP4 file.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /v1/videos:
    post:
      summary: Create an Omni video task
      description: >-
        Create a beta Omni text-to-video task with multipart/form-data or a
        reference-video editing task with application/json.
      operationId: omni_create_video
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OmniCreateRequest'
            examples:
              text_to_video:
                summary: Text-to-video
                value:
                  model: omni-fast
                  prompt: Ocean waves rolling onto a sandy beach at golden hour
                  seconds: '4'
                  aspect_ratio: '16:9'
                  resolution: 720p
          application/json:
            schema:
              $ref: '#/components/schemas/OmniVideoEditRequest'
            examples:
              video_to_video:
                summary: Video-to-video with an inline MP4
                value:
                  model: omni-fast-v2v
                  prompt: >-
                    Change the background to ocean blue. Preserve every
                    foreground object and its motion.
                  video: data:video/mp4;base64,<your-video-base64>
                  seconds: '4'
                  aspect_ratio: '16:9'
                  resolution: 720p
      responses:
        '200':
          description: >-
            Task accepted. Store the returned id and poll GET
            /v1/videos/{task_id}.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OmniVideoTask'
              example:
                id: task_example
                task_id: task_example
                object: video
                model: omni-fast
                status: queued
                progress: 0
                created_at: 1779938152
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: Shell
          label: Text-to-video
          source: |-
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F model=omni-fast \
              -F 'prompt=Ocean waves rolling onto a sandy beach at golden hour' \
              -F seconds=4 \
              -F aspect_ratio=16:9 \
              -F resolution=720p
        - lang: Python
          label: Text-to-video
          source: |
            import os
            import requests

            fields = [
                ("model", (None, "omni-fast")),
                ("prompt", (None, "Ocean waves rolling onto a sandy beach at golden hour")),
                ("seconds", (None, "4")),
                ("aspect_ratio", (None, "16:9")),
                ("resolution", (None, "720p")),
            ]

            response = requests.post(
                "https://api.cometapi.com/v1/videos",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                files=fields,
                timeout=120,
            )

            response.raise_for_status()
            print(response.json())
        - lang: JavaScript
          label: Text-to-video
          source: >
            const form = new FormData();

            form.append("model", "omni-fast");

            form.append("prompt", "Ocean waves rolling onto a sandy beach at
            golden hour");

            form.append("seconds", "4");

            form.append("aspect_ratio", "16:9");

            form.append("resolution", "720p");


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


            const result = await response.json();

            console.log(result);
        - lang: Shell
          label: Video-to-video
          source: |-
            VIDEO_B64=$(openssl base64 -A -in reference.mp4)
            EDIT_PROMPT="Change the background to ocean blue."
            EDIT_PROMPT="$EDIT_PROMPT Preserve every foreground object"
            EDIT_PROMPT="$EDIT_PROMPT and its motion."

            curl "https://api.cometapi.com/v1/videos" \
              --request POST \
              --header "Authorization: Bearer $COMETAPI_KEY" \
              --header "Content-Type: application/json" \
              --data-binary @- <<JSON
            {
              "model": "omni-fast-v2v",
              "prompt": "$EDIT_PROMPT",
              "video": "data:video/mp4;base64,$VIDEO_B64",
              "seconds": "4",
              "aspect_ratio": "16:9",
              "resolution": "720p"
            }
            JSON
        - lang: Python
          label: Video-to-video
          source: >
            import base64

            import os

            from pathlib import Path


            import requests


            video_data =
            base64.b64encode(Path("reference.mp4").read_bytes()).decode("ascii")


            response = requests.post(
                "https://api.cometapi.com/v1/videos",
                headers={
                    "Authorization": "Bearer " + os.environ["COMETAPI_KEY"],
                    "Content-Type": "application/json",
                },
                json={
                    "model": "omni-fast-v2v",
                    "prompt": "Change the background to ocean blue. Preserve every foreground object and its motion.",
                    "video": "data:video/mp4;base64," + video_data,
                    "seconds": "4",
                    "aspect_ratio": "16:9",
                    "resolution": "720p",
                },
                timeout=120,
            )


            response.raise_for_status()

            print(response.json())
        - lang: JavaScript
          label: Video-to-video
          source: >
            import { readFile } from "node:fs/promises";


            const videoData = (await
            readFile("reference.mp4")).toString("base64");


            const response = await fetch("https://api.cometapi.com/v1/videos", {
              method: "POST",
              headers: {
                Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
                "Content-Type": "application/json",
              },
              body: JSON.stringify({
                model: "omni-fast-v2v",
                prompt: "Change the background to ocean blue. Preserve every foreground object and its motion.",
                video: `data:video/mp4;base64,${videoData}`,
                seconds: "4",
                aspect_ratio: "16:9",
                resolution: "720p",
              }),
            });


            const result = await response.json();

            console.log(result);
components:
  schemas:
    OmniCreateRequest:
      type: object
      required:
        - model
        - prompt
      properties:
        model:
          type: string
          description: Omni model ID for this endpoint. Use omni-fast for text-to-video.
          example: omni-fast
        prompt:
          type: string
          description: Text prompt that describes the video to generate.
          example: Ocean waves rolling onto a sandy beach at golden hour
        seconds:
          type: string
          description: >-
            Requested clip duration in seconds. The completed video can use a
            different duration.
          example: '4'
        aspect_ratio:
          type: string
          description: >-
            Output aspect ratio preference. 16:9 and 9:16 are the most
            predictable; 1:1 can be accepted but may render as landscape.
          enum:
            - '16:9'
            - '9:16'
            - '1:1'
          default: '16:9'
          example: '16:9'
        resolution:
          type: string
          description: >-
            Output resolution preference. Start with 720p. A request for 1080p
            can render at 720p.
          example: 720p
      additionalProperties: false
    OmniVideoEditRequest:
      type: object
      required:
        - model
        - prompt
        - video
      properties:
        model:
          type: string
          description: >-
            Omni model ID for video-to-video. Confirm that the model ID is
            visible to your API key with GET /v1/models.
          example: omni-fast-v2v
        prompt:
          type: string
          description: >-
            Text instructions that describe the requested edit and the source
            content that the result should preserve.
          example: >-
            Change the background to ocean blue. Preserve every foreground
            object and its motion.
        video:
          type: string
          description: >-
            Reference MP4 as a data URL. Prefix the MP4 file bytes encoded as
            base64 with data:video/mp4;base64,. This field determines the source
            video to edit.
          example: data:video/mp4;base64,<your-video-base64>
        seconds:
          type: string
          description: >-
            Requested clip duration in seconds. Start with 4 for an inline MP4
            edit.
          example: '4'
        aspect_ratio:
          type: string
          description: >-
            Output aspect ratio preference. 16:9 and 9:16 are the most
            predictable; 1:1 can be accepted but may render as landscape.
          enum:
            - '16:9'
            - '9:16'
            - '1:1'
          default: '16:9'
          example: '16:9'
        resolution:
          type: string
          description: >-
            Output resolution preference. Start with 720p. 1080p can be accepted
            but current production output may normalize to 720p.
          example: 720p
      additionalProperties: false
    OmniVideoTask:
      type: object
      required:
        - id
        - object
        - model
        - status
        - progress
        - created_at
      properties:
        id:
          type: string
          description: Task ID. Use this value with retrieve and content endpoints.
          example: task_example
        task_id:
          type: string
          description: Compatibility alias for id when present.
          example: task_example
        object:
          type: string
          description: Object type. Video tasks return video.
          example: video
        model:
          type: string
          description: Model ID used for the task.
          example: omni-fast
        status:
          type: string
          description: >-
            Task lifecycle status. Poll until the value is completed, failed, or
            error.
          enum:
            - queued
            - in_progress
            - completed
            - failed
            - error
          example: queued
        progress:
          type: integer
          minimum: 0
          maximum: 100
          description: Task progress as a coarse percentage.
          example: 0
        created_at:
          type: integer
          description: Task creation time as a Unix timestamp in seconds.
          example: 1779938152
        completed_at:
          type: integer
          description: >-
            Task completion time as a Unix timestamp in seconds. This field
            appears on completed tasks.
          example: 1779938219
        video_url:
          type: string
          description: Temporary video delivery URL. This field appears on completed tasks.
          example: <temporary-video-url>
        error:
          type: object
          description: Failure details. This field appears when the task fails.
          properties:
            code:
              type: string
              description: Provider or CometAPI error code.
            message:
              type: string
              description: Human-readable failure reason.
            type:
              type: string
              description: Error category when returned.
          additionalProperties: true
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer authentication. Use your CometAPI API key.

````