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

# Lấy video Kling Omni

> Sử dụng CometAPI GET /kling/v1/videos/omni-video/{task_id} để lấy trạng thái tác vụ và kết quả video Kling Omni theo task_id.

Sử dụng endpoint này sau khi bạn tạo một tác vụ Kling Omni. Endpoint này trả về trạng thái tác vụ và các URL video cuối cùng khi tác vụ thành công.

## Trước tiên hãy kiểm tra các trường này

* `code`, `message`, và `request_id` để xác nhận phản hồi truy vấn
* `data.task_status` cho trạng thái tác vụ, chẳng hạn như `submitted`, `processing`, `succeed`, hoặc `failed`
* `data.task_result.videos[0].url` cho URL MP4 đã hoàn tất
* `data.task_result.videos[0].watermark_url` cho URL MP4 có watermark khi được yêu cầu

## Mẫu polling

<Steps>
  <Step title="Tạo tác vụ trước">
    Bắt đầu với [Tạo video Kling Omni](./omni-video) và lưu `task_id` được trả về.
  </Step>

  <Step title="Polling cho đến khi tác vụ ở trạng thái kết thúc">
    Tiếp tục truy vấn cho đến khi `data.task_status` đạt `succeed` hoặc `failed`.
  </Step>

  <Step title="Sử dụng URL MP4 được trả về">
    Khi tác vụ thành công, hãy tải xuống hoặc sao chép ngay URL video cuối cùng.
  </Step>
</Steps>


## OpenAPI

````yaml api/openapi/video/kling/get-omni-query.openapi.json GET /kling/v1/videos/omni-video/{task_id}
openapi: 3.1.0
info:
  title: Omni Query API
  version: 1.0.0
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /kling/v1/videos/omni-video/{task_id}:
    get:
      summary: Omni Query
      operationId: omni_query
      parameters:
        - name: task_id
          in: path
          required: true
          description: Task id returned by the Omni Video endpoint.
          schema:
            type: string
      responses:
        '200':
          description: Current Kling task state.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                  - request_id
                  - data
                properties:
                  code:
                    type: integer
                    description: Kling response code. 0 indicates the query was accepted.
                  message:
                    type: string
                    description: Kling response message.
                  request_id:
                    type: string
                    description: Identifier for this query request.
                  data:
                    type: object
                    required:
                      - task_id
                      - task_status
                      - task_info
                      - created_at
                      - updated_at
                    properties:
                      task_id:
                        type: string
                        description: Kling task id.
                      task_status:
                        type: string
                        description: Current task state.
                        enum:
                          - submitted
                          - processing
                          - succeed
                          - failed
                      task_status_msg:
                        type: string
                        description: Failure or status detail when returned.
                      task_info:
                        type: object
                        description: Additional task metadata. The object can be empty.
                        additionalProperties: true
                      task_result:
                        type: object
                        description: >-
                          Result metadata. Present as an empty object while
                          processing and populated on success.
                        properties:
                          videos:
                            type: array
                            description: Generated videos.
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: Generated video id.
                                url:
                                  type: string
                                  description: Generated video URL.
                                duration:
                                  type: string
                                  description: Video duration in seconds.
                                watermark_url:
                                  type: string
                                  description: >-
                                    Watermarked video URL when watermark output
                                    is requested.
                        additionalProperties: true
                      created_at:
                        type: integer
                        description: Task creation timestamp in milliseconds.
                      updated_at:
                        type: integer
                        description: Last task update timestamp in milliseconds.
                      final_unit_deduction:
                        type: string
                        description: >-
                          Final unit deduction returned after a successful task,
                          when available.
              examples:
                Processing:
                  summary: Task still rendering
                  value:
                    code: 0
                    message: SUCCEED
                    request_id: <request_id>
                    data:
                      task_id: <task_id>
                      task_status: processing
                      task_info: {}
                      task_result: {}
                      created_at: 1781080355827
                      updated_at: 1781080362336
                Succeed:
                  summary: Finished task with video result
                  value:
                    code: 0
                    message: SUCCEED
                    data:
                      task_id: <task_id>
                      task_status: succeed
                      task_info: {}
                      created_at: 1781074110938
                      updated_at: 1781074171088
                      task_result:
                        videos:
                          - id: <video_id>
                            url: https://your-video-host/generated.mp4
                            duration: '5.1'
                            watermark_url: https://your-video-host/generated-watermarked.mp4
                    request_id: <request_id>
      x-codeSamples:
        - lang: Shell
          label: Default
          source: >
            TASK_ID="<task_id>"


            curl "https://api.cometapi.com/kling/v1/videos/omni-video/$TASK_ID"
            \
              -H "Authorization: Bearer $COMETAPI_KEY"
        - lang: Shell
          label: Poll until done
          source: |
            TASK_ID="<task_id>"

            while true; do
              STATUS=$(curl -s "https://api.cometapi.com/kling/v1/videos/omni-video/$TASK_ID" \
                -H "Authorization: Bearer $COMETAPI_KEY" | python3 -c "import json,sys; print(json.load(sys.stdin)['data']['task_status'])")
              echo "status: $STATUS"
              case "$STATUS" in succeed | failed) break;; esac
              sleep 30
            done
        - lang: Python
          label: Default
          source: |
            import os
            import requests

            task_id = "<task_id>"

            response = requests.get(
                f"https://api.cometapi.com/kling/v1/videos/omni-video/{task_id}",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
            )

            print(response.json()["data"]["task_status"])
        - lang: Python
          label: Poll until done
          source: |
            import os
            import time
            import requests

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

            while True:
                data = requests.get(
                    f"https://api.cometapi.com/kling/v1/videos/omni-video/{task_id}", headers=headers
                ).json()["data"]
                print(data["task_status"])
                if data["task_status"] in ("succeed", "failed"):
                    break
                time.sleep(30)

            if data["task_status"] == "succeed":
                print(data["task_result"])
        - lang: JavaScript
          label: Default
          source: >
            const taskId = "<task_id>";


            const response = await
            fetch(`https://api.cometapi.com/kling/v1/videos/omni-video/${taskId}`,
            {
                headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
            });


            const result = await response.json();

            console.log(result.data.task_status);
        - lang: JavaScript
          label: Poll until done
          source: >
            const taskId = "<task_id>";

            const headers = { Authorization: `Bearer
            ${process.env.COMETAPI_KEY}` };


            let data;

            while (true) {
                data = (await (await fetch(`https://api.cometapi.com/kling/v1/videos/omni-video/${taskId}`, { headers })).json()).data;
                console.log(data.task_status);
                if (data.task_status === "succeed" || data.task_status === "failed") break;
                await new Promise((resolve) => setTimeout(resolve, 30000));
            }


            if (data.task_status === "succeed") console.log(data.task_result);
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````