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].decodeKey/api/pricing/v1/endpoints with this endpoint path for the current unit price.Authorization: Bearer ********************{
"object_id": "14941130915890399732",
"export_id": "",
"object_nonce_id": "",
"share_url": "",
"raw": true
}curl --location 'https://api.tikomni.com/api/u1/v1/wechat_channels/v2/fetch_video_detail' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"object_id": "14941130915890399732",
"export_id": "",
"object_nonce_id": "",
"share_url": "",
"raw": true
}'{}