Douyin / TikTok API

RandallFlare worker · port of Evil0ctal/Douyin_TikTok_Download_API · token source: env

鉴权 / Auth

的接口需要鉴权,两种方式任选其一(与 Meting-API 一致):

primaryId 为该接口主标识(如 fetch_one_video 的 aweme_id、tiktok fetch_one_video 的 itemId、hybrid 的 url)。

Douyin Web /api/douyin/web

GET🔒 /fetch_one_video?aweme_id=
GET🔒 /fetch_user_post_videos?sec_user_id=&max_cursor=0&count=20
GET🔒 /fetch_user_like_videos?sec_user_id=&max_cursor=0&counts=20
GET🔒 /fetch_user_mix_videos?mix_id=&max_cursor=0&counts=20
GET🔒 /handler_user_profile?sec_user_id=
GET🔒 /fetch_video_comments?aweme_id=&cursor=0&count=20
GET🔒 /fetch_video_comment_replies?item_id=&comment_id=&cursor=0&count=20
GET🔒 /fetch_user_live_videos?webcast_id=
GET🔒 /fetch_user_live_videos_by_room_id?room_id=
GET🔒 /fetch_live_gift_ranking?room_id=&rank_type=30
GET /generate_real_msToken · /generate_ttwid · /generate_verify_fp · /generate_s_v_web_id
GET /generate_x_bogus?url=&user_agent= · /generate_a_bogus?url=&user_agent=
GET /get_aweme_id?url= · /get_sec_user_id?url= · /get_webcast_id?url=
POST /get_all_aweme_id · /get_all_sec_user_id · /get_all_webcast_id (body: ["url", ...])

TikTok Web /api/tiktok/web

GET🔒 /fetch_one_video?itemId=
GET🔒 /fetch_user_profile?secUid=&uniqueId=
GET🔒 /fetch_user_post?secUid=&cursor=0&count=35
GET🔒 /fetch_user_like?secUid=&cursor=0&count=35
GET🔒 /fetch_user_mix?mixId=&cursor=0&count=30
GET🔒 /fetch_post_comment?aweme_id=&cursor=0&count=20
GET🔒 /fetch_post_comment_reply?item_id=&comment_id=&cursor=0&count=20
GET🔒 /fetch_user_fans?secUid=&count=30 · /fetch_user_follow?secUid=&count=30
GET /generate_real_msToken · /generate_ttwid?cookie= · /generate_xbogus?url=&user_agent=
GET /get_aweme_id?url= · /get_sec_user_id?url= · /get_unique_id?url= (+ POST get_all_*)

TikTok App /api/tiktok/app

GET🔒 /fetch_one_video?aweme_id=

Hybrid /api/hybrid

GET🔒 /video_data?url=&minimal=false&refresh=0&proxy=0 自动识别 douyin/tiktok
minimal=true 返回统一精简结构;proxy=1(需 minimal=true)把媒体直链改写成下面的 /proxy 缓存链接;refresh=1 跳过元数据缓存强刷。

Download

GET🔒 /download?url=&with_watermark=false 直接 stream 视频/图片

反代 + R2 缓存 /proxy

GET🔒 /proxy?platform=douyin|tiktok&id=&kind=nwm&download=0&refresh=0
按 ID 稳定缓存的媒体反代:worker 用正确的 Referer 拉取 CDN 字节并存入 R2(key = media/{platform}/{id}/{kind}),签名 url 过期也照样命中;支持 Range(视频拖动)。
kind: nwm(无水印视频 HQ)· wm(有水印视频)· cover(封面)· image0/1/…(无水印图)· imagewm0/1/…(有水印图)。
鉴权签名串为 "proxy{platform}{id}"(与 kind 无关,一个 auth 覆盖该作品所有 kind)。video_data?proxy=1 重写出的链接已自带 &auth=,可直接当播放器 src。
元数据(解析后的视频信息)以 JSON 文件缓存在 R2 meta/{platform}/{id}.json,默认 1 小时(env META_CACHE_TTL 可调,?refresh=1 强刷)。需要绑定 R2:env DOUYIN_R2(未绑定则全部退化为不缓存、实时直连)。