接口列表概览
覆盖微信公众号(WeChat Media Platform)与微信视频号(Channels)的数据检索与详情提取。调用成功每次扣除 0.10 Credits。获取视频号账号信息/Get WeChat Channels Account Info
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_channel_info
[中文]
用途:
- 获取指定视频号账号的「更多信息」:基础信息分区(IP 归属地 / 资料所在地 / 视频号 ID=sph 公开号)+ 认证信息分区(服务单位 / 主体类型 / 互联网新闻信息服务许可证编号 / 服务类别 / 认证时间)。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- username: 视频号 finder username(
v2_…@finder格式),示例v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。- 怎么拿到它:
fetch_video_detail、fetch_user_videos响应里每个视频对象的username字段(最常用)fetch_channel_id_to_username:把视频号 ID(sph…短号,如sphi9BjV8GK0Zsl)转成 username
- 怎么拿到它:
- raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 视频号账号的基础信息与认证信息
响应结构与 JSON Path:
raw=false(精简):
- 账号 username:
$.data.finder_username - 视频号 ID(sph 短号):
$.data.channel_id - 分区列表(原样保留分区结构):
$.data.sections[N].title、$.data.sections[N].items[M].title/.content - 扁平化后的「标题→内容」字典(最常用):
$.data.info,例如$.data.info['视频号ID']、$.data.info['IP归属地']、$.data.info['服务单位']、$.data.info['主体类型']、$.data.info['互联网新闻信息服务许可证编号']、$.data.info['服务类别']、$.data.info['认证时间']
raw=true(原始):
- 状态码:
$.data.baseResponse.ret(0=成功) - 分区数组(camelCase):
$.data.sections[N].title、$.data.sections[N].items[M].title/.content/.type/.jumpInfo - 对应关系: raw=false 的
info/channel_id对应 raw=true 的sections[].items[](按 title 扁平化、并剥离富文本图片标记);raw=true 不含info扁平字典与channel_id,需自行从 sections 提取。
[English]
Purpose:
- Get the “More Info” of a WeChat Channels account: basic info section (IP location / profile location / Channel ID = public sph ID) + verification section (service unit / entity type / internet news service license number / service category / verification time).
- 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.
Parameters:
- username: WeChat Channels finder username (
v2_…@finderformat), e.g.v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(People’s Daily).- How to get it:
- The
usernamefield of each video object infetch_video_detail/fetch_user_videosresponses (most common) fetch_channel_id_to_username: convert a Channel ID (sph…short ID, e.g.sphi9BjV8GK0Zsl) into a finder username
- The
- How to get it:
- raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Basic info and verification info of the WeChat Channels account
Response structure & JSON Path:
raw=false (simplified):
- Account username:
$.data.finder_username - Channel ID (sph short ID):
$.data.channel_id - Section list (original section structure preserved):
$.data.sections[N].title,$.data.sections[N].items[M].title/.content - Flattened “title→content” dict (most useful):
$.data.info, e.g.$.data.info['视频号ID'],$.data.info['IP归属地'],$.data.info['服务单位'],$.data.info['主体类型'],$.data.info['互联网新闻信息服务许可证编号'],$.data.info['服务类别'],$.data.info['认证时间']
raw=true (raw):
- Status code:
$.data.baseResponse.ret(0=success) - Section array (camelCase):
$.data.sections[N].title,$.data.sections[N].items[M].title/.content/.type/.jumpInfo - Mapping:
info/channel_idof raw=false correspond tosections[].items[]of raw=true (flattened by title with rich-text image markers stripped); raw=true does not contain the flattenedinfodict orchannel_id, extract them from sections yourself.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
视频号ID转finder username/Convert Channel ID to Finder Username
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_channel_id_to_username
[中文]
用途:
- 把对外可见的视频号 ID(
sph…短号)解析成 finder username(v2_…@finder)。 - 拿到 username 后即可调用
fetch_user_videos、fetch_channel_info、fetch_user_profile等接口。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- channel_id: 视频号 ID(
sph…短号),示例sphi9BjV8GK0Zsl(人民日报)。要求为sph开头的短号。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 解析出的 finder username 及账号昵称、简介
响应结构与 JSON Path:
raw=false(精简):
- 入参回显:
$.data.channel_id - 解析出的 finder username(可直接喂下游接口):
$.data.username - 账号昵称(已剥离搜索高亮标记):
$.data.nickname - 账号简介:
$.data.desc(可能为 null) - 未命中时:
$.data.username为 null,且带$.data.error说明
raw=true(原始):
- 结果分组:
$.data.data[N](每组type+items[]/subBoxes[].items[]) - 账号项里的 finder username:
$.data.data[N].items[M].jumpInfo.userName或$.data.data[N].items[M].noticeParam.finderUsername - 标题 / 简介:
$.data.data[N].items[M].title/.desc - 其它:
$.data.query(回显查询)、$.data.continueFlag、$.data.offset - 对应关系: raw=false 的
username/nickname/desc即从 raw=true 的data[].items[](或subBoxes[].items[])中首个@finder账号项提取。
[English]
Purpose:
- Resolve a publicly visible Channel ID (
sph…short ID) into a finder username (v2_…@finder). - With the username you can then call
fetch_user_videos,fetch_channel_info,fetch_user_profile, etc. - 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.
Parameters:
- channel_id: Channel ID (
sph…short ID), e.g.sphi9BjV8GK0Zsl(People’s Daily). Must start withsph. - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Resolved finder username plus account nickname and description
Response structure & JSON Path:
raw=false (simplified):
- Input echo:
$.data.channel_id - Resolved finder username (feed directly into downstream endpoints):
$.data.username - Account nickname (search highlight markers stripped):
$.data.nickname - Account description:
$.data.desc(may be null) - On miss:
$.data.usernameis null with an explanation at$.data.error
raw=true (raw):
- Result groups:
$.data.data[N](each group hastype+items[]/subBoxes[].items[]) - Finder username inside account items:
$.data.data[N].items[M].jumpInfo.userNameor$.data.data[N].items[M].noticeParam.finderUsername - Title / description:
$.data.data[N].items[M].title/.desc - Others:
$.data.query(query echo),$.data.continueFlag,$.data.offset - Mapping:
username/nickname/descof raw=false are extracted from the first@finderaccount item indata[].items[](orsubBoxes[].items[]) of raw=true.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号用户作品列表/Get WeChat Channels User Videos
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_user_videos
[中文]
用途:
- 获取指定视频号账号主页的作品列表。
- 每个视频带媒体地址
media(含url/url_token/full_url/decode_key),可直接下载并解密。 - 支持翻页获取更多作品。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
id/object_nonce_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- username: 视频号 finder username(
v2_…@finder格式),示例v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。来源见fetch_channel_info/fetch_video_detail/fetch_channel_id_to_username文档。 - last_buffer: 可选,翻页游标(base64)。首页留空;当响应
up_continue为真时,传上一页响应的last_buffer取下一页。(base64 含+//=等字符,故走 body 而非 query。) - raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。
返回:
- 用户作品列表及翻页游标
响应结构与 JSON Path:
raw=false(精简,推荐):
- 顶层:
$.data.username/$.data.nickname/$.data.count(本页视频数)/$.data.up_continue(是否有下一页)/$.data.last_buffer(翻页游标) - 每个视频
$.data.videos[N](N 为下标):id(作品 objectId,喂fetch_video_detail/fetch_video_comments):$.data.videos[N].idobject_nonce_id:$.data.videos[N].object_nonce_idusername/nickname/title:$.data.videos[N].username等- 互动计数:
$.data.videos[N].read_count/.like_count/.fav_count/.forward_count/.comment_count - 发布时间:
$.data.videos[N].create_time - 位置:
$.data.videos[N].location
raw=true(原始):
- 状态码:
$.data.baseResponse.ret - 视频数组(注意是
object单数,camelCase):$.data.object[N] - 翻页:
$.data.upContinueFlag、$.data.lastBuffer(另附别名$.data.last_buffer) - 账号资料:
$.data.contact(昵称/签名/认证authInfo等)、$.data.finderUserInfo - 对应关系: raw=false 的
videos[]对应 raw=true 的object[];nickname取自finderUserInfo/contact.nickname。
重要提示(视频下载与解密):
- 直接访问响应里的
url可能打不开视频页面 —— 微信视频号做了防盗链。把url和url_token拼成完整 URL 再用任意 HTTP 客户端下载(能打开 = HTTP 200,不代表能播放,文件是加密的)。 - ⚠️ 视频文件加密说明: 下载的 MP4 若无法播放即为加密文件。请使用接口返回的
decode_key字段和加密视频文件进行解密。 - ⚠️ 重要: 微信每次请求都返回新的加密链接和
decode_key(即使同一视频)。务必保证decode_key与下载的加密文件来自同一次 API 响应,否则解密失败。 - JSON Path(逐个视频取 —— N 为下标):
raw=false(推荐做媒体下载)——$.data.videos[N].media是单个对象:- 视频 CDN 链接(不带 Token):
$.data.videos[N].media.url - 视频 CDN 链接的 Token:
$.data.videos[N].media.url_token - 拼接好的完整 CDN URL(= url + url_token,可直接用):
$.data.videos[N].media.full_url - 视频解密密钥(每次请求都不一样):
$.data.videos[N].media.decode_key
- 视频 CDN 链接(不带 Token):
raw=true—— media 嵌在$.data.object[N].objectDesc.media[0](camelCase:url/urlToken/decodeKey,完整 URL =url+urlToken)。做媒体下载建议直接用raw=false,路径更干净。
- 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
- 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption
[English]
Purpose:
- Get the video list from a WeChat Channels account’s homepage.
- Each video carries a
mediaobject (url/url_token/full_url/decode_key) ready for download and decryption. - Supports pagination for more videos.
- 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/object_nonce_idin 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 JSNumber. 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_…@finderformat), e.g.v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(People’s Daily). Seefetch_channel_info/fetch_video_detail/fetch_channel_id_to_usernamedocs for how to obtain it. - last_buffer: Optional pagination cursor (base64). Leave empty for the first page; when
up_continuein the response is truthy, pass the previous page’slast_bufferto get the next page. (base64 contains+//=characters, hence body instead of query.) - raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).
Return:
- User video list with pagination cursor
Response structure & JSON Path:
raw=false (simplified, recommended):
- Top level:
$.data.username/$.data.nickname/$.data.count(videos on this page) /$.data.up_continue(has next page) /$.data.last_buffer(pagination cursor) - Each video
$.data.videos[N](N is the index):id(video objectId, feed intofetch_video_detail/fetch_video_comments):$.data.videos[N].idobject_nonce_id:$.data.videos[N].object_nonce_idusername/nickname/title:$.data.videos[N].usernameetc.- Interaction counts:
$.data.videos[N].read_count/.like_count/.fav_count/.forward_count/.comment_count - Publish time:
$.data.videos[N].create_time - Location:
$.data.videos[N].location
raw=true (raw):
- Status code:
$.data.baseResponse.ret - Video array (note: singular
object, camelCase):$.data.object[N] - Pagination:
$.data.upContinueFlag,$.data.lastBuffer(alias$.data.last_bufferalso provided) - Account profile:
$.data.contact(nickname/signature/authInfoetc.),$.data.finderUserInfo - Mapping:
videos[]of raw=false corresponds toobject[]of raw=true;nicknamecomes fromfinderUserInfo/contact.nickname.
Important Note (video download & decryption):
- Accessing the
urlfield directly may fail to open the video page — WeChat Channels uses anti-hotlinking. Concatenateurlandurl_tokeninto a full URL and download via any HTTP client (opening = HTTP 200, does not mean playable, the file is encrypted). - ⚠️ Video Encryption Notice: If the downloaded MP4 cannot be played, it is encrypted. Use the
decode_keyfield from the response together with the encrypted file to decrypt it. - ⚠️ Important: WeChat returns a new encrypted link and
decode_keyon every request (even for the same video). Make sure thedecode_keyand the downloaded encrypted file come from the same API response, otherwise decryption will fail. - JSON Path (per video — N is the index):
raw=false(recommended for media download) —$.data.videos[N].mediais a single object:- Video CDN link (without Token):
$.data.videos[N].media.url - Token of the video CDN link:
$.data.videos[N].media.url_token - Pre-concatenated full CDN URL (= url + url_token, ready to use):
$.data.videos[N].media.full_url - Video decryption key (different on every request):
$.data.videos[N].media.decode_key
- Video CDN link (without Token):
raw=true— media is nested at$.data.object[N].objectDesc.media[0](camelCase:url/urlToken/decodeKey, full URL =url+urlToken). For media download, preferraw=falsefor cleaner paths.
- 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
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号作品详情/Get WeChat Channels Video Detail
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_video_detail
[中文]
用途:
- 获取视频号作品详情,返回作品完整详情(媒体地址
media+decode_key)。 - 支持三种入参,三选一、优先级 object_id > export_id > share_url。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- object_id: 最优先,可选。作品 objectId(纯数字),示例
14941130915890399732。可从fetch_user_videos/fetch_collection_videos的视频id获取。 - export_id: 其次,可选。搜索结果里的
exportId(须以export/开头)。搜索返回的视频项往往只有exportId、没有明文 object_id —— 此时直接传 export_id(会过期,需尽快用)。 - object_nonce_id: 可选。搜索结果里的
feedNonceId(纯数字),搭配上面两者提升命中率。 - share_url: 最后,可选。视频号分享短链(
https://weixin.qq.com/sph/…),示例https://weixin.qq.com/sph/AH3sCoIPhH。仅在 object_id 与 export_id 都为空时使用。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。
- 三者须至少传一个;
share_url需为视频号分享短链(https://weixin.qq.com/sph/…)。
返回:
- 作品完整详情(含媒体下载地址与解密密钥)
典型链路(从作品到账号 / 更多作品):
- 本接口
fetch_video_detail→ 响应含明文id(objectId)、username(v2_…@finder)、media(url/url_token/decode_key) - 拿到的
username再喂 →fetch_channel_info(账号资料 / 认证)、fetch_user_videos(该号更多作品)、fetch_user_profile(主页统计)、fetch_video_comments(本视频评论,用第 1 步的id)
响应结构与 JSON Path:
raw=false(精简,推荐):
data即单个视频对象:id(作品 objectId):$.data.idusername(v2_…@finder)/nickname/title:$.data.username等- 互动计数:
$.data.read_count/.like_count/.fav_count/.forward_count/.comment_count - 发布时间 / 类型 / 位置:
$.data.create_time/$.data.object_type/$.data.location - 媒体对象:
$.data.media(见下方下载/解密)
raw=true(原始):
- 状态码:
$.data.baseResponse.ret - 命中回执:
$.data.objectResponses[0].objectId/.exportId - 视频对象(注意是
objects复数,camelCase):$.data.objects[0] - 对应关系: raw=false 的扁平字段对应 raw=true 的
objects[0]。
重要提示(视频下载与解密):
- 直接访问响应返回的
url字段可能无法正确打开视频页面 —— 微信对视频号页面做了防盗链处理。把url和url_token拼成一个完整 URL 再在浏览器 / HTTP 客户端打开。(注:能打开 = HTTP 200,不代表视频能正常播放,因为视频文件是加密的。) - ⚠️ 视频文件加密说明: MP4 无法播放即为加密。请使用接口返回的
decode_key字段和加密视频文件进行解密。 - ⚠️ 重要: 微信接口每次请求都会返回新的加密文件链接和
decode_key,即使是同一个视频。请确保用于解密的decode_key与下载的加密视频文件来自同一次 API 响应,否则解密会失败。 - JSON Path(区分 raw):
raw=false(推荐做媒体下载)——$.data.media是单个对象:- 视频 CDN 链接(不带 Token):
$.data.media.url - 视频 CDN 链接的 Token:
$.data.media.url_token - 拼接好的完整 CDN URL(=
url+url_token,可直接用):$.data.media.full_url - 视频解密密钥(每次请求都不一样):
$.data.media.decode_key
- 视频 CDN 链接(不带 Token):
raw=true——$.data.objects[0].objectDesc.media[0]:- 视频 CDN 链接(不带 Token):
$.data.objects[0].objectDesc.media[0].url - Token:
$.data.objects[0].objectDesc.media[0].urlToken - 完整 URL =
url+urlToken(拼接) - 视频解密密钥:
$.data.objects[0].objectDesc.media[0].decodeKey
- 视频 CDN 链接(不带 Token):
- 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
- 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption
[English]
Purpose:
- Get the full detail of a WeChat Channels video (media address
media+decode_key). - Three input options, choose one, priority object_id > export_id > share_url.
- 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
idin 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 JSNumber. 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:
- object_id: Highest priority, optional. Video objectId (numeric), e.g.
14941130915890399732. Obtainable from the videoidoffetch_user_videos/fetch_collection_videos. - export_id: Second priority, optional.
exportIdfrom search results (must start withexport/). Search results often only carryexportIdwithout a plain object_id — pass export_id directly in that case (it expires, use it soon). - object_nonce_id: Optional.
feedNonceId(numeric) from search results, pairs with the above to improve hit rate. - share_url: Last, optional. Channels share URL (
https://weixin.qq.com/sph/…), e.g.https://weixin.qq.com/sph/AH3sCoIPhH. Used only when both object_id and export_id are empty. - raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).
- At least one of the three must be provided;
share_urlmust be a Channels share URL (https://weixin.qq.com/sph/…).
Return:
- Full video detail (including media download address and decryption key)
Typical chain (from a video to the account / more videos):
- This endpoint
fetch_video_detail→ response contains plainid(objectId),username(v2_…@finder),media(url/url_token/decode_key) - Feed the obtained
usernameinto →fetch_channel_info(account info / verification),fetch_user_videos(more videos of the account),fetch_user_profile(homepage stats),fetch_video_comments(comments of this video, usingidfrom step 1)
Response structure & JSON Path:
raw=false (simplified, recommended):
datais a single video object:id(video objectId):$.data.idusername(v2_…@finder) /nickname/title:$.data.usernameetc.- Interaction counts:
$.data.read_count/.like_count/.fav_count/.forward_count/.comment_count - Publish time / type / location:
$.data.create_time/$.data.object_type/$.data.location - Media object:
$.data.media(see download/decryption below)
raw=true (raw):
- Status code:
$.data.baseResponse.ret - Hit receipt:
$.data.objectResponses[0].objectId/.exportId - Video object (note: plural
objects, camelCase):$.data.objects[0] - Mapping: flat fields of raw=false correspond to
objects[0]of raw=true.
Important Note (video download & decryption):
- Accessing the
urlfield directly may fail to open the video page — WeChat applies anti-hotlinking to Channels pages. Concatenateurlandurl_tokeninto a complete URL, then open it in a browser / HTTP client. (Note: opening = HTTP 200, does not mean playable, the video file is encrypted.) - ⚠️ Video Encryption Notice: If the MP4 cannot be played, it is encrypted. Use the
decode_keyfield from the response together with the encrypted video file to decrypt it. - ⚠️ Important: The WeChat API returns a new encrypted file link and
decode_keyon every request, even for the same video. Make sure thedecode_keyused for decryption and the downloaded encrypted file come from the same API response, otherwise decryption will fail. - JSON Path (by raw):
raw=false(recommended for media download) —$.data.mediais a single object:- Video CDN link (without Token):
$.data.media.url - Token of the video CDN link:
$.data.media.url_token - Pre-concatenated full CDN URL (=
url+url_token, ready to use):$.data.media.full_url - Video decryption key (different on every request):
$.data.media.decode_key
- Video CDN link (without Token):
raw=true—$.data.objects[0].objectDesc.media[0]:- Video CDN link (without Token):
$.data.objects[0].objectDesc.media[0].url - Token:
$.data.objects[0].objectDesc.media[0].urlToken - Full URL =
url+urlToken(concatenate) - Video decryption key:
$.data.objects[0].objectDesc.media[0].decodeKey
- Video CDN link (without Token):
- 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
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号作品评论/Get WeChat Channels Video Comments
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_video_comments
[中文]
用途:
- 获取作品的一级评论(含 IP 属地 / 点赞数);传
comment_id则返回该评论下的二级回复。 - 支持翻页获取更多评论。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
comment_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- object_id: 作品 objectId(纯数字),示例
14941130915890399732。来自fetch_user_videos/fetch_video_detail的视频id。 - last_buffer: 可选,翻页游标(base64)。首页留空;当响应
down_continue为真时传上一页的last_buffer。 - comment_id: 可选。展开某条评论的二级回复时传该评论的
comment_id(纯数字);首页留空。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 评论列表及翻页游标
响应结构与 JSON Path:
raw=false(精简):
- 顶层:
$.data.object_id(回显)/$.data.comment_id(展开回复时回显,否则 null)/$.data.count(本页评论数)/$.data.down_continue(是否有下一页)/$.data.last_buffer(翻页游标) - 每条评论
$.data.comments[N]:- 评论 ID(展开其二级回复时回传):
$.data.comments[N].comment_id - 评论人:
$.data.comments[N].nickname/.username/.head_url - 正文:
$.data.comments[N].content - 点赞 / 回复数:
$.data.comments[N].like_count/.reply_count - 时间 / IP 属地:
$.data.comments[N].create_time/.ip_region
- 评论 ID(展开其二级回复时回传):
raw=true(原始):
- 状态码:
$.data.baseResponse.ret - 评论数组(camelCase):
$.data.commentInfo[N],关键字段commentId/nickname/username/content/likeCount/createtime/headUrl/ipRegionInfo.regionText - 翻页:
$.data.downContinueFlag、$.data.lastBuffer(另附别名$.data.last_buffer) - 全局计数:
$.data.monotonicData.commentCount.commentCount、$.data.countInfo(likeCount/favCount/forwardCount 等) - 对应关系: raw=false 的
comments[]对应 raw=true 的commentInfo[]。
[English]
Purpose:
- Get first-level comments of a video (with IP region / like count); pass
comment_idto get second-level replies under that comment. - Supports pagination for more comments.
- 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
comment_idin 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 JSNumber. 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:
- object_id: Video objectId (numeric), e.g.
14941130915890399732. From the videoidoffetch_user_videos/fetch_video_detail. - last_buffer: Optional pagination cursor (base64). Leave empty for the first page; when
down_continueis truthy, pass the previous page’slast_buffer. - comment_id: Optional. To expand the replies of a comment, pass its
comment_id(numeric); leave empty for the first-level page. - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Comment list with pagination cursor
Response structure & JSON Path:
raw=false (simplified):
- Top level:
$.data.object_id(echo) /$.data.comment_id(echo when expanding replies, otherwise null) /$.data.count(comments on this page) /$.data.down_continue(has next page) /$.data.last_buffer(pagination cursor) - Each comment
$.data.comments[N]:- Comment ID (pass it back to expand its replies):
$.data.comments[N].comment_id - Commenter:
$.data.comments[N].nickname/.username/.head_url - Content:
$.data.comments[N].content - Like / reply counts:
$.data.comments[N].like_count/.reply_count - Time / IP region:
$.data.comments[N].create_time/.ip_region
- Comment ID (pass it back to expand its replies):
raw=true (raw):
- Status code:
$.data.baseResponse.ret - Comment array (camelCase):
$.data.commentInfo[N], key fieldscommentId/nickname/username/content/likeCount/createtime/headUrl/ipRegionInfo.regionText - Pagination:
$.data.downContinueFlag,$.data.lastBuffer(alias$.data.last_bufferalso provided) - Global counts:
$.data.monotonicData.commentCount.commentCount,$.data.countInfo(likeCount/favCount/forwardCount etc.) - Mapping:
comments[]of raw=false corresponds tocommentInfo[]of raw=true.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
生成视频号作品分享链接/Generate WeChat Channels Video Share URL
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_video_share_url
[中文]
用途:
- 给定作品
object_id,返回一条可对外分享的weixin.qq.com/sph/…短链(与fetch_video_detail的share_url入参互为反向)。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- object_id: 作品 objectId(纯数字),示例
14941130915890399732。来自fetch_user_videos/fetch_video_detail的视频id。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 作品分享短链
响应结构与 JSON Path:
raw=false(精简):
- 入参回显:
$.data.object_id - 生成的分享短链(可直接喂
fetch_video_detail的share_url):$.data.share_url
raw=true(原始):
- 状态码:
$.data.baseResponse.ret - 分享短链:
$.data.feedH5Url - 列表形式(批量时逐项):
$.data.urlList[N].feedH5Url/$.data.urlList[N].objectId - 对应关系: raw=false 的
share_url取自 raw=true 的feedH5Url(或urlList[0].feedH5Url),object_id即入参回显。
[English]
Purpose:
- Given a video
object_id, return a shareableweixin.qq.com/sph/…short link (the inverse of theshare_urlinput offetch_video_detail). - 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.
Parameters:
- object_id: Video objectId (numeric), e.g.
14941130915890399732. From the videoidoffetch_user_videos/fetch_video_detail. - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Video share short link
Response structure & JSON Path:
raw=false (simplified):
- Input echo:
$.data.object_id - Generated share link (feed directly into
share_urloffetch_video_detail):$.data.share_url
raw=true (raw):
- Status code:
$.data.baseResponse.ret - Share link:
$.data.feedH5Url - List form (per item when batched):
$.data.urlList[N].feedH5Url/$.data.urlList[N].objectId - Mapping:
share_urlof raw=false comes fromfeedH5Url(orurlList[0].feedH5Url) of raw=true;object_idis the input echo.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号账号主页资料+统计/Get WeChat Channels User Profile & Stats
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_user_profile
[中文]
用途:
- 获取创作者的主页资料与互动统计。与
fetch_channel_info(认证主体 / 许可证)互补:本接口给昵称 / 签名 / 头像、粉丝 / 作品 / 获赞 / 收藏 / 转发数、直播时长、IP 属地、合集数、关联公众号等。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- username: 视频号 finder username(
v2_…@finder格式)。来源:fetch_video_detail、fetch_user_videos响应里视频对象的username;或fetch_channel_id_to_username把sph…短号转成 username。示例v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 账号主页资料与互动统计
响应结构与 JSON Path:
raw=false(精简,snake_case 拍平):
$.data.username—— finder username$.data.nickname/$.data.signature/$.data.head_url(头像)/$.data.region(IP 属地,如「北京」)$.data.fans_count—— 粉丝数。注意:部分账号(如人民日报)返回 0$.data.feeds_count—— 作品数(示例 10555)$.data.like_count/$.data.fav_count/$.data.forward_count—— 获赞 / 收藏 / 转发数(部分账号为 0)$.data.friend_follow_count—— 好友关注数$.data.live_duration_hours—— 累计直播时长(小时)$.data.original_flag—— 原创标记$.data.collection_count—— 合集数(示例 6;明细走fetch_user_collections)$.data.verify_desc—— 认证说明(可能为 null)$.data.linked_accounts[]—— 关联公众号[{nickname, type}](如{"nickname":"人民日报","type":"公众号"})
raw=true(完整原始响应,camelCase 嵌套):
$.data.contact.nickname/.signature/.headUrl→nickname/signature/head_url$.data.contact.username→username;$.data.contact.originalFlag→original_flag$.data.contact.authInfo(authProfession/authIconType…)—— 认证信息$.data.ipRegionInfo.regionText→region$.data.fansCount→fans_count(同样部分账号为 0);$.data.feedsCount→feeds_count$.data.feedsLikeCount/.feedsFavCount/.feedsForwardCount→like_count/fav_count/forward_count$.data.liveDurationHours→live_duration_hours;$.data.collectionListInfo.collectionCount→collection_count$.data.bizInfo.info[](bizNickname/serviceTypeName)→linked_accounts[]- 另含
$.data.object[](首屏作品列表)、$.data.anchorStatInfo(直播场次统计)、$.data.lastBuffer/$.data.continueFlag(首屏作品翻页用,本接口只取资料故一般不用)等几十个字段。
[English]
Purpose:
- Get a creator’s homepage profile and interaction stats. Complementary to
fetch_channel_info(verification entity / license): this endpoint provides nickname / signature / avatar, follower / video / like / favorite / forward counts, live duration, IP region, collection count, linked official accounts, etc. - 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.
Parameters:
- username: WeChat Channels finder username (
v2_…@finderformat). Source: theusernamefield of video objects infetch_video_detail/fetch_user_videosresponses; or convert asph…short ID viafetch_channel_id_to_username. E.g.v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(People’s Daily). - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Account homepage profile and interaction stats
Response structure & JSON Path:
raw=false (simplified, flattened snake_case):
$.data.username— finder username$.data.nickname/$.data.signature/$.data.head_url(avatar) /$.data.region(IP region, e.g. “北京”)$.data.fans_count— follower count. Note: some accounts (e.g. People’s Daily) return 0$.data.feeds_count— video count (e.g. 10555)$.data.like_count/$.data.fav_count/$.data.forward_count— like / favorite / forward counts (0 for some accounts)$.data.friend_follow_count— friend-follow count$.data.live_duration_hours— accumulated live streaming hours$.data.original_flag— original-content flag$.data.collection_count— collection count (e.g. 6; details viafetch_user_collections)$.data.verify_desc— verification description (may be null)$.data.linked_accounts[]— linked official accounts[{nickname, type}](e.g.{"nickname":"人民日报","type":"公众号"})
raw=true (full raw response, nested camelCase):
$.data.contact.nickname/.signature/.headUrl→nickname/signature/head_url$.data.contact.username→username;$.data.contact.originalFlag→original_flag$.data.contact.authInfo(authProfession/authIconType…) — verification info$.data.ipRegionInfo.regionText→region$.data.fansCount→fans_count(also 0 for some accounts);$.data.feedsCount→feeds_count$.data.feedsLikeCount/.feedsFavCount/.feedsForwardCount→like_count/fav_count/forward_count$.data.liveDurationHours→live_duration_hours;$.data.collectionListInfo.collectionCount→collection_count$.data.bizInfo.info[](bizNickname/serviceTypeName) →linked_accounts[]- Also contains dozens of raw fields like
$.data.object[](first-screen video list),$.data.anchorStatInfo(live session stats),$.data.lastBuffer/$.data.continueFlag(pagination of the first-screen videos; generally unused here since this endpoint is for profile data).
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号合集列表/Get WeChat Channels User Collections
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_user_collections
[中文]
用途:
- 获取创作者主页的「合集」列表。每个合集的
topic_id可传fetch_collection_videos取该合集内的视频。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
topic_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- username: 视频号 finder username(
v2_…@finder格式)。示例v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 合集列表
响应结构与 JSON Path:
raw=false(精简,snake_case):
$.data.username—— finder username$.data.count—— 合集总数(示例 6)$.data.collections[]—— 合集数组,逐个(N 为下标):$.data.collections[N].topic_id—— 合集 ID(纯数字,传fetch_collection_videos,示例14616794565351966924)$.data.collections[N].name—— 合集名(如「早安中国」)$.data.collections[N].desc—— 合集简介(可能为空串)$.data.collections[N].cover_url—— 合集封面$.data.collections[N].feed_count—— 合集内视频数$.data.collections[N].topic_type—— 合集类型(示例 16,与fetch_collection_videos的topic_type对应)
raw=true(完整原始响应,camelCase):
$.data.collectionCount→count$.data.collectionInfo[]→collections[],逐个:$.data.collectionInfo[N].collectionTopicId→topic_id(数字;另有collectionTopicIdStr字符串别名)$.data.collectionInfo[N].collectionName→name$.data.collectionInfo[N].collectionDesc→desc$.data.collectionInfo[N].coverImgUrl→cover_url$.data.collectionInfo[N].feedCount→feed_count$.data.collectionInfo[N].collectionTopicType→topic_type- 另含
lastUpdateTime/readCount/categoryId等原始字段
$.data.lastBuffer—— 合集列表翻页游标(通常为空,合集数少不需翻页)
[English]
Purpose:
- Get the “Collections” list on a creator’s homepage. Pass each collection’s
topic_idtofetch_collection_videosto get its videos. - 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
topic_idin 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 JSNumber. 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_…@finderformat). E.g.v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(People’s Daily). - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Collection list
Response structure & JSON Path:
raw=false (simplified, snake_case):
$.data.username— finder username$.data.count— total collections (e.g. 6)$.data.collections[]— collection array, per item (N is the index):$.data.collections[N].topic_id— collection ID (numeric, pass tofetch_collection_videos, e.g.14616794565351966924)$.data.collections[N].name— collection name (e.g. “早安中国”)$.data.collections[N].desc— collection description (may be empty string)$.data.collections[N].cover_url— collection cover$.data.collections[N].feed_count— number of videos in the collection$.data.collections[N].topic_type— collection type (e.g. 16, matchestopic_typeoffetch_collection_videos)
raw=true (full raw response, camelCase):
$.data.collectionCount→count$.data.collectionInfo[]→collections[], per item:$.data.collectionInfo[N].collectionTopicId→topic_id(number;collectionTopicIdStrprovides a string alias)$.data.collectionInfo[N].collectionName→name$.data.collectionInfo[N].collectionDesc→desc$.data.collectionInfo[N].coverImgUrl→cover_url$.data.collectionInfo[N].feedCount→feed_count$.data.collectionInfo[N].collectionTopicType→topic_type- Also raw fields like
lastUpdateTime/readCount/categoryId
$.data.lastBuffer— pagination cursor of the collection list (usually empty; few collections, no pagination needed)
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号合集内视频/Get WeChat Channels Collection Videos
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_collection_videos
[中文]
用途:
- 给定合集
topic_id(来自fetch_user_collections),返回该合集内的视频列表。 - 每个视频带媒体地址
media(含url/url_token/decode_key),可直接下载解密。 - 支持翻页获取更多视频。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
id/topic_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- topic_id: 合集 ID(纯数字,来自
fetch_user_collections的topic_id)。示例14616794565351966924(人民日报「早安中国」合集)。 - topic: 可选,合集名,提高命中。示例
早安中国。 - username: 可选,创作者 finder username(
v2_…@finder格式),提高命中。 - last_buffer: 可选,翻页游标(base64),首页留空;当响应
down_continue为真时,传上一页响应的last_buffer取下一页。 - topic_type: 可选,合集类型,默认 16(与
fetch_user_collections里该合集的topic_type对齐)。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构(推荐做媒体下载)。
返回:
- 合集内视频列表及翻页游标
响应结构与 JSON Path:
raw=false(精简,snake_case,推荐做媒体下载):
$.data.topic_id/$.data.title(合集名)$.data.total_count—— 合集总视频数;$.data.count—— 本页条数(示例 20)$.data.videos[]—— 视频数组,逐个(N 为下标):$.data.videos[N].id—— 作品 objectId(可喂fetch_video_detail/fetch_video_comments)$.data.videos[N].username/.nickname/.title(可能为 null)/.create_time$.data.videos[N].read_count/.like_count/.fav_count/.forward_count/.comment_count$.data.videos[N].media—— 媒体对象(单个),下载 + 解密:$.data.videos[N].media.url—— 视频 CDN 链接(不带 Token)$.data.videos[N].media.url_token—— CDN 链接 Token(防盗链)$.data.videos[N].media.full_url—— 已拼好的完整 CDN URL(=url+url_token,可直接下载)$.data.videos[N].media.decode_key—— 视频解密密钥(每次请求都不同)- 另含
cover_url/duration/width/height/media_type等
$.data.down_continue—— 是否有下一页(1=有)$.data.last_buffer—— 翻页游标(传回本接口取下一页)
raw=true(完整原始响应,camelCase):
$.data.totalCount→total_count$.data.object[]→videos[](完整视频对象),逐个:$.data.object[N].id→id;$.data.object[N].username→username- 媒体在
$.data.object[N].objectDesc.media[0]:.url→url、.urlToken→url_token、.decodeKey→decode_key(full_url为精简层拼接产物,raw 需自行url+urlToken拼接)
$.data.downContinueFlag→down_continue(注意 raw 顶层另有continueFlag,合集翻页以downContinueFlag为准)$.data.lastBuffer(别名$.data.last_buffer)→last_buffer
重要提示(视频下载与解密):
- 同
fetch_video_detail:直接访问url可能因防盗链打不开,需用full_url(已拼 Token)下载;MP4 不能播即为加密文件,用同一次响应的decode_key解密(每次请求decode_key都变)。 - 在线解密工具: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/
- 可自行部署的解密 API(Docker 一键部署): https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption
[English]
Purpose:
- Given a collection
topic_id(fromfetch_user_collections), return the video list inside that collection. - Each video carries a
mediaobject (url/url_token/decode_key) ready for download and decryption. - Supports pagination for more videos.
- 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/topic_idin 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 JSNumber. 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:
- topic_id: Collection ID (numeric, from
topic_idoffetch_user_collections). E.g.14616794565351966924(People’s Daily “早安中国” collection). - topic: Optional, collection name, improves hit rate. E.g.
早安中国. - username: Optional, creator finder username (
v2_…@finderformat), improves hit rate. - last_buffer: Optional pagination cursor (base64), leave empty for the first page; when
down_continueis truthy, pass the previous page’slast_buffer. - topic_type: Optional, collection type, default 16 (align with the collection’s
topic_typefromfetch_user_collections). - raw: Optional, default True. True=raw response; False=simplified parsed structure (recommended for media download).
Return:
- Video list of the collection with pagination cursor
Response structure & JSON Path:
raw=false (simplified, snake_case, recommended for media download):
$.data.topic_id/$.data.title(collection name)$.data.total_count— total videos in the collection;$.data.count— items on this page (e.g. 20)$.data.videos[]— video array, per item (N is the index):$.data.videos[N].id— video objectId (feed intofetch_video_detail/fetch_video_comments)$.data.videos[N].username/.nickname/.title(may be null) /.create_time$.data.videos[N].read_count/.like_count/.fav_count/.forward_count/.comment_count$.data.videos[N].media— media object (single), download + decrypt:$.data.videos[N].media.url— video CDN link (without Token)$.data.videos[N].media.url_token— Token of the CDN link (anti-hotlinking)$.data.videos[N].media.full_url— pre-concatenated full CDN URL (=url+url_token, ready to download)$.data.videos[N].media.decode_key— video decryption key (different on every request)- Also
cover_url/duration/width/height/media_typeetc.
$.data.down_continue— 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[]→videos[](full video objects), per item:$.data.object[N].id→id;$.data.object[N].username→username- Media at
$.data.object[N].objectDesc.media[0]:.url→url,.urlToken→url_token,.decodeKey→decode_key(full_urlis produced by the simplified layer; for raw, concatenateurl+urlTokenyourself)
$.data.downContinueFlag→down_continue(note: raw top level also hascontinueFlag; for collection pagination usedownContinueFlag)$.data.lastBuffer(alias$.data.last_buffer) →last_buffer
Important Note (video download & decryption):
- Same as
fetch_video_detail: accessingurldirectly may fail due to anti-hotlinking, download viafull_url(Token already appended); if the MP4 cannot be played it is encrypted, decrypt with thedecode_keyfrom the same response (thedecode_keychanges on every request). - 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
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号直播回放列表/Get WeChat Channels Live History
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_live_history
[中文]
用途:
- 获取创作者的直播回放列表。回放本身就是视频对象,每条带媒体地址
media(含url/url_token/decode_key),可直接下载解密。 - 支持翻页获取更多回放。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。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
mediaobject (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
idin 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 JSNumber. 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_…@finderformat). Example (an account with live replays):v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(Huxiu). - last_buffer: Optional pagination cursor (base64), leave empty for the first page; when
continue_flagis truthy, pass the previous page’slast_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 offetch_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_countetc.$.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_urlis produced by the simplified layer; for raw, concatenateurl+urlTokenyourself)$.data.continueFlag→continue_flag$.data.lastBuffer(alias$.data.last_buffer) →last_buffer
Important Note (video download & decryption):
- Same as
fetch_video_detail: download viafull_url(Token already appended); if the MP4 cannot be played it is encrypted, decrypt with thedecode_keyfrom the same response. - The
live_idof a replay (live-room dimension) can be fed intofetch_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
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取视频号直播间详情/Get WeChat Channels Live Detail
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_live_detail
[中文]
用途:
- 传直播
live_id返回直播间详情:主播信息、直播状态、在线人数、回放信息等。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
live_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- live_id: 直播 ID(纯数字)。来源:
fetch_live_history的回放条目、直播入口或直播分享。示例2078950291205875194。 - scene: 可选,进入场景,默认 5。
- finder_username: 可选,主播 finder username(
v2_…@finder格式),提高命中。示例v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(虎嗅)。 - raw: 可选,默认 True。True=原始响应;False=精简解析结构。
返回:
- 直播间详情
响应结构与 JSON Path:
raw=false(精简,snake_case):
$.data.live_id—— 直播 ID;$.data.object_id—— 关联作品 objectId(可能为空串)$.data.anchor_nickname/$.data.anchor_username/$.data.anchor_head_url—— 主播昵称 / username / 头像$.data.live_cover_url—— 直播封面$.data.live_status—— 直播状态(1=直播中 / 2=已结束 …);$.data.status_desc—— 状态文案(可能为空)$.data.online_count/$.data.max_online_count—— 当前 / 峰值在线人数(已结束的直播一般为 0)$.data.replay_status—— 回放状态;$.data.replay_url—— 回放地址(可能为空);$.data.replay_watch_uv—— 回放观看人数
raw=true(完整原始响应,camelCase):
$.data.liveInfo.liveId→live_id;$.data.liveInfo.objectId→object_id$.data.liveInfo.liveStatus→live_status;$.data.liveInfo.statusDesc→status_desc$.data.liveInfo.onlineCnt→online_count;$.data.liveInfo.maxOnlineCount→max_online_count$.data.liveInfo.replayStatus→replay_status;$.data.liveInfo.replayUrl→replay_url$.data.liveInfo.replayInfo.watchUv→replay_watch_uv$.data.anchorContact(nickname/username/headUrl/coverImgUrl/liveCoverImgUrl)→ 主播相关字段- 另含
$.data.liveCover、$.data.anchorInfo、$.data.replaySubscribedCount等几十个原始字段
[English]
Purpose:
- Pass a live
live_idto get live-room detail: anchor info, live status, online count, replay info, etc. - 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
live_idin 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 JSNumber. 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:
- live_id: Live ID (numeric). Source: replay items of
fetch_live_history, live entry, or live share. E.g.2078950291205875194. - scene: Optional, entry scene, default 5.
- finder_username: Optional, anchor finder username (
v2_…@finderformat), improves hit rate. E.g.v2_060000231003b20faec8cae1811ac4d5c702ea32b0771737aa785454f7f8177114cc4d248d66@finder(Huxiu). - raw: Optional, default True. True=raw response; False=simplified parsed structure.
Return:
- Live room detail
Response structure & JSON Path:
raw=false (simplified, snake_case):
$.data.live_id— live ID;$.data.object_id— associated video objectId (may be empty string)$.data.anchor_nickname/$.data.anchor_username/$.data.anchor_head_url— anchor nickname / username / avatar$.data.live_cover_url— live cover$.data.live_status— live status (1=live / 2=ended …);$.data.status_desc— status text (may be empty)$.data.online_count/$.data.max_online_count— current / peak online count (usually 0 for ended lives)$.data.replay_status— replay status;$.data.replay_url— replay address (may be empty);$.data.replay_watch_uv— replay viewer count
raw=true (full raw response, camelCase):
$.data.liveInfo.liveId→live_id;$.data.liveInfo.objectId→object_id$.data.liveInfo.liveStatus→live_status;$.data.liveInfo.statusDesc→status_desc$.data.liveInfo.onlineCnt→online_count;$.data.liveInfo.maxOnlineCount→max_online_count$.data.liveInfo.replayStatus→replay_status;$.data.liveInfo.replayUrl→replay_url$.data.liveInfo.replayInfo.watchUv→replay_watch_uv$.data.anchorContact(nickname/username/headUrl/coverImgUrl/liveCoverImgUrl) → anchor-related fields- Also dozens of raw fields like
$.data.liveCover,$.data.anchorInfo,$.data.replaySubscribedCount
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
视频号号内搜索/Search Videos Within a WeChat Channel
0.10 Credits / 次
/api/v1/wechat_channels/v2/fetch_search_channel_videos
[中文]
用途:
- 号内搜:在指定创作者的视频号内,按关键词搜索其发布的视频(只在该号内部检索)。
- 本接口仅做首页检索(请求侧不暴露 cursor 参数,单页返回),但响应仍带
next_cursor/continue_flag,供需要时自行接续翻页参考。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
doc_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- username: 创作者 finder username(
v2_…@finder格式)。示例v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。 - keyword: 在该号内搜索的关键词(去空白后 1-100 字)。示例
新闻。 - raw: 可选,默认 True。True=原始搜索响应;False=精简解析结构。
返回:
- 号内搜索命中列表
响应结构与 JSON Path:
raw=false(精简,snake_case):
$.data.username/$.data.keyword—— 回显入参$.data.count—— 本页命中数(示例 20)$.data.items[]—— 命中数组,逐个(N 为下标):$.data.items[N].type—— 结果类型(如video)$.data.items[N].doc_id—— 文档 id$.data.items[N].title—— 标题(已去搜索高亮标记)$.data.items[N].desc/.thumb_url/.username/.nickname—— 简介 / 缩略图 / 作者(部分项可能为 null)
$.data.continue_flag—— 是否还有更多(1=有)$.data.next_cursor—— 翻页游标对象(携带检索上下文与offset等;本路由首页检索不消费它)
raw=true(完整原始响应,camelCase):
$.data.query→keyword;$.data.offset—— 下一页偏移(示例 20)$.data.data[]—— 结果分组数组;命中项嵌在$.data.data[N].subBoxes[M].items[](亦可能在$.data.data[N].items[]),由精简层拍平成items[]$.data.continueFlag→continue_flag$.data.searchID—— 翻页所需上下文,精简层归并进next_cursor(顶层另注入$.data.next_cursor)
提示:
- 命中视频要拿媒体(下载地址 / decode_key):本接口不直接给
media,请用命中项走fetch_video_detail取media(url/url_token/decode_key),链路与解密说明见fetch_video_detail文档。
[English]
Purpose:
- In-channel search: search a creator’s published videos by keyword within that channel only.
- This endpoint performs first-page retrieval only (no cursor parameter exposed, single-page result), but the response still carries
next_cursor/continue_flagfor reference. - 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
doc_idin 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 JSNumber. 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: Creator finder username (
v2_…@finderformat). E.g.v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(People’s Daily). - keyword: Keyword to search within the channel (1-100 chars after trimming). E.g.
新闻. - raw: Optional, default True. True=raw search response; False=simplified parsed structure.
Return:
- In-channel search hit list
Response structure & JSON Path:
raw=false (simplified, snake_case):
$.data.username/$.data.keyword— input echo$.data.count— hits on this page (e.g. 20)$.data.items[]— hit array, per item (N is the index):$.data.items[N].type— result type (e.g.video)$.data.items[N].doc_id— document id$.data.items[N].title— title (search highlight markers stripped)$.data.items[N].desc/.thumb_url/.username/.nickname— description / thumbnail / author (may be null for some items)
$.data.continue_flag— has more (1=yes)$.data.next_cursor— pagination cursor object (carries search context andoffsetetc.; not consumed by this first-page-only route)
raw=true (full raw response, camelCase):
$.data.query→keyword;$.data.offset— next page offset (e.g. 20)$.data.data[]— result group array; hit items are nested at$.data.data[N].subBoxes[M].items[](or possibly$.data.data[N].items[]), flattened intoitems[]by the simplified layer$.data.continueFlag→continue_flag$.data.searchID— context required for pagination, merged intonext_cursorby the simplified layer ($.data.next_cursoris also injected at top level)
Tip:
- To get media (download address / decode_key) of a hit video: this endpoint does not return
mediadirectly; feed the hit intofetch_video_detailto getmedia(url/url_token/decode_key). Seefetch_video_detaildocs for the chain and decryption notes.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号文章详情/Get WeChat MP Article Detail
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_article_detail
[中文]
用途:
- 传文章 URL,返回文章正文 / 标题 / 作者 / 封面 / 发布时间 / 合集信息等。
- 无论
raw取值,嵌套的contentJSON 串都会被解析成对象(结构归一化),raw只控制外层字段的投影范围。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
comment_id/msgId等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- url: 公众号文章链接(
https://mp.weixin.qq.com/s/…或带__biz的长链)。示例https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - raw: 可选,默认 True。True=原始响应;False=精简投影。
返回:
- 文章详情(正文 / 标题 / 作者 / 封面 / 发布时间 / 合集信息)
响应结构与 JSON Path:
raw=false(精简投影):
data顶层仅 4 个字段,文章正文聚合在content:$.data.url: 文章 URL$.data.bizUin: 公众号 bizUin(int)$.data.itemIdx: 图文位置序号$.data.content: 已解析的正文对象,常用路径:$.data.content.title: 标题$.data.content.nick_name/$.data.content.user_name: 公众号名 / gh_username$.data.content.author: 作者$.data.content.desc: 摘要$.data.content.create_time: 发布时间("2025-03-05 12:22"文本)$.data.content.ori_create_time: 发布时间戳(int 秒)$.data.content.cdn_url: 封面图$.data.content.comment_id: 评论 id(喂评论接口的内部 id)$.data.content.appmsgalbuminfo: 所属合集(album_id/title/ 上下篇链接)$.data.content.content_text: 正文 HTML 转出的纯文字
raw=true(原始):
data为完整 item(含raw=false的全部字段,外加模板 / 缓存 / 时间等元信息):$.data.url/$.data.bizUin/$.data.itemIdx: 同精简模式$.data.msgId: 图文消息 id$.data.lastModifyTime: 最后修改时间戳$.data.tmplVersion/$.data.tmplVersions[]: H5 模板版本$.data.clientCacheTime: 客户端缓存秒数$.data.content.*: 与raw=false的content同结构(同样含content_text)
[English]
Purpose:
- Pass an article URL to get the article body / title / author / cover / publish time / album info.
- Regardless of
raw, the nestedcontentJSON string is always parsed into an object (structure normalized);rawonly controls the projection scope of outer fields. - 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
comment_id/msgIdin 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 JSNumber. 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:
- url: WeChat MP article URL (
https://mp.weixin.qq.com/s/…or long URL with__biz). E.g.https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - raw: Optional, default True. True=raw response; False=simplified projection.
Return:
- Article detail (body / title / author / cover / publish time / album info)
Response structure & JSON Path:
raw=false (simplified projection):
datahas only 4 top-level fields; the article body is aggregated incontent:$.data.url: article URL$.data.bizUin: official account bizUin (int)$.data.itemIdx: article position index$.data.content: parsed body object, common paths:$.data.content.title: title$.data.content.nick_name/$.data.content.user_name: account name / gh_username$.data.content.author: author$.data.content.desc: digest$.data.content.create_time: publish time (text like"2025-03-05 12:22")$.data.content.ori_create_time: publish timestamp (int seconds)$.data.content.cdn_url: cover image$.data.content.comment_id: comment id (internal id fed into comment endpoints)$.data.content.appmsgalbuminfo: album info (album_id/title/ prev & next links)$.data.content.content_text: plain text extracted from the body HTML
raw=true (raw):
datais the full item (all fields ofraw=false, plus template / cache / time metadata):$.data.url/$.data.bizUin/$.data.itemIdx: same as simplified mode$.data.msgId: message id$.data.lastModifyTime: last modified timestamp$.data.tmplVersion/$.data.tmplVersions[]: H5 template versions$.data.clientCacheTime: client cache seconds$.data.content.*: same structure ascontentofraw=false(also includescontent_text)
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号文章互动数据/Get WeChat MP Article Stats
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_article_stats
[中文]
用途:
- 传文章 URL,返回文章的互动指标(阅读量 / 点赞 / 在看 / 分享 / 收藏 / 评论数)。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- url: 公众号文章链接(
https://mp.weixin.qq.com/s/…)。示例https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - raw: 可选,默认 True。True=完整原始统计对象(含
show_*显隐标志位);False=仅精简计数。
返回:
- 文章互动数据
响应结构与 JSON Path:
raw=false(精简计数):
data为 7 个计数字段:$.data.read_num: 阅读量$.data.like_count: 点赞数$.data.old_like_count: 在看数(旧「在看」)$.data.share_count: 分享数$.data.collect_count: 收藏数$.data.comment_count: 评论数$.data.star_num: 星标 / 喜欢数
raw=true(原始):
data为完整原始统计对象:含raw=false的全部计数(同名同义),外加显隐 / 状态标志位:- 计数:
$.data.read_num/$.data.like_count/$.data.old_like_count/$.data.share_count/$.data.collect_count/$.data.comment_count/$.data.star_num - 显隐标志:
$.data.show_like/$.data.show_old_like/$.data.show_share/$.data.show_collect/$.data.show_read/$.data.show_star(及对应*_gray置灰位) - 状态:
$.data.comment_enabled(评论开关)/$.data.get_data_succ(取数成功)/$.data.is_subscribed/$.data.verify_status/$.data.can_use_star
- 计数:
[English]
Purpose:
- Pass an article URL to get its interaction metrics (reads / likes / “wow” / shares / favorites / comments).
- 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.
Parameters:
- url: WeChat MP article URL (
https://mp.weixin.qq.com/s/…). E.g.https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - raw: Optional, default True. True=full raw stats object (with
show_*visibility flags); False=simplified counts only.
Return:
- Article interaction stats
Response structure & JSON Path:
raw=false (simplified counts):
datacontains 7 count fields:$.data.read_num: read count$.data.like_count: like count$.data.old_like_count: “wow” count (old “Looking”)$.data.share_count: share count$.data.collect_count: favorite count$.data.comment_count: comment count$.data.star_num: star / like count
raw=true (raw):
datais the full raw stats object: all counts ofraw=false(same names and meanings), plus visibility / status flags:- Counts:
$.data.read_num/$.data.like_count/$.data.old_like_count/$.data.share_count/$.data.collect_count/$.data.comment_count/$.data.star_num - Visibility flags:
$.data.show_like/$.data.show_old_like/$.data.show_share/$.data.show_collect/$.data.show_read/$.data.show_star(and corresponding*_grayflags) - Status:
$.data.comment_enabled(comment switch) /$.data.get_data_succ(fetch success) /$.data.is_subscribed/$.data.verify_status/$.data.can_use_star
- Counts:
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号文章评论/Get WeChat MP Article Comments
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_article_comments
[中文]
用途:
- 获取公众号文章评论(单页,
buffer游标翻页),返回文章的一页精选评论。 - 翻页:首页
buffer留空 → 取响应的buffer→ 下次请求传回buffer取下一页;has_more为 false 即到末页。 - 逐条评论的二级回复请用
fetch_comment_replies(传评论的content_id)。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
content_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- url: 公众号文章链接(
https://mp.weixin.qq.com/s/…)。示例https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - buffer: 可选,默认空。翻页游标,首页留空;翻页传上一页响应的
buffer。 - raw: 可选,默认 True。True=完整原始评论对象;False=精简评论视图。
返回:
- 单页评论列表及翻页游标
响应结构与 JSON Path:
raw=false(精简视图):
data外层为本页汇总,comments[]为精简评论:$.data.appmsgid: 图文消息 id$.data.elected_total: 精选评论总数$.data.total_count: 评论总数$.data.buffer: 下一页游标(翻页回传buffer;末页为空串)$.data.has_more: 是否还有下一页$.data.comment_id: 文章评论标识(内部用)$.data.comments[N].content_id: 评论 id(喂fetch_comment_replies的content_id)$.data.comments[N].nick_name: 评论者昵称$.data.comments[N].content: 评论内容$.data.comments[N].like_num: 点赞数$.data.comments[N].create_time: 评论时间戳$.data.comments[N].ip_wording: IP 归属地(province_name/city_name等)$.data.comments[N].is_elected/is_top: 是否精选 / 置顶$.data.comments[N].reply_total: 二级回复总数$.data.comments[N].replies[]: 二级回复预览(精简,见fetch_comment_replies)
raw=true(原始):
data外层同上(appmsgid/elected_total/total_count/buffer/has_more/comment_id),comments[]为完整原始评论对象,字段更全(snake_case):$.data.comments[N].content_id: 评论 id(同精简模式,仍是喂fetch_comment_replies的值)$.data.comments[N].content/nick_name/like_num/create_time/ip_wording/is_elected/is_top: 与raw=false同名同义- 原始模式额外字段:
$.data.comments[N].id(楼层序号)/openid/identity_type/logo_url(头像)/like_status/is_from_me/$.data.comments[N].reply_new(含reply_total_cnt/reply_list,对应精简模式的reply_total/replies)
[English]
Purpose:
- Get WeChat MP article comments (single page,
buffercursor pagination); returns one page of featured comments. - Pagination: leave
bufferempty for the first page → takebufferfrom the response → pass it back in the next request;has_morefalse means the last page. - For second-level replies of a specific comment, use
fetch_comment_replies(pass the comment’scontent_id). - 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
content_idin 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 JSNumber. 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:
- url: WeChat MP article URL (
https://mp.weixin.qq.com/s/…). E.g.https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw - buffer: Optional, default empty. Pagination cursor; leave empty for the first page, pass
bufferfrom the previous response for the next page. - raw: Optional, default True. True=full raw comment objects; False=simplified comment view.
Return:
- One page of comments with pagination cursor
Response structure & JSON Path:
raw=false (simplified view):
dataouter level is the page summary;comments[]are simplified comments:$.data.appmsgid: message id$.data.elected_total: total featured comments$.data.total_count: total comments$.data.buffer: next-page cursor (pass back asbuffer; empty string at the last page)$.data.has_more: whether there is a next page$.data.comment_id: article comment identifier (internal)$.data.comments[N].content_id: comment id (feed intocontent_idoffetch_comment_replies)$.data.comments[N].nick_name: commenter nickname$.data.comments[N].content: comment content$.data.comments[N].like_num: like count$.data.comments[N].create_time: comment timestamp$.data.comments[N].ip_wording: IP region (province_name/city_nameetc.)$.data.comments[N].is_elected/is_top: featured / pinned flags$.data.comments[N].reply_total: total second-level replies$.data.comments[N].replies[]: reply preview (simplified, seefetch_comment_replies)
raw=true (raw):
dataouter level same as above (appmsgid/elected_total/total_count/buffer/has_more/comment_id);comments[]are full raw comment objects with more fields (snake_case):$.data.comments[N].content_id: comment id (same as simplified mode, still the value fed intofetch_comment_replies)$.data.comments[N].content/nick_name/like_num/create_time/ip_wording/is_elected/is_top: same names and meanings asraw=false- Raw-only extra fields:
$.data.comments[N].id(floor number) /openid/identity_type/logo_url(avatar) /like_status/is_from_me/$.data.comments[N].reply_new(withreply_total_cnt/reply_list, corresponding toreply_total/repliesof the simplified mode)
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号评论的二级回复/Get WeChat MP Comment Replies
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_comment_replies
[中文]
用途:
- 返回某条一级评论下的二级回复。
- 链路:先调
fetch_article_comments取到每条评论的content_id,再把它喂给本接口。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
content_id/reply_id等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- url: 公众号文章链接(
https://mp.weixin.qq.com/s/…)。示例http://mp.weixin.qq.com/s?__biz=Mzk3NTA0MzM5NA==&mid=2247483745&idx=1&sn=3f34e768cf457a501038991ed30be1f4#rd - content_id: 可选(纯数字)。目标一级评论的
content_id,取自fetch_article_comments响应的$.data.comments[N].content_id;不传则自动取第一条有回复的评论。示例12109128638545265979 - offset: 可选,默认 0(>=0)。回复翻页偏移;首页 0,
has_more=true时传上次返回的next_offset取下一页。all_pages=true时忽略本参数。 - all_pages: 可选,默认 False。为 True 时忽略
offset,一次取全部回复(响应不含offset/next_offset/has_more翻页字段)。 - raw: 可选,默认 True。True=完整原始回复对象;False=精简回复。
返回:
- 二级回复列表及翻页信息
注意:本接口raw=true与raw=false的外层结构一致,差异仅在replies[]每个元素的字段粒度(精简视图 vs 完整原始对象)。
响应结构与 JSON Path:
raw=false(精简回复):
$.data.content_id: 目标评论 id(回显)$.data.parent_nick: 父评论(被回复者)昵称$.data.reply_total: 二级回复总数$.data.count: 本次返回的回复条数$.data.replies[N].reply_id: 回复 id$.data.replies[N].nick_name: 回复者昵称$.data.replies[N].content: 回复内容$.data.replies[N].create_time: 回复时间戳$.data.replies[N].ip_wording: IP 归属地$.data.replies[N].identity_name: 身份标识$.data.replies[N].from_ai/reply_is_elected: 是否 AI 回复 / 是否精选- 仅单页模式(
all_pages=false)含翻页:$.data.offset/$.data.next_offset/$.data.has_more
raw=true(原始):
- 外层
content_id/parent_nick/reply_total/count(及单页模式的offset/next_offset/has_more)与raw=false完全一致;差异仅在replies[]元素为完整原始回复对象(含raw=false投影掉的字段)。常用路径仍为$.data.replies[N].content/$.data.replies[N].reply_id/$.data.replies[N].nick_name。
[English]
Purpose:
- Get the second-level replies under a first-level comment.
- Chain: first call
fetch_article_commentsto get each comment’scontent_id, then feed it into this endpoint. - 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
content_id/reply_idin 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 JSNumber. 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:
- url: WeChat MP article URL (
https://mp.weixin.qq.com/s/…). E.g.http://mp.weixin.qq.com/s?__biz=Mzk3NTA0MzM5NA==&mid=2247483745&idx=1&sn=3f34e768cf457a501038991ed30be1f4#rd - content_id: Optional (numeric).
content_idof the target first-level comment, from$.data.comments[N].content_idof thefetch_article_commentsresponse; defaults to the first comment that has replies when omitted. E.g.12109128638545265979 - offset: Optional, default 0 (>=0). Reply pagination offset; 0 for the first page, pass
next_offsetfrom the previous response whenhas_more=true. Ignored whenall_pages=true. - all_pages: Optional, default False. When True, ignores
offsetand fetches all replies at once (the response omits theoffset/next_offset/has_morepagination fields). - raw: Optional, default True. True=full raw reply objects; False=simplified replies.
Return:
- Second-level reply list with pagination info
Note: the outer structure is identical forraw=trueandraw=false; the difference is only in the field granularity of eachreplies[]element (simplified view vs full raw object).
Response structure & JSON Path:
raw=false (simplified replies):
$.data.content_id: target comment id (echo)$.data.parent_nick: nickname of the parent comment (the one replied to)$.data.reply_total: total second-level replies$.data.count: number of replies returned this time$.data.replies[N].reply_id: reply id$.data.replies[N].nick_name: replier nickname$.data.replies[N].content: reply content$.data.replies[N].create_time: reply timestamp$.data.replies[N].ip_wording: IP region$.data.replies[N].identity_name: identity label$.data.replies[N].from_ai/reply_is_elected: AI reply / featured flags- Pagination fields only in single-page mode (
all_pages=false):$.data.offset/$.data.next_offset/$.data.has_more
raw=true (raw):
- Outer
content_id/parent_nick/reply_total/count(andoffset/next_offset/has_morein single-page mode) are identical toraw=false; the only difference is thatreplies[]elements are full raw reply objects (including fields projected away inraw=false). Common paths remain$.data.replies[N].content/$.data.replies[N].reply_id/$.data.replies[N].nick_name.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号关联文章/Get WeChat MP Related Articles
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_related_articles
[中文]
用途:
- 传文章 URL,返回文章底部「关联 / 相关文章」。未开启该功能的文章返回空列表。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- url: 公众号文章链接(长 / 短链均可)。示例
https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(该文未开启关联文章,返回空) - raw: 可选,默认 True。True=完整原始响应;False=精简投影。
返回:
- 关联文章列表
响应结构与 JSON Path:
raw=false(精简投影):
data为拍平后的三字段:$.data.ret: 返回码(0 正常)$.data.count: 关联文章条数$.data.articles[]: 关联文章列表(命中任一来源列表的合并;空文章为[])
raw=true(原始):
data为完整原始响应:$.data.article_size: 关联文章数量(对应精简模式count)$.data.list[]: 关联文章原始列表(对应精简模式articles)$.data.base_resp.ret: 返回码(对应精简模式ret);base_resp.exportkey_token: 导出 token$.data.empty_scene: 空结果场景码;$.data.show_rec_reason: 是否展示推荐理由;$.data.report_info: 上报信息(JSON 串)
[English]
Purpose:
- Pass an article URL to get the “related articles” at the bottom of the article. Articles without this feature return an empty list.
- 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.
Parameters:
- url: WeChat MP article URL (long or short form). E.g.
https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(this article has related articles disabled, returns empty) - raw: Optional, default True. True=full raw response; False=simplified projection.
Return:
- Related article list
Response structure & JSON Path:
raw=false (simplified projection):
datais flattened into three fields:$.data.ret: return code (0 = OK)$.data.count: number of related articles$.data.articles[]: related article list (merged from whichever source list hits;[]when empty)
raw=true (raw):
datais the full raw response:$.data.article_size: number of related articles (corresponds tocountin simplified mode)$.data.list[]: raw related article list (corresponds toarticlesin simplified mode)$.data.base_resp.ret: return code (corresponds toretin simplified mode);base_resp.exportkey_token: export token$.data.empty_scene: empty-result scene code;$.data.show_rec_reason: whether to show recommendation reason;$.data.report_info: report info (JSON string)
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号文章广告/Get WeChat MP Article Ads
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_article_ad
[中文]
用途:
- 传文章 URL,返回文章内嵌的广告位信息。该接口响应相对较慢,请耐心等待;未投放广告的文章返回空。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- url: 公众号文章链接。示例
https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(该文无广告,返回空) - raw: 可选,默认 True。True=完整原始响应;False=拍平后的广告列表。
返回:
- 文章广告位信息
响应结构与 JSON Path:
raw=false(精简投影):
data为拍平后的广告列表:$.data.count: 广告条数(合并advertisement_info与ad_slot_data)$.data.ads[]: 广告项列表(无广告时为[])
raw=true(原始):
data按抓到的响应聚合:$.data.pages: 响应页数$.data.results[]: 每页完整原始响应(广告原始字段在各页的advertisement_info/ad_slot_data内,即精简模式ads的来源)
[English]
Purpose:
- Pass an article URL to get the embedded ad slot info of the article. This endpoint responds relatively slowly, please be patient; articles without ads return empty.
- 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.
Parameters:
- url: WeChat MP article URL. E.g.
https://mp.weixin.qq.com/s/TSNQKkRpN1qbKsT7BvzqIw(this article has no ads, returns empty) - raw: Optional, default True. True=full raw response; False=flattened ad list.
Return:
- Article ad slot info
Response structure & JSON Path:
raw=false (simplified projection):
datais the flattened ad list:$.data.count: number of ads (merged fromadvertisement_infoandad_slot_data)$.data.ads[]: ad item list ([]when no ads)
raw=true (raw):
datais aggregated by the responses captured:$.data.pages: number of response pages$.data.results[]: full raw response per page (raw ad fields are insideadvertisement_info/ad_slot_dataof each page — the source ofadsin simplified mode)
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号资料页/Get WeChat MP Account Profile
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_account_profile
[中文]
用途:
- 传
gh_username,返回公众号资料页:名称 / 头像 / 简介 / 认证主体类型等。 - 部分账号(如示例号)字段稀疏,
nick_name/signature/head_url可能为null。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- username: 公众号
gh_username(gh_…)。来源:文章详情content.user_name、或微信搜索 V2fetch_search(business_type=account)结果的jumpInfo.userName。示例gh_363b924965e9 - raw: 可选,默认 True。True=原始;False=精简解析。
返回:
- 公众号资料页信息
响应结构与 JSON Path:
raw=false(精简解析,snake_case):
- 公众号 username(
gh_…):$.data.user_name - 昵称(可能为 null):
$.data.nick_name - 用户角色:
$.data.user_role - 服务类型(订阅号 / 服务号代码):
$.data.service_type - 签名 / 简介(可能为 null):
$.data.signature - 头像(可能为 null):
$.data.head_url - 封禁类型(0=正常):
$.data.ban_type
raw=true(原始,本接口默认):
data为完整原始响应(几十个顶层字段),精简版字段对应其中嵌套位置:- 基础信息块:
$.data.baseInfo(昵称 / 头像 / 简介等原始来源) - 账号信息:
$.data.accountInfo(含userName等) - 统计信息:
$.data.statInfo - 关联视频号:
$.data.videoFinderInfo - 服务信息(自定义菜单原始来源):
$.data.serviceInfo - 文章 Tab / 消息列表:
$.data.articleTab/$.data.msgList - IP 属地:
$.data.ipwording - 其余:
liveInfo/nameCard/gender/setting/funcFlag等
- 基础信息块:
[English]
Purpose:
- Pass a
gh_usernameto get the official account profile: name / avatar / description / verification entity type, etc. - Some accounts (like the example) have sparse fields;
nick_name/signature/head_urlmay benull. - 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.
Parameters:
- username: Official account
gh_username(gh_…). Sources:content.user_namefrom article detail, orjumpInfo.userNamefrom WeChat Search V2fetch_search(business_type=account) results. E.g.gh_363b924965e9 - raw: Optional, default True. True=raw; False=simplified parsing.
Return:
- Official account profile info
Response structure & JSON Path:
raw=false (simplified, snake_case):
- Account username (
gh_…):$.data.user_name - Nickname (may be null):
$.data.nick_name - User role:
$.data.user_role - Service type (subscription / service account code):
$.data.service_type - Signature / description (may be null):
$.data.signature - Avatar (may be null):
$.data.head_url - Ban type (0=normal):
$.data.ban_type
raw=true (raw, default for this endpoint):
datais the full raw response (dozens of top-level fields); simplified fields map to nested locations:- Base info block:
$.data.baseInfo(raw source of nickname / avatar / description) - Account info:
$.data.accountInfo(withuserNameetc.) - Stats info:
$.data.statInfo - Linked Channels account:
$.data.videoFinderInfo - Service info (raw source of custom menu):
$.data.serviceInfo - Article tab / message list:
$.data.articleTab/$.data.msgList - IP region:
$.data.ipwording - Others:
liveInfo/nameCard/gender/setting/funcFlagetc.
- Base info block:
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号文章列表/Get WeChat MP Account Articles
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_account_articles
[中文]
用途:
- 传
gh_username,返回公众号历史发文(文章 tab)的单页列表。 - 手动翻页:首页
offset留空 → 从响应取next_offset(base64 游标)→ 下次请求放进offset取下一页;is_end为真即末页。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- username: 公众号
gh_username(gh_…)。示例gh_363b924965e9 - page_size: 可选,默认 20,范围 10-20。每页文章数。
- offset: 可选,翻页游标(base64),首页留空;翻页时传上一页响应的
next_offset。示例CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ== - item_show_type: 可选,内容栏目(对应公众号主页的「文章 / 视频 / 音频」分栏)。留空 /
0=文章(默认)、5=视频、7=音频、8=贴图。默认不传=文章,行为不变。 - raw: 可选,默认 True。True=原始;False=精简解析。
返回:
- 公众号文章列表(单页)及翻页游标
提示:offset是 base64 游标(含+/=),统一走 POST body。本接口只取单页、不自动翻页。
响应结构与 JSON Path:
raw=false(精简解析,snake_case):
- 公众号 username:
$.data.biz_username - 是否末页(0/1):
$.data.is_end - 本页返回文章数:
$.data.count - 下一页游标(翻页回传
offset;末页为 null):$.data.next_offset - 文章列表:
$.data.articles[] - 单篇(N 为下标):
- 文章 appmsgid:
$.data.articles[N].app_msg_id - 标题:
$.data.articles[N].title - 摘要:
$.data.articles[N].digest - 链接:
$.data.articles[N].url - 封面:
$.data.articles[N].cover(多比例$.data.articles[N].covers) - 发布 / 更新时间戳:
$.data.articles[N].create_time/.update_time - 群发内位置 / 类型:
$.data.articles[N].idx/.msg_type/.item_show_type - 图文数 / 付费标志:
$.data.articles[N].pic_count/.is_paid/.is_pay_subscribe
- 文章 appmsgid:
raw=true(原始,本接口默认):
data顶层字段与精简版一致(biz_username/is_end/count/next_offset),但articles[]为完整原始群发条目(camelCase 嵌套):- 单条:
$.data.articles[N].appMsg(含baseInfo/detailInfo)、$.data.articles[N].baseInfo(msgId/msgType/dateTime/status) - 图文正文在
$.data.articles[N].appMsg.detailInfo(一次群发可含多篇:头条 / 次条) - 翻页同样用顶层
next_offset回传offset。做列表展示建议直接用raw=false,路径更干净。
- 单条:
[English]
Purpose:
- Pass a
gh_usernameto get a single page of the account’s historical posts (article tab). - Manual paging: leave
offsetempty for the first page → takenext_offset(base64 cursor) from the response → pass it asoffsetin the next request;is_endtruthy means the last page. - 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.
Parameters:
- username: Official account
gh_username(gh_…). E.g.gh_363b924965e9 - page_size: Optional, default 20, range 10-20. Articles per page.
- offset: Optional pagination cursor (base64), leave empty for the first page; for the next page pass
next_offsetfrom the previous response. E.g.CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ== - item_show_type: Optional content tab (matches the “Articles / Videos / Audios” tabs on the account homepage). Empty /
0=articles (default),5=videos,7=audios,8=image-text posts. Omitting it = articles, behavior unchanged. - raw: Optional, default True. True=raw; False=simplified parsing.
Return:
- Single page of articles with pagination cursor
Tip:offsetis a base64 cursor (contains+/=), hence POST body. This endpoint fetches a single page only and does not auto-paginate.
Response structure & JSON Path:
raw=false (simplified, snake_case):
- Account username:
$.data.biz_username - Is last page (0/1):
$.data.is_end - Articles returned on this page:
$.data.count - Next-page cursor (pass back as
offset; null at the last page):$.data.next_offset - Article list:
$.data.articles[] - Single article (N is the index):
- Article appmsgid:
$.data.articles[N].app_msg_id - Title:
$.data.articles[N].title - Digest:
$.data.articles[N].digest - URL:
$.data.articles[N].url - Cover:
$.data.articles[N].cover(multi-ratio$.data.articles[N].covers) - Publish / update timestamps:
$.data.articles[N].create_time/.update_time - Position / type within the batch:
$.data.articles[N].idx/.msg_type/.item_show_type - Image count / paid flags:
$.data.articles[N].pic_count/.is_paid/.is_pay_subscribe
- Article appmsgid:
raw=true (raw, default for this endpoint):
datatop-level fields match the simplified version (biz_username/is_end/count/next_offset), butarticles[]are full raw batch entries (nested camelCase):- Per entry:
$.data.articles[N].appMsg(withbaseInfo/detailInfo),$.data.articles[N].baseInfo(msgId/msgType/dateTime/status) - Article bodies are in
$.data.articles[N].appMsg.detailInfo(one batch may contain multiple articles: headline / secondary) - Pagination also uses top-level
next_offsetpassed back asoffset. For list display, preferraw=falsefor cleaner paths.
- Per entry:
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
获取公众号服务/自定义菜单/Get WeChat MP Account Services & Custom Menu
0.10 Credits / 次
/api/v1/wechat_mp/v2/fetch_account_services
[中文]
用途:
- 传
gh_username,返回公众号底部的自定义菜单 / 服务入口。未配置自定义菜单的账号返回空菜单。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
参数:
- username: 公众号
gh_username(gh_…)。示例gh_363b924965e9 - raw: 可选,默认 True。True=原始;False=精简解析。
返回:
- 公众号自定义菜单 / 服务入口
响应结构与 JSON Path:
raw=false(精简解析,snake_case):
- 公众号 username:
$.data.biz_username - 菜单项列表(无菜单时为
[]):$.data.menu[]—— 每项为菜单按钮(名称 / 类型 / 子菜单 / 跳转),无自定义菜单的账号该数组为空。
raw=true(原始,本接口默认):
data为完整原始菜单结构。未配置菜单的账号返回空对象{}。- 精简版的
menu[]即由此原始结构提取而来。
[English]
Purpose:
- Pass a
gh_usernameto get the custom menu / service entries at the bottom of the official account. Accounts without a custom menu return an empty menu. - 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.
Parameters:
- username: Official account
gh_username(gh_…). E.g.gh_363b924965e9 - raw: Optional, default True. True=raw; False=simplified parsing.
Return:
- Custom menu / service entries of the official account
Response structure & JSON Path:
raw=false (simplified, snake_case):
- Account username:
$.data.biz_username - Menu item list (
[]when no menu):$.data.menu[]— each item is a menu button (name / type / sub-menu / jump); the array is empty for accounts without a custom menu.
raw=true (raw, default for this endpoint):
datais the full raw menu structure. Accounts without a configured menu return an empty object{}.- The simplified
menu[]is extracted from this raw structure.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
微信综合搜索(搜一搜)/WeChat Universal Search
0.10 Credits / 次
/api/v1/wechat_search/v2/fetch_search
[中文]
用途:
- 微信「搜一搜」综合搜索,垂类由
business_type字符串键切换,传关键词即可。 - 可搜公众号 / 文章 / 视频号视频 / 直播 / 朋友圈 / 新闻 / 读书 / 图片 / 百科 / 微信指数等垂类。
- 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
docID/feedNonceId等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- keyword: 搜索关键词(去空白后 1-100 字)。示例
人民日报 - business_type: 可选,默认
all。垂类字符串键,仅支持 —— 综合all/ 公众号,视频号,服务号account/ 文章article/ 视频video/ 直播live_stream/ 朋友圈moments/ 新闻news/ 读书book/ 听书listen/ 图片image/ 百科encyclopedia/ 微信指数weixin_index,传其他值将直接报错(422)。 - sort: 可选,默认
default。排序(结果页「排序」下拉,综合与各垂类通用)—— 不限(相关性)default/0 / 最新(发布时间降序)latest/1 / 最热(点赞降序)hot/2,字符串键或整数均可,非法值报错(400)。 - publish_time: 可选,默认
all。发布时间(结果页「时间」下拉,通用)—— 不限all/0 / 最近一天day/1 / 最近七天week/2 / 最近半年half_year/3,字符串键或整数均可,非法值报错(400)。 - offset: 可选,默认 0(>=0)。首页传
0;翻页请用cursor,只传 offset 无效(每页都回到第一页)。 - cursor: 可选。翻页游标。首页留空;翻页时把上一页响应里返回的
cursor原样传回(须同时重复上一页的sort/publish_time),配合continue_flag判断是否还有下一页。 - raw: 可选,默认 True。True=原始搜索响应;False=精简解析。
/fetch_search_videos(business_type=video + duration)。
返回:
- 搜索结果列表(结构随垂类略有差异)
典型链路:
- 💡 拿视频号详情(媒体下载地址 / decode_key):搜索(
video/all)的视频结果项不直接含媒体,只给exportId(+jumpInfo.extInfo.feedNonceId)。要下载 / 解密:取exportId→ 走视频号 V2 接口/api/v1/wechat_channels/v2/fetch_video_detail(传export_id)拿media(url/url_token/decode_key)和明文username。完整链路与解密说明见该接口文档。 - 公众号结果项的
jumpInfo.userName(gh_…)可喂给公众号 V2 接口/api/v1/wechat_mp/v2/fetch_account_profile/fetch_account_articles。
响应结构与 JSON Path:
raw=false(精简解析,snake_case):
- 关键词回填:
$.data.keyword - 实际生效的垂类代码(如公众号=33554499):
$.data.business_type - 结果总数(部分垂类为 null):
$.data.total - 是否还有下一页:
$.data.continue_flag - 翻页游标(原样回传接口的
cursor参数取下一页):$.data.cursor - 服务端 offset(仅供参考,单独传回无法翻页):
$.data.offset - 本页结果数:
$.data.count - 拍平的结果项列表(已把各 box / subBox 的 items 合并):
$.data.items[] - 单项(N 为下标,字段随垂类不同;以下为
account公众号示例):- 标题(含
<em>高亮):$.data.items[N].title - 描述:
$.data.items[N].desc - 文档 id:
$.data.items[N].docID - 类型名(如「公众号」):
$.data.items[N].accTypeName - 跳转信息:
$.data.items[N].jumpInfo(.userName=gh_…、.nickName、.signature) - 视频垂类项另含
exportId(+jumpInfo.extInfo.feedNonceId)→ 见上「典型链路」
- 标题(含
raw=true(原始,本接口默认):
data顶层:keyword/business_type/results(不做 items 拍平)- 完整结果集:
$.data.results - 结果盒子数组:
$.data.results.data[],每个 box 的结果在$.data.results.data[M].items[]与$.data.results.data[M].subBoxes[K].items[]—— 即raw=false的items[]是把这些拍平后的结果。 - 是否还有下一页:
$.data.continue_flag(raw=true/raw=false均在顶层) - 翻页游标:
$.data.cursor—— 原样回传接口的cursor参数取下一页;$.data.offset仅为服务端 offset,单独传回无法翻页 - box 内总数:
$.data.results.data[M].totalCount(对应raw=false的total) - 做结果遍历建议直接用
raw=false(items 已拍平),路径更干净。
[English]
Purpose:
- WeChat “Search” (搜一搜) universal search; the vertical is switched by the
business_typestring key — just pass a keyword. - Searches official accounts / articles / Channels videos / live streams / Moments / news / books / images / encyclopedia / WeChat Index, etc.
- 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
docID/feedNonceIdin 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 JSNumber. 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:
- keyword: Search keyword (1-100 chars after trimming). E.g.
人民日报 - business_type: Optional, default
all. Vertical string key, only the following are supported —all/account/article/video/live_stream/moments/news/book/listen/image/encyclopedia/weixin_index; any other value is rejected (422). - sort: Optional, default
default. Sort (result page “sort” dropdown, common to all verticals) —default/0 (relevance) /latest/1 (newest) /hot/2 (most liked); string key or integer, invalid values rejected (400). - publish_time: Optional, default
all. Publish time (result page “time” dropdown, common) —all/0 /day/1 /week/2 /half_year/3; string key or integer, invalid values rejected (400). - offset: Optional, default 0 (>=0). Pass
0for the first page; usecursorto paginate — offset alone does not work (it returns the first page every time). - cursor: Optional. Pagination cursor. Leave empty for the first page; for the next page pass back the
cursorreturned in the previous response (repeat the samesort/publish_time), and usecontinue_flagto check whether there are more pages. - raw: Optional, default True. True=raw search response; False=simplified parsing.
/fetch_search_videos (business_type=video + duration).
Return:
- Search result list (structure varies slightly by vertical)
Typical chains:
- 💡 To get Channels video detail (media download address / decode_key): video result items from search (
video/all) do not contain media directly — onlyexportId(+jumpInfo.extInfo.feedNonceId). To download / decrypt: takeexportId→ call the Channels V2 endpoint/api/v1/wechat_channels/v2/fetch_video_detail(passexport_id) to getmedia(url/url_token/decode_key) and the plainusername. See that endpoint’s docs for the full chain and decryption notes. - The
jumpInfo.userName(gh_…) of official account result items can be fed into the MP V2 endpoints/api/v1/wechat_mp/v2/fetch_account_profile/fetch_account_articles.
Response structure & JSON Path:
raw=false (simplified, snake_case):
- Keyword echo:
$.data.keyword - Effective vertical code (e.g. account=33554499):
$.data.business_type - Total results (null for some verticals):
$.data.total - Has next page:
$.data.continue_flag - Pagination cursor (pass back as the
cursorparameter for the next page):$.data.cursor - Server-side offset (informational only; passing it back alone does not paginate):
$.data.offset - Results on this page:
$.data.count - Flattened result item list (items of all boxes / subBoxes merged):
$.data.items[] - Single item (N is the index; fields vary by vertical; below is an
accountexample):- Title (with
<em>highlight):$.data.items[N].title - Description:
$.data.items[N].desc - Document id:
$.data.items[N].docID - Type name (e.g. “公众号”):
$.data.items[N].accTypeName - Jump info:
$.data.items[N].jumpInfo(.userName=gh_…,.nickName,.signature) - Video vertical items also carry
exportId(+jumpInfo.extInfo.feedNonceId) → see “Typical chains” above
- Title (with
raw=true (raw, default for this endpoint):
datatop level:keyword/business_type/results(items are not flattened)- Full result set:
$.data.results - Result box array:
$.data.results.data[]; each box’s results are in$.data.results.data[M].items[]and$.data.results.data[M].subBoxes[K].items[]— theitems[]ofraw=falseis the flattened merge of these. - Has next page:
$.data.continue_flag(top level for bothraw=true/raw=false) - Pagination cursor:
$.data.cursor— pass it back as thecursorparameter for the next page;$.data.offsetis only the server-side offset and passing it back alone does not paginate - Per-box total:
$.data.results.data[M].totalCount(corresponds tototalofraw=false) - For result iteration, prefer
raw=false(items already flattened) for cleaner paths.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python
搜视频号视频(时长/排序/时间筛选)/WeChat Channels Video Search
0.10 Credits / 次
/api/v1/wechat_search/v2/fetch_search_videos
[中文]
用途:
- 专搜视频号视频(
video垂类),并支持搜索结果页里的「时长」「不限/最新/最热」排序与「时间」下拉。 - 等价于综合搜索
/fetch_search(business_type=video)再叠加筛选,筛选项均实测有效。 - 价格:0.01$/次
- ⏱️ 由于微信服务器原因,本接口响应较慢,请将客户端请求超时(timeout)设置为 30 秒;timeout 设置过小会造成已扣费但收不到响应的情况。
- ⚠️ 大整数 ID 精度:响应中的
docID/feedNonceId等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JSNumber。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。
参数:
- keyword: 搜索关键词(去空白后 1-100 字)。示例
美食 - duration: 可选,默认
all。时长档(video 垂类专属)—— 不限all/0 / 短(<5min)short/1 / 中(5-10min)medium/2 / 长(20min+)long/3,字符串键或整数均可,非法值报错(400)。 - sort: 可选,默认
default。排序 —— 不限(相关性)default/0 / 最新(发布时间降序)latest/1 / 最热(点赞降序)hot/2,字符串键或整数均可,非法值报错(400)。 - publish_time: 可选,默认
all。发布时间 —— 不限all/0 / 最近一天day/1 / 最近七天week/2 / 最近半年half_year/3,字符串键或整数均可,非法值报错(400)。 - offset: 可选,默认 0(>=0)。首页传
0;翻页请用cursor(只传 offset 无效)。 - cursor: 可选。翻页游标,用法同综合搜索
/fetch_search。首页留空;翻页时把上一页响应返回的cursor原样传回(须同时重复上一页的duration/sort/publish_time)。 - raw: 可选,默认 True。True=原始搜索响应;False=精简解析。
返回:
- 视频号视频搜索结果列表(结构同综合搜索的
video垂类)
典型链路:
- 💡 排序下拉里的「账号」选项不是排序,而是切到公众号垂类 —— 用综合搜索
/fetch_search(business_type=account)。 - 💡 拿视频号详情(媒体下载地址 / decode_key):视频结果项不直接含媒体,只给
exportId(+jumpInfo.extInfo.feedNonceId)。要下载 / 解密:取exportId→ 走视频号 V2 接口/api/v1/wechat_channels/v2/fetch_video_detail(传export_id)拿media(url/url_token/decode_key)和明文username。结果字段与响应结构说明同/fetch_search。
[English]
Purpose:
- Search WeChat Channels videos specifically (
videovertical), with the result page’s “duration” filter, “relevance/newest/most-liked” sort, and “time” dropdown. - Equivalent to universal search
/fetch_search(business_type=video) plus filters; all filters are verified to work. - 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
docID/feedNonceIdin 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 JSNumber. 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:
- keyword: Search keyword (1-100 chars after trimming). E.g.
美食 - duration: Optional, default
all. Duration tier (Channels video only) —all/0 /short/1 (<5min) /medium/2 (5-10min) /long/3 (20min+); string key or integer, invalid values rejected (400). - sort: Optional, default
default. Sort —default/0 (relevance) /latest/1 (newest) /hot/2 (most liked); string key or integer, invalid values rejected (400). - publish_time: Optional, default
all. Publish time —all/0 /day/1 /week/2 /half_year/3; string key or integer, invalid values rejected (400). - offset: Optional, default 0 (>=0). Pass
0for the first page; usecursorto paginate (offset alone does not work). - cursor: Optional. Pagination cursor, same usage as universal search
/fetch_search. Leave empty for the first page; for the next page pass back thecursorfrom the previous response (repeat the sameduration/sort/publish_time). - raw: Optional, default True. True=raw search response; False=simplified parsing.
Return:
- Channels video search result list (same structure as the
videovertical of universal search)
Typical chains:
- 💡 The “account” option in the sort dropdown is not a sort — it switches to the official-account vertical; use universal search
/fetch_search(business_type=account). - 💡 To get Channels video detail (media download address / decode_key): video result items do not contain media directly — only
exportId(+jumpInfo.extInfo.feedNonceId). To download / decrypt: takeexportId→ call the Channels V2 endpoint/api/v1/wechat_channels/v2/fetch_video_detail(passexport_id) to getmedia(url/url_token/decode_key) and the plainusername. Result fields and response structure are the same as/fetch_search.
输入参数 (input 对象)
无需任何特殊参数(传空对象{} 即可)
cURL
Python