WeChat-Channels-V2-API
获取视频号直播回放列表/Get WeChat Channels Live History
Changed on[中文]
用途:
- 获取创作者的直播回放列表。回放本身就是视频对象,每条带媒体地址 media(含 url / url_token / decode_key),可直接下载解密。
- 支持翻页获取更多回放。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的 id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- username: 视频号 finder username(v2_…@finder 格式)。示例(有直播回放的号)v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(虎嗅)。
- last_buffer: 可选,翻页游标(base64),首页留空;当响应 continue_flag 为真时,传上一页响应的 last_buffer 取下一页。
- flag: 可选,拉取标志,默认 12。
- raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。
返回:
- 直播回放列表及翻页游标
响应结构与 JSON Path:
raw=false(精简,snake_case,推荐做媒体下载):
- $.data.username
- $.data.count —— 本页条数;$.data.total_count —— 回放总数(无回放时为 0)
- $.data.lives[] —— 回放数组,每条是一个视频对象(结构同 fetch_collection_videos 的 video),逐个(N 为下标):
- $.data.lives[N].id —— 回放作品 objectId
- $.data.lives[N].username / .nickname / .title / .create_time
- $.data.lives[N].like_count / .fav_count / .forward_count / .comment_count 等计数
- $.data.lives[N].media —— 媒体对象(单个),下载 + 解密:
- $.data.lives[N].media.url —— 视频 CDN 链接(不带 Token)
- $.data.lives[N].media.url_token —— CDN 链接 Token(防盗链)
- $.data.lives[N].media.full_url —— 已拼好的完整 CDN URL(= url + url_token,可直接下载)
- $.data.lives[N].media.decode_key —— 视频解密密钥(每次请求都不同)
- $.data.continue_flag —— 是否有下一页(1=有)
- $.data.last_buffer —— 翻页游标(传回本接口取下一页)
raw=true(完整原始响应,camelCase):
- $.data.totalCount → total_count
- $.data.object[] → lives[](完整视频对象),逐个媒体在 $.data.object[N].objectDesc.media[0]: .url → url、.urlToken → url_token、.decodeKey → decode_key(full_url 为精简层拼接产物,raw 需自行 url + urlToken 拼接)
- $.data.continueFlag → continue_flag
- $.data.lastBuffer(别名 $.data.last_buffer)→ last_buffer
重要提示(视频下载与解密):
- 同 fetch_video_detail:用 full_url(已拼 Token)下载,MP4 不能播即加密,用同一次响应的 decode_key 解密。
- 某条回放的 live_id(直播间维度)可进一步喂 fetch_live_detail。
- 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
- 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption
[English]
Purpose:
- Get a creator's live replay list. Each replay is itself a video object with a media object (url / url_token / decode_key) ready for download and decryption.
- Supports pagination for more replays.
- Price: $0.01 per request
- ⏱️ Due to WeChat server latency, this endpoint responds slowly; please set your client request timeout to 30 seconds — a timeout that is too small may result in being billed without receiving the response.
- ⚠️ Large-integer ID precision: IDs such as id in the response are 64-bit big integers beyond JavaScript's safe-integer range (2^53-1). Always receive / pass such IDs as strings (parse JSON with json-bigint or read them as text), never through JS Number. Swagger UI rounds the trailing digits of huge integers in its docs view — this is expected and does not affect the actual data returned by the API.
Parameters:
- username: WeChat Channels finder username (v2_…@finder format). Example (an account with live replays): v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder (Huxiu).
- last_buffer: Optional pagination cursor (base64), leave empty for the first page; when continue_flag is truthy, pass the previous page's last_buffer.
- flag: Optional fetch flag, default 12.
- raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).
Return:
- Live replay list with pagination cursor
Response structure & JSON Path:
raw=false (simplified, snake_case, recommended for media download):
- $.data.username
- $.data.count — items on this page; $.data.total_count — total replays (0 when none)
- $.data.lives[] — replay array, each item is a video object (same shape as videos of fetch_collection_videos), per item (N is the index):
- $.data.lives[N].id — replay video objectId
- $.data.lives[N].username / .nickname / .title / .create_time
- $.data.lives[N].like_count / .fav_count / .forward_count / .comment_count etc.
- $.data.lives[N].media — media object (single), download + decrypt:
- $.data.lives[N].media.url — video CDN link (without Token)
- $.data.lives[N].media.url_token — Token of the CDN link (anti-hotlinking)
- $.data.lives[N].media.full_url — pre-concatenated full CDN URL (= url + url_token, ready to download)
- $.data.lives[N].media.decode_key — video decryption key (different on every request)
- $.data.continue_flag — has next page (1=yes)
- $.data.last_buffer — pagination cursor (pass back to this endpoint for the next page)
raw=true (full raw response, camelCase):
- $.data.totalCount → total_count
- $.data.object[] → lives[] (full video objects), media per item at $.data.object[N].objectDesc.media[0]: .url → url, .urlToken → url_token, .decodeKey → decode_key (full_url is produced by the simplified layer; for raw, concatenate url + urlToken yourself)
- $.data.continueFlag → continue_flag
- $.data.lastBuffer (alias $.data.last_buffer) → last_buffer
Important Note (video download & decryption):
- Same as fetch_video_detail: download via full_url (Token already appended); if the MP4 cannot be played it is encrypted, decrypt with the decode_key from the same response.
- The live_id of a replay (live-room dimension) can be fed into fetch_live_detail.
- Online decryption tool: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
- Self-deployable decryption API (one-click Docker deployment): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption
post/api/v1/wechat_channels/v2/fetch_live_history
Request
- Base URLhttps://api.tikhub.io (the document declares no server; this is the origin it was published from)
- AuthHTTP bearer
Request body
Example request
{
"username": "v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder"
}Response
Successful Response
Changes
- info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status
- info
- info
endpoint added
- info