---
title: "获取视频流信息/Get video streams info"
method: GET
path: "/api/v1/youtube/web_v2/get_video_streams"
tags: ["YouTube-Web-V2-API"]
---

# 获取视频流信息/Get video streams info

`GET /api/v1/youtube/web_v2/get_video_streams`

## Request

- Base URL: `https://api.tikhub.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tikhub.io/api/v1/youtube/web_v2/get_video_streams`
- Auth: HTTP bearer

# [中文]
### ⚠️ 重要说明:
- **此接口仅返回格式信息，URL 字段为 null**
- 沿用两步法时，需搭配 get_signed_stream_url 获取播放地址
- 如需自行控制下载代理和出口，**推荐 get_video_streams_v3**

### 代理要求:
- **调用本接口无需配置或传入代理**；本接口不接受 `proxy_url`，也不返回可下载的媒体 URL。
- 若后续需要稳定下载，推荐改用 get_video_streams_v3：提供固定出口或粘性会话的
  **美国住宅代理**，或固定公网出口的静态住宅/ISP 代理；数据中心代理不作为首选。
  美国并非强制地区，地区受限视频应选其允许访问的国家/地区，并在获取链接与下载时保持同一出口。

### 用途:
- 获取YouTube视频所有清晰度的格式信息
- 返回标准格式（音视频合并）和自适应格式（音视频分离）

### 参数:
- video_id: 视频ID（推荐）
- video_url: 完整的视频URL（可选，如果提供video_id则忽略）

### 返回数据包含:
- 视频基本信息（标题、作者、时长、观看次数等）
- formats: 标准格式流（包含音频和视频）
- adaptive_formats: 自适应格式流（仅视频或仅音频）
  - 每个格式包含: itag、mime_type、质量标签、分辨率、比特率等
  - ⚠️ **url 字段为 null**（YouTube 需要签名解密才能获取真实播放地址）
  - has_signature 为 true 表示需要使用 get_signed_stream_url 接口
- hls_manifest_url: HLS流地址（如果有）
- dash_manifest_url: DASH流地址（如果有）
- available_qualities: 所有可用的清晰度列表

### 使用流程（两步法）:
1. **第一步**: 调用此接口获取所有可用格式信息（URL 为 null）
2. **第二步**: 从返回的 formats 或 adaptive_formats 中选择需要的 itag
3. **第三步**: 调用 get_signed_stream_url 接口，传入 video_id 和 itag，获取真实播放地址

### 注意事项:
- YouTube 视频播放地址需要签名解密，原始 API 返回的 URL 字段为 null 是正常现象
- 若使用本接口的两步法，播放地址需通过 get_signed_stream_url 单独获取；
  需要自带代理下载时推荐 get_video_streams_v3
- 高清视频（720p+）通常需要分别下载音视频流并合并

### 价格:
- $0.001 USD/请求

# [English]
### ⚠️ Important Notice:
- **This endpoint ONLY returns format information, URL fields are null**
- For the two-step flow, use get_signed_stream_url to obtain a playback URL
- For downloads using your own proxy and exit, **prefer get_video_streams_v3**

### Proxy requirements:
- **No proxy is required from you to call this endpoint.** It has no `proxy_url`
  parameter and returns no downloadable media URL.
- For a download with a controlled exit, prefer get_video_streams_v3 with a
  **US residential proxy** offering a fixed exit or sticky session, or a static
  residential/ISP proxy with a fixed public exit. A datacenter proxy is not the
  first choice. The US is not mandatory: use a region where the video is available
  and keep the same exit for URL retrieval and download.

### Purpose:
- Get all quality format information for YouTube video
- Returns standard formats (merged audio/video) and adaptive formats (separate audio/video)

### Parameters:
- video_id: Video ID (recommended)
- video_url: Full video URL (optional, ignored if video_id is provided)

### Returns:
- Basic video info (title, author, duration, view count, etc.)
- formats: Standard format streams (audio and video combined)
- adaptive_formats: Adaptive format streams (video-only or audio-only)
  - Each format contains: itag, mime_type, quality label, resolution, bitrate, etc.
  - ⚠️ **url field is null** (YouTube requires signature decryption to get actual playback URL)
  - has_signature=true means need to use get_signed_stream_url endpoint
- hls_manifest_url: HLS manifest URL (if available)
- dash_manifest_url: DASH manifest URL (if available)
- available_qualities: List of all available quality levels

### Usage Flow (Two-Step Method):
1. **Step 1**: Call this endpoint to get all available format information (URLs are null)
2. **Step 2**: Select the desired itag from returned formats or adaptive_formats
3. **Step 3**: Call get_signed_stream_url endpoint with video_id and itag to get actual playback URL

### Notes:
- YouTube video playback URLs require signature decryption, null URL fields in raw API response is normal
- In this two-step flow, obtain playback URLs separately via get_signed_stream_url;
  prefer get_video_streams_v3 when downloading with your own proxy
- High-quality videos (720p+) usually require separate download and merge of audio/video streams

### Price:
- $0.001 USD/request

### [示例/Example]
#### Step 1 - 获取格式信息: video_id = "dQw4w9WgXcQ"
#### Step 2 - 获取播放地址: use get_signed_stream_url with selected itag

## Query parameters

- `video_id` string: 视频ID/Video ID
- `video_url` string: 视频URL/Video URL (如果提供video_id则忽略此参数/Ignored if video_id is provided)

## Response `200`

Successful Response

- ResponseModel
  - `code` integer: HTTP status code | HTTP状态码
  - `request_id` string, nullable: Unique request identifier | 唯一请求标识符
  - `message` string: Response message (EN-US) | 响应消息 (English)
  - `message_zh` string: Response message (ZH-CN) | 响应消息 (中文)
  - `support` string: Support message | 支持消息
  - `time` string: The time the response was generated | 生成响应的时间
  - `time_stamp` integer: The timestamp the response was generated | 生成响应的时间戳
  - `time_zone` string: The timezone of the response time | 响应时间的时区
  - `docs` string, nullable: Link to the API Swagger documentation for this endpoint | 此端点的 API Swagger 文档链接
  - `cache_message` string, nullable: Cache message (EN-US) | 缓存消息 (English)
  - `cache_message_zh` string, nullable: Cache message (ZH-CN) | 缓存消息 (中文)
  - `cache_url` string, nullable: The URL to access the cached result | 访问缓存结果的 URL
  - `router` string: The endpoint that generated this response | 生成此响应的端点
  - `params` unknown
  - `data` unknown

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-08** `96a122a5f220`: 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status
- **2026-09-01** `50f9ec6e1cd3`: 2 info
  - the `cache_message` response's property default value changed from `This request will be cached. You can access the cached result directly using the URL below, valid for 24 hours. Accessing the cache will not incur additional charges.` to `This response is cached and accessible via the URL below for 24 hours at no extra cost. The cache is for request tracing only — it doesn't affect the API's data freshness and won't be returned through the API again.` for the status `200`
  - the `cache_message_zh` response's property default value changed from `本次请求将被缓存，你可以使用下面的 URL 直接访问缓存结果，有效期为 24 小时，访问缓存不会产生额外费用。` to `本次响应已缓存，可通过下方 URL 直接查看，有效期 24 小时，访问缓存链接无额外费用。缓存仅用于请求溯源，不影响接口数据的时效性，也不会再次通过接口返回。` for the status `200`
- **2026-04-14** `ee5b7c9c88f5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tikhub/apis/tikhub-douyin-tiktok-xiaohongshu-lemon8-bilibili-kuaishou-pi/changes/api/v1/youtube/web_v2/get_video_streams/get.md)

---

[API](https://skmtc.dev/tikhub/apis/tikhub-douyin-tiktok-xiaohongshu-lemon8-bilibili-kuaishou-pi.md) - [All operations](https://skmtc.dev/tikhub/apis/tikhub-douyin-tiktok-xiaohongshu-lemon8-bilibili-kuaishou-pi/llms.txt) - [OpenAPI document](https://skmtc.dev/tikhub/apis/tikhub-douyin-tiktok-xiaohongshu-lemon8-bilibili-kuaishou-pi/revisions/86a3483c705a?raw)
