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

# Download Omni video content

> Download the completed MP4 file for a beta Omni video task through the content route.

Use this endpoint to download the MP4 file for a completed beta Omni video task. If the task is still running, the API returns a JSON error instead of video bytes.

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

## Before you download

* Create a task with [Create an Omni video](./create).
* Poll with [Retrieve an Omni video](./retrieve) until `status` is `completed`.
* Pass the same task ID to this endpoint.

## Store completed media

The response body is binary `video/mp4` content. Save the bytes to your own storage when your application needs durable access to the generated media.


## OpenAPI

````yaml api/openapi/video/omni/get-retrieve-content.openapi.json GET /v1/videos/{task_id}/content
openapi: 3.1.0
info:
  title: Omni Video Content API
  version: 1.0.0
  description: >-
    Download the completed MP4 file for a beta Omni video task. The endpoint
    returns binary video content on success and a JSON error if the task is not
    ready.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /v1/videos/{task_id}/content:
    get:
      summary: Download Omni video content
      description: >-
        Download the generated MP4 file after a beta Omni video task reaches
        completed status.
      operationId: omni_retrieve_video_content
      parameters:
        - name: task_id
          in: path
          required: true
          description: Task ID returned by POST /v1/videos.
          schema:
            type: string
          example: task_example
      responses:
        '200':
          description: Binary MP4 video content.
          content:
            video/mp4:
              schema:
                type: string
                format: binary
        '400':
          description: The task is not completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: 'Task is not completed yet. Status: IN_PROGRESS'
                  type: invalid_request_error
        '404':
          description: The task ID does not match a task for the authenticated user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: Task not found
                  type: invalid_request_error
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: Shell
          label: Download MP4
          source: |-
            curl https://api.cometapi.com/v1/videos/<TASK_ID>/content \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              --output output.mp4
        - lang: Python
          label: Download MP4
          source: |-
            import os
            from pathlib import Path

            import requests

            TASK_ID = "<TASK_ID>"
            response = requests.get(
                f"https://api.cometapi.com/v1/videos/{TASK_ID}/content",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                timeout=300,
            )
            response.raise_for_status()
            Path("output.mp4").write_bytes(response.content)
        - lang: JavaScript
          label: Download MP4
          source: |-
            import { writeFile } from "node:fs/promises";

            const TASK_ID = "<TASK_ID>";
            const response = await fetch(
              `https://api.cometapi.com/v1/videos/${TASK_ID}/content`,
              { headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` } },
            );

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

            const video = new Uint8Array(await response.arrayBuffer());
            await writeFile("output.mp4", video);
components:
  schemas:
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
          properties:
            message:
              type: string
              description: Human-readable error message.
            type:
              type: string
              description: Error category.
            code:
              type:
                - string
                - 'null'
              description: Short error code.
          additionalProperties: true
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer authentication. Use your CometAPI API key.

````