Explore our Marketplace to buy and sell APIs, services, and social media solutions. Connect with a vibrant community of developers, businesses, and creators!
media + decode_key)。id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。14941130915890399732。可从 fetch_user_videos / fetch_collection_videos 的视频 id 获取。exportId(须以 export/ 开头)。搜索返回的视频项往往只有 exportId、没有明文 object_id —— 此时直接传 export_id(会过期,需尽快用)。feedNonceId(纯数字),搭配上面两者提升命中率。https://weixin.qq.com/sph/…),示例 https://weixin.qq.com/sph/AH3sCoIPhH。仅在 object_id 与 export_id 都为空时使用。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)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 / .exportIdobjects 复数,camelCase): $.data.objects[0]objects[0]。url 字段可能无法正确打开视频页面 —— 微信对视频号页面做了防盗链处理。把 url 和 url_token 拼成一个完整 URL 再在浏览器 / HTTP 客户端打开。(注:能打开 = HTTP 200,不代表视频能正常播放,因为视频文件是加密的。)decode_key 字段和加密视频文件进行解密。decode_key,即使是同一个视频。请确保用于解密的 decode_key 与下载的加密视频文件来自同一次 API 响应,否则解密会失败。raw=false(推荐做媒体下载)—— $.data.media 是单个对象:$.data.media.url$.data.media.url_tokenurl + url_token,可直接用): $.data.media.full_url$.data.media.decode_keyraw=true —— $.data.objects[0].objectDesc.media[0]:$.data.objects[0].objectDesc.media[0].url$.data.objects[0].objectDesc.media[0].urlTokenurl + urlToken(拼接)$.data.objects[0].objectDesc.media[0].decodeKeymedia + decode_key).id in the response are 64-bit big integers beyond JavaScript's safe-integer range (2^53-1). Always receive / pass such IDs as strings (parse JSON with json-bigint or read them as text), never through JS Number. Swagger UI rounds the trailing digits of huge integers in its docs view — this is expected and does not affect the actual data returned by the API.14941130915890399732. Obtainable from the video id of fetch_user_videos / fetch_collection_videos.exportId from search results (must start with export/). Search results often only carry exportId without a plain object_id — pass export_id directly in that case (it expires, use it soon).feedNonceId (numeric) from search results, pairs with the above to improve hit rate.https://weixin.qq.com/sph/…), e.g. https://weixin.qq.com/sph/AH3sCoIPhH. Used only when both object_id and export_id are empty.share_url must be a Channels share URL (https://weixin.qq.com/sph/…).fetch_video_detail → response contains plain id (objectId), username (v2_…@finder), media (url / url_token / decode_key)username into → 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, using id from step 1)raw=false (simplified, recommended):data is a single video object:id (video objectId): $.data.idusername (v2_…@finder) / nickname / title: $.data.username etc.$.data.read_count / .like_count / .fav_count / .forward_count / .comment_count$.data.create_time / $.data.object_type / $.data.location$.data.media (see download/decryption below)raw=true (raw):$.data.baseResponse.ret$.data.objectResponses[0].objectId / .exportIdobjects, camelCase): $.data.objects[0]objects[0] of raw=true.url field directly may fail to open the video page — WeChat applies anti-hotlinking to Channels pages. Concatenate url and url_token into a complete URL, then open it in a browser / HTTP client. (Note: opening = HTTP 200, does not mean playable, the video file is encrypted.)decode_key field from the response together with the encrypted video file to decrypt it.decode_key on every request, even for the same video. Make sure the decode_key used for decryption and the downloaded encrypted file come from the same API response, otherwise decryption will fail.raw=false (recommended for media download) — $.data.media is a single object:$.data.media.url$.data.media.url_tokenurl + url_token, ready to use): $.data.media.full_url$.data.media.decode_keyraw=true — $.data.objects[0].objectDesc.media[0]:$.data.objects[0].objectDesc.media[0].url$.data.objects[0].objectDesc.media[0].urlTokenurl + urlToken (concatenate)$.data.objects[0].objectDesc.media[0].decodeKeycurl --location 'https://api.tikhub.io/api/v1/wechat_channels/v2/fetch_video_detail' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"object_id": "string",
"export_id": "string",
"object_nonce_id": "string",
"share_url": "string",
"raw": true
}'{
"code": 200,
"request_id": "string",
"message": "Request successful. This request will incur a charge.",
"message_zh": "请求成功,本次请求将被计费。",
"support": "Discord: https://discord.gg/aMEAS8Xsvz",
"time": "string",
"time_stamp": 0,
"time_zone": "America/Los_Angeles",
"docs": "string",
"cache_message": "string",
"cache_message_zh": "string",
"cache_url": "string",
"router": "",
"params": {},
"data": null
}