[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"api-page:itsrose-tiktok-api":3,"api-discussions:itsrose-tiktok-api":199},{"status":4,"api":5,"seo":194},"success",{"blocked":6,"description":7,"about":8,"stats":9,"name":11,"title":12,"slug":13,"logo":14,"created_at":15,"agent":16,"user":27,"endpoint_groups":30,"faqs":84,"features":127,"periodic_plans":128,"payasyougo_plans":190,"releases":191,"last_updated":192,"createdAtText":193},false,"Get any TikTok post as clean, typed JSON — caption, author, region, no-watermark video URL, cover art, music metadata, photo galleries and engagement stats. One request per post, no browser, no cookies, no proxy setup.","**TikTok content, normalised.**\n\nMost TikTok endpoints hand you a scraped blob that changes shape every few weeks. This one returns a single typed object per post — author, caption, region, no-watermark video, music, covers, photo galleries and engagement stats — with the same envelope on success and failure, so `data` is either a post or `null` and never \"sometimes a string\".\n\n**What it is good at**\n\n- Post detail for anything you already have a link or ID for: feeds, moderation queues, UGC galleries, ad-creative archives.\n- Stats read live at request time — play, like, comment, share, download and collect counts, not a stale cache.\n- Photo and slideshow posts, which most \"downloader\" endpoints quietly drop.\n- Music metadata, including the original-audio flag, for licensing and trend work.\n\n**How it runs**\n\nRequests terminate at the JoJ gateway at the edge; the fetcher is monitored on latency and success rate, and non-200 lookups are billed **0** — deleted, private and region-blocked posts cost you nothing.\n\n**What it is not**\n\nIt is not the official TikTok API and is not affiliated with or endorsed by TikTok. It reads public content only: no private accounts, no DMs, no follower graphs. Use it in line with TikTok's terms and the law where you operate.\n\nQuestions, a bulk requirement or an endpoint you need? Message the provider from the Discussions tab — roadmap items are driven by what buyers actually ask for.",{"score":10},null,"TikTok Content","TikTok Content API","itsrose-tiktok-api","https://cdn.jojapi.com/api/7f7ceed5-a6ff-425b-bb52-8fe1d3cc5899","2026-11-09 22:23:23",{"enabled":17,"closed":10,"request_enabled":17,"catalog_url":18,"discovery_url":19,"directory_url":20,"rails":21,"networks":24,"docs":26},true,"https://tiktok-api.jojapi.net/_jojapi/agent/plans","https://tiktok-api.jojapi.net/.well-known/x402","https://agents.jojapi.net/apis/itsrose-tiktok-api",[22,23],"x402","mpp",[25],"eip155:8453","https://docs.jojapi.com/consumers/agents",{"nick":28,"name":29,"verified":6,"website":10},"frieren","David",[31],{"endpoints":32,"name":83,"description":39,"ungrouped":6},[33],{"blocked":6,"hidden":6,"deprecation":10,"agent_price":10,"credits":10,"flexible_credits_description":10,"consumptions":34,"description":41,"method":42,"name":43,"url_path":44,"root_url":45,"parameters":46,"responses":61,"result_stats":76},[35],{"name":36,"slug":37,"cost":38,"label":39,"avg":40},"Posts","posts","1","",0.33,"1 post per request. Failed lookups (deleted, private, region-blocked) bill 0.","GET","Get post content","/v1/post","https://tiktok-api.jojapi.net",{"url":47,"header":52,"post":58,"body":59,"path":60},[48],{"key":49,"example":39,"schema":10,"example_disabled":6,"example_type":50,"value_type":50,"enum_values":10,"default_value":39,"required":17,"name":51,"description":39},"url","string","TikTok post url",[53],{"key":54,"is_auth":17,"example":55,"example_disabled":17,"example_type":50,"name":56,"description":55,"required":17,"always_error":57},"X-JoJAPI-Key","You must log in to get API key","JoJ API Key","Please log in to get API key",[],[],[],[62,67,72],{"status":63,"status_code":64,"description":39,"schema":65,"examples":66,"example":39},"200",200,"{\"type\":\"object\",\"properties\":{\"ok\":{\"type\":\"boolean\",\"enum\":[true],\"title\":\"Success indicator\",\"description\":\"Indicates that the response represents a successful operation.\"},\"code\":{\"type\":\"number\",\"title\":\"Response code\",\"description\":\"The numeric code representing the success status.\"},\"message\":{\"type\":\"string\",\"title\":\"Response message\",\"description\":\"A human-readable message providing additional information.\"},\"data\":{\"type\":\"object\",\"properties\":{\"aweme_id\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"region\":{\"type\":\"string\"},\"author\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"unique_id\":{\"type\":\"string\"},\"nickname\":{\"type\":\"string\"},\"avatar\":{\"type\":\"string\"}},\"required\":[\"id\",\"unique_id\",\"nickname\",\"avatar\"],\"additionalProperties\":false},\"title\":{\"type\":\"string\"},\"media_list\":{\"type\":\"object\",\"properties\":{\"cover\":{\"type\":\"object\",\"properties\":{\"thumbnail\":{\"type\":\"string\",\"format\":\"uri\"},\"ai_dynamic_cover\":{\"type\":\"string\",\"format\":\"uri\"},\"origin_cover\":{\"type\":\"string\",\"format\":\"uri\"}},\"required\":[\"thumbnail\",\"ai_dynamic_cover\",\"origin_cover\"],\"additionalProperties\":false},\"watermark\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"format\":\"uri\"},\"size\":{\"type\":\"number\"}},\"required\":[\"url\",\"size\"],\"additionalProperties\":false},\"no_watermak\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"format\":\"uri\"},\"size\":{\"type\":\"number\"}},\"required\":[\"url\",\"size\"],\"additionalProperties\":false},\"music\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"cover\":{\"type\":\"string\"},\"author\":{\"type\":\"string\"},\"is_original\":{\"type\":\"boolean\"},\"duration\":{\"type\":\"number\"}},\"required\":[\"id\",\"title\",\"url\",\"cover\",\"author\",\"is_original\",\"duration\"],\"additionalProperties\":false},\"images\":{\"default\":null,\"nullable\":true,\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"uri\"}}},\"required\":[\"cover\",\"watermark\",\"no_watermak\",\"music\",\"images\"],\"additionalProperties\":false},\"statistic\":{\"type\":\"object\",\"properties\":{\"play_count\":{\"type\":\"number\"},\"digg_count\":{\"type\":\"number\"},\"comment_count\":{\"type\":\"number\"},\"share_count\":{\"type\":\"number\"},\"download_count\":{\"type\":\"number\"},\"collect_count\":{\"type\":\"number\"}},\"required\":[\"play_count\",\"digg_count\",\"comment_count\",\"share_count\",\"download_count\",\"collect_count\"],\"additionalProperties\":false}},\"required\":[\"aweme_id\",\"id\",\"region\",\"author\",\"title\",\"media_list\",\"statistic\"],\"additionalProperties\":false},\"errors\":{\"type\":\"string\",\"nullable\":true,\"enum\":[null],\"title\":\"No errors on success responses\",\"description\":\"The errors field is always null for success responses.\"},\"meta\":{\"default\":{},\"title\":\"Metadata\",\"description\":\"Additional metadata related to the response. **Do not** rely on this field for any critical information, as it may be omitted or changed without notice.\",\"type\":\"object\",\"additionalProperties\":{}}},\"required\":[\"ok\",\"code\",\"message\",\"data\",\"errors\",\"meta\"],\"additionalProperties\":false}",[],{"status":68,"status_code":68,"description":69,"schema":70,"examples":71,"example":39},"4XX","Client error","{\"type\":\"object\",\"properties\":{\"ok\":{\"type\":\"boolean\",\"enum\":[false],\"title\":\"Failure indicator\",\"description\":\"Indicates that the response represents a failed operation.\"},\"code\":{\"type\":\"number\",\"title\":\"Response code\",\"description\":\"The numeric code representing the failure status.\"},\"message\":{\"type\":\"string\",\"title\":\"Response message\",\"description\":\"A human-readable message providing additional information.\"},\"data\":{\"type\":\"string\",\"nullable\":true,\"enum\":[null],\"title\":\"No data on failure responses\",\"description\":\"The data field is always null for failure responses.\"},\"errors\":{\"default\":{},\"title\":\"Error details\",\"description\":\"The errors field contains details about the failure. It is optional and may be omitted if no additional error information is provided.\",\"type\":\"object\",\"additionalProperties\":{}},\"meta\":{\"default\":{},\"title\":\"Metadata\",\"description\":\"Additional metadata related to the response. **Do not** rely on this field for any critical information, as it may be omitted or changed without notice.\",\"type\":\"object\",\"additionalProperties\":{}}},\"required\":[\"ok\",\"code\",\"message\",\"data\",\"errors\",\"meta\"],\"additionalProperties\":false,\"description\":\"Representing a failed response.\",\"title\":\"Failure Response Schema\"}",[],{"status":73,"status_code":73,"description":74,"schema":70,"examples":75,"example":39},"5XX","Server error",[],{"x2":77,"x3":78,"x4":79,"x5":80,"uptime":81,"avg_latency":82,"avg_credits":78},"66.66","0.00","33.33","0.01","99.99","868","Post",[85,88,91,94,97,100,103,106,109,112,115,118,121,124],{"question":86,"answer":87},"What does one credit buy?","One successfully resolved post. A request that returns a post bills 1 credit; a lookup that fails — deleted, private, region-blocked, bad URL — bills 0. Credits are never consumed by 4xx or 5xx responses.",{"question":89,"answer":90},"What can I send to the endpoint?","A post URL (https://www.tiktok.com/@user/video/123…), a short vm.tiktok.com link. Send them as the url parameter.",{"question":92,"answer":93},"Do I need a TikTok account, cookies or a proxy?","No. Authentication is your JoJ API key only. There is nothing to log in to, no cookies to refresh and no proxy list to maintain.",{"question":95,"answer":96},"Is the video watermark-free?","Yes. `media_list.no_watermak.url` is the clean MP4 (the field name keeps TikTok's original spelling); `media_list.watermark.url` is the watermarked copy. Both carry a size in bytes.",{"question":98,"answer":99},"Does it work with photo and slideshow posts?","Yes. `media_list.images` is an array of image URLs for photo posts and null for videos, so one code path handles both.",{"question":101,"answer":102},"How fresh is the data?","Every request is fetched live. Engagement counts are as of the moment of the request — nothing is served from a shared cache.",{"question":104,"answer":105},"What happens with private, deleted or region-blocked posts?","The call returns HTTP 404 with `ok: false`, a message explaining why, and `data: null`. Your code branches once on `ok`; you are not charged.",{"question":107,"answer":108},"Is this the official TikTok API?","No. It is an independent, unaffiliated service that reads public post data. It is not endorsed by TikTok and does not touch private accounts, DMs or follower data.",{"question":110,"answer":111},"Can I use it in a commercial product?","Yes, under the JoJ API terms. You are responsible for how you use the content and for the rights attached to it — the API gives you the data, not a licence to the videos or music in it.",{"question":113,"answer":114},"How do quotas work?","Fixed plans include a monthly post quota that resets each billing period; unused posts do not carry over. Every response returns `X-Jojapi-Posts-Used` so you can meter from your own code.",{"question":116,"answer":117},"What happens when I exceed my rate limit?","You get HTTP 429 with a retry hint. Rate limits are per plan (3 to 120 requests per second); your quota is not touched by a throttled request.",{"question":119,"answer":120},"Can I fetch many posts at once?","One post per request today — run them in parallel, the rate limit is per second, not per minute. A bulk endpoint metered per returned post is next on the roadmap; message me if you need it and it moves up.",{"question":122,"answer":123},"Can AI agents call it?","Yes. Every JoJ API is also an MCP server (mcp.jojapi.com/itsrose-tiktok-api), and agents can pay per request with x402 or MPP without opening an account.",{"question":125,"answer":126},"How do I cancel or get a refund?","Cancel any time from Workspace → Subscriptions; access runs to the end of the period. Refunds follow the JoJ refund policy, and a plan that never worked for you is refunded without argument.",[],[129,146,157,168,179],{"type":130,"slug":131,"blocked":6,"period":132,"currency":133,"pricing":134,"rate_limit":138,"objects":140,"name":144,"display_name":144,"features":145},"periodic","pinzuiui4wneqz2tlvojpui0","1 MONTH","usd",{"price":135,"credits":135,"past_due_timeout_num":136,"past_due_timeout_type":137},0,3,"DAY",{"max_requests":136,"time_window":139},1,[141],{"id":142,"name":36,"slug":37,"quota":143,"tiers":10},"n422f32ae",1000,"Free",[],{"type":130,"slug":147,"blocked":6,"period":132,"currency":133,"pricing":148,"rate_limit":150,"objects":152,"name":155,"display_name":155,"features":156},"4o2unrthiwq3i5x498tdtwiv",{"price":149,"credits":135,"past_due_timeout_num":136,"past_due_timeout_type":137},15,{"max_requests":151,"time_window":139},10,[153],{"id":142,"name":36,"slug":37,"quota":154,"tiers":10},20000,"Starter",[],{"type":130,"slug":158,"blocked":6,"period":132,"currency":133,"pricing":159,"rate_limit":161,"objects":163,"name":166,"display_name":166,"features":167},"0ads8zhntt4dch2dj2x9v4c8",{"price":160,"credits":135,"past_due_timeout_num":136,"past_due_timeout_type":137},49,{"max_requests":162,"time_window":139},25,[164],{"id":142,"name":36,"slug":37,"quota":165,"tiers":10},80000,"Growth",[],{"type":130,"slug":169,"blocked":6,"period":132,"currency":133,"pricing":170,"rate_limit":172,"objects":174,"name":177,"display_name":177,"features":178},"2h78nw8o3xgsepl9cs34dtt2",{"price":171,"credits":135,"past_due_timeout_num":136,"past_due_timeout_type":137},149,{"max_requests":173,"time_window":139},60,[175],{"id":142,"name":36,"slug":37,"quota":176,"tiers":10},280000,"Scale",[],{"type":130,"slug":180,"blocked":6,"period":132,"currency":133,"pricing":181,"rate_limit":183,"objects":185,"name":188,"display_name":188,"features":189},"hbwvfiog28he4cgrocivv4qk",{"price":182,"credits":135,"past_due_timeout_num":136,"past_due_timeout_type":137},399,{"max_requests":184,"time_window":139},120,[186],{"id":142,"name":36,"slug":37,"quota":187,"tiers":10},900000,"Business",[],[],[],"2026-11-09 23:35:59","2026-11-09",{"canonical":195,"page_title":196,"meta":197},"https://jojapi.com/hub/api/itsrose-tiktok-api","TikTok Content API Documentation & Playground - JoJ API",{"description":7,"keywords":198},"API,API Documentation,API Playground,Plans & Pricing,TikTok Content,frieren",{"status":4,"discussions":200},[]]