media(含 url / url_token / full_url / decode_key),可直接下载并解密。id / object_nonce_id 等为 64 位大整数,超出 JavaScript 安全整数范围(2^53-1)。请始终以字符串方式接收 / 传递这类 ID(解析 JSON 用 json-bigint 或按文本取值),勿让其经过 JS Number。Swagger UI 文档页对超大整数会末位舍入显示,属正常现象,不影响接口实际返回的数据。v2_…@finder 格式),示例 v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder(人民日报)。来源见 fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username 文档。up_continue 为真时,传上一页响应的 last_buffer 取下一页。(base64 含 +//= 等字符,故走 body 而非 query。)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].locationraw=true(原始):#$.data.baseResponse.retobject 单数,camelCase): $.data.object[N]$.data.upContinueFlag、$.data.lastBuffer(另附别名 $.data.last_buffer)$.data.contact(昵称/签名/认证 authInfo 等)、$.data.finderUserInfovideos[] 对应 raw=true 的 object[];nickname 取自 finderUserInfo / contact.nickname。url 可能打不开视频页面 —— 微信视频号 做了防盗链。把 url 和 url_token 拼成完整 URL 再用任意 HTTP 客户端下载(能打开 = HTTP 200,不代表能播放,文件是加密的)。decode_key 字段和加密视频文件进行解密。decode_key(即使同一视频)。务必保证 decode_key 与下载的加密文件来自同一次 API 响应,否则解密失败。raw=false(推荐做媒体下载)—— $.data.videos[N].media 是单个对象:$.data.videos[N].media.url$.data.videos[N].media.url_token$.data.videos[N].media.full_url$.data.videos[N].media.decode_keyraw=true —— media 嵌在 $.data.object[N].objectDesc.media[0](camelCase: url / urlToken / decodeKey,完整 URL = url + urlToken)。做媒体下载建议直接用 raw=false,路径更干净。media object (url / url_token / full_url / decode_key) ready for download and decryption.id / object_nonce_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.v2_…@finder format), e.g. v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder (People's Daily). See fetch_channel_info / fetch_video_detail / fetch_channel_id_to_username docs for how to obtain it.up_continue in the response is truthy, pass the previous page's last_buffer to get the next page. (base64 contains +//= characters, hence body instead of query.)raw=false (simplified, recommended):#$.data.username / $.data.nickname / $.data.count (videos on this page) / $.data.up_continue (has next page) / $.data.last_buffer (pagination cursor)$.data.videos[N] (N is the index):id (video objectId, feed into fetch_video_detail / fetch_video_comments): $.data.videos[N].idobject_nonce_id: $.data.videos[N].object_nonce_idusername / nickname / title: $.data.videos[N].username etc.$.data.videos[N].read_count / .like_count / .fav_count / .forward_count / .comment_count$.data.videos[N].create_time$.data.videos[N].locationraw=true (raw):#$.data.baseResponse.retobject, camelCase): $.data.object[N]$.data.upContinueFlag, $.data.lastBuffer (alias $.data.last_buffer also provided)$.data.contact (nickname/signature/authInfo etc.), $.data.finderUserInfovideos[] of raw=false corresponds to object[] of raw=true; nickname comes from finderUserInfo / contact.nickname.url field directly may fail to open the video page — WeChat Channels uses anti-hotlinking. Concatenate url and url_token into a full URL and download via any HTTP client (opening = HTTP 200, does not mean playable, the file is encrypted).decode_key field from the response together with the encrypted file to decrypt it.decode_key on every request (even for the same video). Make sure the decode_key and the downloaded encrypted file come from the same API response, otherwise decryption will fail.raw=false (recommended for media download) — $.data.videos[N].media is a single object:$.data.videos[N].media.url$.data.videos[N].media.url_token$.data.videos[N].media.full_url$.data.videos[N].media.decode_keyraw=true — media is nested at $.data.object[N].objectDesc.media[0] (camelCase: url / urlToken / decodeKey, full URL = url + urlToken). For media download, prefer raw=false for cleaner paths./api/pricing/v1/endpoints with this endpoint path for the current unit price.Authorization: Bearer ********************{
"username": "v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder",
"last_buffer": "",
"raw": true
}curl --location 'https://api.tikomni.com/api/u1/v1/wechat_channels/v2/fetch_user_videos' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "v2_060000231003b20faec8c6e4811dc1d4c602ee30b0771bbcf220c67926bb76ab7702ac335a53@finder",
"last_buffer": "",
"raw": true
}'{}