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

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

`GET /api/v1/youtube/web_v2/get_video_streams_v2`

## 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_v2`
- Auth: HTTP bearer

# [中文]
### ✅ 特性:
- **自动返回所有格式的已解密播放地址**
- 无需额外调用 get_signed_stream_url 接口
- 一次性获取所有清晰度的可用链接

### 代理要求:
- **调用本接口无需配置或传入代理**；本接口不接受 `proxy_url`，也不能指定链接的公网出口。
- 返回 URL 不代表用户可从任意网络下载；若下载端的公网出口与链接绑定的出口不同，
  可能收到 403。需要自行控制代理并稳定下载时，**推荐 get_video_streams_v3**。
- V3 首选固定出口或粘性会话的**美国住宅代理**，也可用固定公网出口的静态住宅/ISP 代理；
  数据中心代理不作为首选。美国并非强制地区：地区受限视频应选允许访问的国家/地区，
  并在获取链接与下载时保持同一实际公网出口。

### 用途:
- 获取YouTube视频所有清晰度的格式信息和播放地址
- 返回标准格式（音视频合并）和自适应格式（音视频分离）
- 适合需要展示所有清晰度选项的场景

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

### 返回数据包含:
- 视频基本信息（标题、作者、时长、观看次数等）
- formats: 标准格式流（包含音频和视频）
- adaptive_formats: 自适应格式流（仅视频或仅音频）
  - 每个格式包含: itag、mime_type、质量标签、分辨率、比特率等
  - `url` 字段包含已解密的播放地址，但不保证从不同公网出口可下载
  - has_signature 为 false 表示 URL 已解密，不代表下载出口不受限制
- hls_manifest_url: HLS流地址（如果有）
- dash_manifest_url: DASH流地址（如果有）
- available_qualities: 所有可用的清晰度列表
- expires_in_seconds: URL 过期时间（约 6 小时 = 21600 秒）

### 与 get_video_streams 的区别:
- **get_video_streams**: URL 为 null，需要搭配 get_signed_stream_url 使用（两步法）
- **get_video_streams_v2 (本接口)**: 自动返回所有已解密的 URL（一步到位）

### 注意事项:
- 播放地址有时效性（约6小时），建议获取后尽快使用
- 高清视频（720p+）通常需要分别下载音视频流并合并
- 响应时间较长（约10秒），因为需要为所有格式解密 URL

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

# [English]
### ✅ Features:
- **Automatically returns decrypted playback URLs for all formats**
- No need to call get_signed_stream_url endpoint separately
- Get all quality URLs in one request

### Proxy requirements:
- **You do not need to configure or provide a proxy to call this endpoint.** It
  does not accept `proxy_url` or let you choose the public exit for its URLs.
- A returned URL is not guaranteed to download from any network; a downloader
  using a different public exit may receive 403. **Prefer get_video_streams_v3**
  when you need to control the proxy used for downloading.
- For V3, prefer a **US residential proxy** with a fixed exit or sticky session,
  or a static residential/ISP proxy with a fixed public exit. Datacenter proxies
  are not the first choice. The US is not mandatory: choose a region where the
  video is available and keep the same actual exit for retrieval and download.

### Purpose:
- Get all quality format information and playback URLs for YouTube video
- Returns standard formats (merged audio/video) and adaptive formats (separate audio/video)
- Suitable for scenarios that need to display all quality options

### 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` contains a decrypted playback URL, but download from a different exit is not guaranteed
  - has_signature=false means the URL is decrypted, not that its download exit is unrestricted
- hls_manifest_url: HLS manifest URL (if available)
- dash_manifest_url: DASH manifest URL (if available)
- available_qualities: List of all available quality levels
- expires_in_seconds: URL expiration time (about 6 hours = 21600 seconds)

### Difference from get_video_streams:
- **get_video_streams**: URLs are null, need to use get_signed_stream_url (two-step method)
- **get_video_streams_v2 (this endpoint)**: Automatically returns all decrypted URLs (one-step solution)

### Notes:
- Playback URLs expire after ~6 hours, use them promptly
- High-quality videos (720p+) usually require separate download and merge of audio/video streams
- Longer response time (~10 seconds) as it needs to decrypt URLs for all formats

### Price:
- $0.003 USD/request

### [示例/Example]
#### 获取所有格式和URL: video_id = "dQw4w9WgXcQ"

## 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_v2/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)
