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

# Download video

> Request format, responses, and capability boundaries.

`GET /v1/videos/{task_id}/content`

Download only completed tasks in the current user/project scope. Unfinished tasks normally return 400, missing tasks 404, and unavailable content may return 410.

Success returns video bytes, commonly MP4, not task JSON. Range behavior depends on the source: expect possible 206 or 416, or a full 200 response. Verify status and Content-Range before appending a resumed download.

Bearer authentication is still required. Upstream extensions such as `variant=thumbnail` are not guaranteed by this gateway content endpoint.

[Integration guide and runnable example](/en/guides/video-generation)

[简体中文](/zh/api-reference/videos-content)


## OpenAPI

````yaml openapi/relay.json GET /v1/videos/{task_id}/content
openapi: 3.0.3
info:
  title: API — Core inference API
  version: 0.5.0
  description: >-
    面向接入的精选规范，不是全部管理或供应商接口。 / Curated integration specification, not the entire
    management or provider API.
  license:
    name: AGPL-3.0-or-later
servers:
  - url: https://gateway.example.com
    description: >-
      Example only; replace with your gateway origin and optional path prefix,
      without /v1.
security:
  - BearerAuth: []
paths:
  /v1/videos/{task_id}/content:
    get:
      summary: 下载视频 / Download video
      description: >-
        常用接入字段；能力取决于模型、渠道与部署。 / Common integration fields; support depends on
        the model, channel, and deployment.
      operationId: GETVideosContent
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
          description: >-
            同一用户/项目范围内的网关公开 ID / Public gateway ID in the same user/project
            scope
        - name: Range
          in: header
          schema:
            type: string
          description: >-
            单段字节范围，支持情况由内容源决定 / Single byte range when supported by the content
            source
          example: bytes=0-1023
      responses:
        '200':
          description: 视频二进制；先检查 HTTP 状态 / Video bytes; check HTTP status first
          content:
            video/mp4:
              schema:
                type: string
                format: binary
            application/octet-stream:
              schema:
                type: string
                format: binary
        '206':
          description: 部分字节；依赖内容源支持 / Partial bytes when supported
          content:
            video/mp4:
              schema:
                type: string
                format: binary
        '400':
          description: 请求参数错误 / Invalid request
        '401':
          description: 身份校验失败 / Authentication failed
        '403':
          description: 访问被拒绝 / Access denied
        '404':
          description: 接口或资源不存在 / Endpoint or resource not found
        '410':
          description: 内容已不可用 / Content no longer available
        '416':
          description: 字节范围不可满足 / Unsatisfiable byte range
        '429':
          description: 请求被限流或受配额限制 / Rate or quota restriction
        '500':
          description: 网关或上游错误 / Gateway or upstream error
        '502':
          description: 内容代理或上游失败 / Content proxy or upstream failure
        '503':
          description: 服务暂不可用 / Service unavailable
        default:
          description: 其他网关或上游错误；格式可能不同 / Other gateway or upstream error; shape may vary
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 模型调用 API Key，不是控制台登录凭据 / Model API key, not console login credentials

````

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