> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aiohub.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Download a video file

> Download a completed MP4 with an API key and optional Range requests.

Use this endpoint for Ark, OpenAI video, Vertex AI and Jimeng-compatible tasks. Gemini API tasks use the [Gemini download endpoint](/en/api/video-gemini-download).

Download only after the task succeeds. Prefer the URL returned by polling; for OpenAI video, use the creation response’s `id` as `task_id`.

## Download example

```bash theme={"system"}
curl --fail -L -o video.mp4 \
  "https://api.aiohub.org/v1/videos/<TASK_ID>/content" \
  -H "Authorization: Bearer <AIOHUB_API_KEY>"
```

Downloads require an API key belonging to the account that created the task. Files support `Range` requests and remain available for 72 hours after success. Expired files return 410; polling again cannot restore them. Save the result to your own storage before it expires.


## OpenAPI

````yaml openapi/relay.en.json GET /v1/videos/{task_id}/content
openapi: 3.0.1
info:
  title: AIOHub API
  description: AIOHub public API
  version: 1.0.0
servers:
  - url: https://api.aiohub.org
security:
  - BearerAuth: []
tags:
  - name: List models
  - name: OpenAI Chat
  - name: OpenAI Responses
  - name: Image generation
  - name: OpenAI Images
  - name: Video generation
  - name: Claude Messages
  - name: Gemini API
  - name: OpenAI Embeddings
  - name: Text completions
  - name: OpenAI Audio
  - name: Realtime API
paths:
  /v1/videos/{task_id}/content:
    get:
      tags:
        - Video generation
      summary: Get video content
      description: >
        Get the video file content for a completed video task.


        This endpoint proxies and returns the video file stream.


        Seedance video files stay downloadable for 72 hours after the task
        succeeds and honor `Range` requests. After that the endpoint returns
        410.
      operationId: getVideoContent
      parameters:
        - name: task_id
          in: path
          description: Video task ID
          required: true
          example: video-abc123
          schema:
            type: string
      responses:
        '200':
          description: Video content retrieved successfully
          content:
            video/mp4:
              schema:
                type: string
                format: binary
          headers: {}
        '404':
          description: Video not found or not completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers: {}
        '410':
          description: The 72 hour retention has passed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers: {}
      deprecated: false
      security:
        - BearerAuth: []
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: Error message
            type:
              type: string
              description: Error type
            param:
              type: string
              description: Related parameters
              nullable: true
            code:
              type: string
              description: Error code
              nullable: true
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key (sk-xxx)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.