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

# Get the highest quality play URL of the video

> - Get the highest quality (original upload quality) play URL of the video
- This interface will return the highest quality play URL, the original upload quality refers to the quality of the video when the user uploads it, usually the highest quality video has an uncompressed bitrate and the file header contains metadata.
- The highest quality video link cannot be obtained directly from the Douyin APP or web version, and must be obtained through this interface.
- This interface is very suitable for obtaining high-definition, watermark-free video links, suitable for scenarios that require high-quality videos, such as video editing, archiving, training models, etc.
- Generally, it can be played online, if not, you can try to download it using IDM or a browser and then play it.

<div className="inline-flex items-center gap-2 px-4 py-2 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg">
  <span className="text-base">🪙</span>
  <span className="text-sm font-medium text-yellow-900 dark:text-yellow-100"><span className="font-semibold">6 credit</span><span className="text-yellow-700 dark:text-yellow-300 ml-1">per request</span></span>
</div>

## Copy for AI

<div className="my-6 rounded-xl border border-gray-200 bg-gray-50 p-5 dark:border-gray-800 dark:bg-gray-900/40">
  <div className="min-w-0">
    <p className="text-base font-semibold text-gray-900 dark:text-gray-100">🤖 Why Code When AI Can Do It For You?</p>
    <p className="mt-1 text-sm text-gray-700 dark:text-gray-300">Stop writing code like it’s 1970! Let AI do the heavy lifting - click the sparkles to copy a perfectly formatted prompt for ChatGPT, Claude, or your favorite AI assistant.</p>
  </div>

  <div className="mt-4">
    <button
      type="button"
      className="inline-flex items-center gap-2 rounded-md border border-emerald-300 bg-emerald-50 px-3 py-2 text-sm font-medium text-emerald-800 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-100 dark:hover:bg-emerald-900/50"
      onClick={() => navigator.clipboard.writeText(`I need to call the following KeyAPI endpoint. Please generate a complete and directly runnable Python example based on the API information provided below.

## API Information

Endpoint: GET https://api.keyapi.ai/v1/douyin/app/fetch_video_high_quality_play_url
Summary: Get the highest quality play URL of the video

Required Headers:
- Authorization: Bearer <YOUR_API_KEY>

Parameters:
- aweme_id (Optional): Video id, prefer to use aweme_id, if not available, use share_url. Example: 7644456381004664090
- share_url (Optional): Optional, share link, if the video id is provided, this parameter can be omitted. Example: 7.64 D@u.sr :5pm 01/09 cNW:/ 第一次去非洲拍样片日记…# 科技 # 样片 # 拍摄 # 海信世界杯定制产品 # 海信电视UX2026款  https://v.douyin.com/imz-KQ9OXo8/ 复制此链接，打开Dou音搜索，直接观看视频！
- region (Optional): Optional, ISO country code (e.g. "CN" / "US" / "HK") used as the request exit region. Douyin returns CDN URLs based on the request IP. Pass region="CN" for users - located in mainland China to get China-region CDN URLs, which are significantly - faster than overseas CDNs. - If omitted, the request uses the service's own exit IP (typically overseas). Example: CN


## Code Requirements

- Use the Python \`requests\` library
- Provide a complete and directly runnable example
- Handle HTTP request errors, timeouts, and non-2xx responses
- Handle JSON parsing errors
- Prefer the Example values provided in the API information for sample parameters
- Keep the code simple and avoid unnecessary abstractions or complexity
`)}
    >
      ✨ Copy for AI
    </button>
  </div>
</div>


## OpenAPI

````yaml en/douyin-app.openapi.json GET /v1/douyin/app/fetch_video_high_quality_play_url
openapi: 3.0.1
info:
  title: Douyin Web API english documentation
  description: English reference documentation for the Douyin App API.
  version: 1.0.0
servers:
  - url: https://api.keyapi.ai
    description: Production
security:
  - JWT Bearer: []
tags: []
paths:
  /v1/douyin/app/fetch_video_high_quality_play_url:
    get:
      tags: []
      summary: Get the highest quality play URL of the video
      description: >-
        - Get the highest quality (original upload quality) play URL of the
        video

        - This interface will return the highest quality play URL, the original
        upload quality refers to the quality of the video when the user uploads
        it, usually the highest quality video has an uncompressed bitrate and
        the file header contains metadata.

        - The highest quality video link cannot be obtained directly from the
        Douyin APP or web version, and must be obtained through this interface.

        - This interface is very suitable for obtaining high-definition,
        watermark-free video links, suitable for scenarios that require
        high-quality videos, such as video editing, archiving, training models,
        etc.

        - Generally, it can be played online, if not, you can try to download it
        using IDM or a browser and then play it.
      parameters:
        - name: aweme_id
          in: query
          description: Video id, prefer to use aweme_id, if not available, use share_url.
          required: false
          example: '7644456381004664090'
          schema:
            type: string
            example: '7644456381004664090'
        - name: share_url
          in: query
          description: >-
            Optional, share link, if the video id is provided, this parameter
            can be omitted.
          required: false
          example: >-
            7.64 D@u.sr :5pm 01/09 cNW:/ 第一次去非洲拍样片日记…# 科技 # 样片 # 拍摄 # 海信世界杯定制产品
            # 海信电视UX2026款  https://v.douyin.com/imz-KQ9OXo8/
            复制此链接，打开Dou音搜索，直接观看视频！
          schema:
            type: string
            example: >-
              7.64 D@u.sr :5pm 01/09 cNW:/ 第一次去非洲拍样片日记…# 科技 # 样片 # 拍摄 #
              海信世界杯定制产品 # 海信电视UX2026款  https://v.douyin.com/imz-KQ9OXo8/
              复制此链接，打开Dou音搜索，直接观看视频！
        - name: region
          in: query
          description: >-
            Optional, ISO country code (e.g. "CN" / "US" / "HK") used as the
            request exit region.

            Douyin returns CDN URLs based on the request IP. Pass region="CN"
            for users

            - located in mainland China to get China-region CDN URLs, which are
            significantly

            - faster than overseas CDNs.

            - If omitted, the request uses the service's own exit IP (typically
            overseas).
          required: false
          example: CN
          schema:
            type: string
            default: CN
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                type: object
                properties: {}
              example:
                code: 0
                message: success
                data:
                  video_id: '7644456381004664090'
                  original_video_url: >-
                    https://v5-gzb-se-yz-coldy.douyinvod.com/8d773f96d190e3d8c474a2622f973a26/6a868448/video/tos/cn/tos-cn-v-0015c005/oYkAGfot2gR9DZDJAivEAiBDHAFFIe9Aqs8yq4/
                  file_size: '1970779884'
                  file_size_in_mb: 1879.48
                  content_type: video/mp4
                requestId: 2c59c78f-a0fc-4adc-8201-d801a05b8412
          headers: {}
        '400':
          $ref: '#/components/responses/400'
          description: Bad Request
        '401':
          $ref: '#/components/responses/401'
          description: Unauthorized
        '402':
          $ref: '#/components/responses/402'
          description: Payment Required
        '429':
          $ref: '#/components/responses/429'
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/500'
          description: Internal Server Error
      deprecated: false
      security:
        - JWT Bearer: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.keyapi.ai/v1/douyin/app/fetch_video_high_quality_play_url?aweme_id=7644456381004664090&share_url=7.64%20D%40u.sr%20%3A5pm%2001/09%20cNW%3A/%20%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%8E%BB%E9%9D%9E%E6%B4%B2%E6%8B%8D%E6%A0%B7%E7%89%87%E6%97%A5%E8%AE%B0%E2%80%A6%23%20%E7%A7%91%E6%8A%80%20%23%20%E6%A0%B7%E7%89%87%20%23%20%E6%8B%8D%E6%91%84%20%23%20%E6%B5%B7%E4%BF%A1%E4%B8%96%E7%95%8C%E6%9D%AF%E5%AE%9A%E5%88%B6%E4%BA%A7%E5%93%81%20%23%20%E6%B5%B7%E4%BF%A1%E7%94%B5%E8%A7%86UX2026%E6%AC%BE%20%20https%3A//v.douyin.com/imz-KQ9OXo8/%20%E5%A4%8D%E5%88%B6%E6%AD%A4%E9%93%BE%E6%8E%A5%EF%BC%8C%E6%89%93%E5%BC%80Dou%E9%9F%B3%E6%90%9C%E7%B4%A2%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%A7%82%E7%9C%8B%E8%A7%86%E9%A2%91%EF%BC%81&region=CN' \
              --header 'Authorization: Bearer <YOUR_API_KEY>'
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                'https://api.keyapi.ai/v1/douyin/app/fetch_video_high_quality_play_url',
                params={"aweme_id": "7644456381004664090", "share_url": "7.64 D@u.sr :5pm 01/09 cNW:/ 第一次去非洲拍样片日记…# 科技 # 样片 # 拍摄 # 海信世界杯定制产品 # 海信电视UX2026款  https://v.douyin.com/imz-KQ9OXo8/ 复制此链接，打开Dou音搜索，直接观看视频！", "region": "CN"},
                headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
            )
            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const params = new URLSearchParams({"aweme_id":
            "7644456381004664090", "share_url": "7.64 D@u.sr :5pm 01/09 cNW:/
            第一次去非洲拍样片日记…# 科技 # 样片 # 拍摄 # 海信世界杯定制产品 # 海信电视UX2026款 
            https://v.douyin.com/imz-KQ9OXo8/ 复制此链接，打开Dou音搜索，直接观看视频！", "region":
            "CN"});


            const response = await
            fetch(`https://api.keyapi.ai/v1/douyin/app/fetch_video_high_quality_play_url?${params}`,
            {
              method: 'GET',
              headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
            });

            const data = await response.json();

            console.log(data);
components:
  responses:
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            example:
              code: 400
              data: null
              message: 'Missing required parameter: handle'
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            example:
              code: 401
              data: null
              message: apiKey is null
    '402':
      description: Payment Required
      content:
        application/json:
          schema:
            type: object
            example:
              code: 402
              data: null
              message: apiKey quota is not enough
    '429':
      description: Too Many Requests
      content:
        application/json:
          schema:
            type: object
            example:
              code: 429
              data: null
              message: qps limit exceeded
    '500':
      description: Internal Server Error
      content:
        application/json:
          schema:
            type: object
            example:
              code: 500
              data: null
              message: Internal server error
  securitySchemes:
    JWT Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |-
        API key for authentication. Format: `sk_live_xxxxxxxxxxxxx`
        Get your API key from the [Dashboard](http://keyapi.ai/app/dashboard).

````