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

# Tạo video Omni

> Tạo một tác vụ video Omni beta thông qua CometAPI với POST /v1/videos, sau đó thăm dò tác vụ và tải xuống tệp MP4 đã hoàn tất.

Sử dụng endpoint beta này để tạo một tác vụ video Omni. API trả về task ID ngay lập tức, vì vậy hãy lưu `id` được trả về và thăm dò tác vụ cho đến khi nó đạt trạng thái kết thúc.

<Badge color="orange" size="sm" shape="pill">Beta</Badge>

`POST /v1/videos` sử dụng `multipart/form-data`; truyền các tham số điều khiển dạng scalar dưới dạng form field.

## Chọn một chế độ đầu vào

| Mục tiêu      | Trường bắt buộc   | Trường tùy chọn                         |
| ------------- | ----------------- | --------------------------------------- |
| Text-to-video | `model`, `prompt` | `seconds`, `aspect_ratio`, `resolution` |

Sử dụng `model=omni-fast` cho trang này.

## Đặt thời lượng, tỷ lệ và độ phân giải

Omni được đánh dấu beta vì độ ổn định khi tạo có thể thay đổi tùy theo đầu vào và route được chọn. Hãy giữ yêu cầu đầu tiên ở mức nhỏ, sau đó kiểm tra video đã hoàn tất trước khi dựa vào một thời lượng render hoặc kích thước khung hình cụ thể.

| Cài đặt        | Giá trị được hỗ trợ                               | Mặc định | Hành vi ở giới hạn                                                                         |
| -------------- | ------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------ |
| `seconds`      | Bắt đầu với `4`                                   | `4`      | Hãy dùng các clip ngắn trước khi endpoint này còn ở beta.                                  |
| `aspect_ratio` | `16:9`, `9:16`, `1:1`                             | `16:9`   | `9:16` có thể render đầu ra dọc. `1:1` có thể được chấp nhận nhưng render dưới dạng ngang. |
| `resolution`   | Bắt đầu với `720p`; `1080p` có thể được chấp nhận | `720p`   | Đầu ra production hiện tại có thể được chuẩn hóa về `720p` ngay cả khi yêu cầu `1080p`.    |

| Yêu cầu                                 | Khung hình hoàn tất quan sát được |
| --------------------------------------- | --------------------------------- |
| `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`                        |

Vì endpoint này đang ở beta, hãy xem `aspect_ratio` và `resolution` là các tùy chọn ưu tiên khi tạo và xác minh tệp MP4 đã tải xuống trước khi phụ thuộc vào số pixel cuối cùng.

## Luồng tác vụ

<Steps>
  <Step title="Tạo tác vụ">
    Gửi yêu cầu form multipart và lưu `id` được trả về.
  </Step>

  <Step title="Thăm dò tác vụ">
    Gọi [Truy xuất một video Omni](./retrieve) cho đến khi `status` là `completed` hoặc `failed`.
  </Step>

  <Step title="Tải xuống kết quả">
    Khi tác vụ ở trạng thái `completed`, hãy gọi [Truy xuất nội dung video Omni](./retrieve-content) để tải xuống tệp 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 video 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. Send request controls as
        multipart/form-data fields.
      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
      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);
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.
          enum:
            - omni-fast
          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. Start with 4 while this endpoint
            is beta.
          default: '4'
          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.

````