{"openapi":"3.1.0","info":{"title":"searchtok API","version":"1.0.0","description":"Find the TikToks and Instagram Reels worth copying: outliers, hooks and creators, every number from real posts.\n\nEvery endpoint is a searchtok tool (the same ones our MCP server and agent use). Requests and responses are JSON.\n\nSend an API key from https://searchtok.app/app/settings/keys as `Authorization: Bearer st_live_...`. Every response says what it cost in the `credits-used` and `credits-left` headers. Up to 60 requests a minute per key.\n\nErrors are always `{ \"error\": { \"code\", \"message\", \"hint\" } }`; the hint says what to try next. Failed calls are refunded.\n\nCredit costs are provisional."},"externalDocs":{"description":"Docs, and llms.txt for agents","url":"https://searchtok.app/docs/api"},"servers":[{"url":"https://searchtok.app/api/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/search":{"post":{"operationId":"search_content","summary":"Search TikTok and Reels","description":"Find the TikToks and Instagram Reels that did best for a topic or niche, ranked by outlier score (a post's views ÷ its account's usual views). searchtok's main tool.\nUse it for: what's working in a niche, viral examples of a format, hooks and ideas to copy.\nDon't use it for: a known account (get_account), a known post (analyze_post), posts like a given post (find_similar), finding creators (find_accounts).\nEach query runs several searches plus searchtok's index, removes repeats and scores each post. Several angles or niches? Pass them together as queries (up to 5): they run at the same time, much faster than a call each.\nReturns compact rows (id, url, handle, views, outlier_score with its explanation, caption, hook, format), what was searched and a dashboard link. Top rows carry their hook word for word, so analyze_post is rarely needed just to quote one. Paid posts are flagged paid.\n\nCost: 20 per query credits.","x-credits":"20 per query","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"description":"What to look for, in the words people would search on TikTok: a niche, topic or format (\"habit tracker app\", \"smile transformation\"). Short beats long.","type":"string","minLength":2,"maxLength":120},"queries":{"description":"Up to 5 searches in one call, run at the same time (several angles on a niche, or several niches). Faster than one call per query; each query costs what a single search costs. Rows say which queries found them.","minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":2,"maxLength":120}},"platforms":{"description":"Default: both","minItems":1,"type":"array","items":{"type":"string","enum":["tiktok","instagram"]}},"timeframe":{"description":"Only posts from this long ago or newer. Default: any time","type":"string","enum":["7d","30d","90d","1y"]},"language":{"description":"Two-letter language, e.g. \"en\". Posts in other languages are dropped; posts whose language is unknown are kept","type":"string","minLength":2,"maxLength":10},"region":{"description":"Two-letter country that biases TikTok results (it doesn't filter them)","type":"string","minLength":2,"maxLength":2},"limit":{"description":"Rows to return. Default 15 (more for several queries). Results are cut to about 2k tokens (plus about 1k per extra query); the rest are at `link`","type":"integer","minimum":1,"maximum":30}}},"example":{"query":"habit tracker app"}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"search_id":{"type":"string","description":"This search's id in searchtok"},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"searchtok post id, e.g. \"tiktok:7301234567890\". Pass it to analyze_post or find_similar."},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"description":"YYYY-MM-DD","type":["string","null"]},"views":{"type":["number","null"]},"outlier_score":{"description":"views / the account's usual (median) views. 3+ is a strong outlier. Null = no score, see outlier_explained.","type":["number","null"]},"outlier_explained":{"type":"string"},"caption":{"description":"The caption, cut to about 80 characters","type":["string","null"]},"hook":{"description":"The post's hook, word for word: from its analysis, or (hook_from: transcript) the first words said, cut from its transcript by code. Null when there's neither","type":["string","null"]},"format":{"type":["string","null"]},"also_on":{"description":"Ids of the same video cross-posted elsewhere","type":"array","items":{"type":"string"}},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]},"hook_from":{"description":"Set when the hook is the first words said, from the transcript (can be song lyrics). Left out when it's from an analysis","type":"string","const":"transcript"},"why_matched":{"type":"array","items":{"type":"string"},"description":"Which searches found it"},"queries":{"description":"Which of the queries found it (several queries only)","type":"array","items":{"type":"string"}},"paid":{"description":"Set on an ad, sponsored post or paid partnership: show it flagged as paid. Left out otherwise","type":"boolean","const":true}},"required":["id","platform","url","handle","posted_at","views","outlier_score","outlier_explained","caption","hook","format","why_matched"],"additionalProperties":false},"description":"Best first: id, platform, url, handle, posted_at, views, outlier_score, outlier_explained, caption, hook, format, why_matched"},"total_found":{"type":"number","description":"Distinct posts found before the limit"},"searched":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram"]},"search":{"type":"string","description":"What was searched, e.g. 'keyword \"habit tracker app\"' or '#habittracker'"},"found":{"description":"Posts it returned. Null when it failed or was too slow","type":["number","null"]},"error":{"type":"string"},"query":{"description":"Which of the queries it was for (several queries only)","type":"string"}},"required":["platform","search","found"],"additionalProperties":false},"description":"Each search that ran, and how many posts it returned"},"missed":{"description":"Calls that failed or were too slow. Results may be thinner than usual","type":"array","items":{"type":"string"}},"left_out":{"description":"Weaker rows (under 1x their account's usual views, or no score) left out. They're at `link`","type":"number"},"truncated":{"description":"Rows left out to keep this result short. They're at `link`","type":"number"},"note":{"description":"Said when there's nothing to show or no scores, with what to try","type":"string"},"link":{"type":"string","description":"This search in the searchtok dashboard"}},"required":["search_id","rows","total_found","searched","link"],"additionalProperties":false},"example":{"search_id":"00000000-0000-4000-8000-000000000001","rows":[{"id":"tiktok:7377548155597950251","platform":"tiktok","url":"https://www.tiktok.com/@spaceyflower/video/7377548155597950251","handle":"spaceyflower","posted_at":"2024-06-07","views":565678,"outlier_score":1457.9,"outlier_explained":"1457.9x this account's usual views (median 388 over its last 20 posts)","caption":"#habittracker #habittracker2024 #BulletJournal #bulletjournaling #yearinpixels…","hook":null,"format":"video","cover_url":"https://searchtok.app/api/c/tiktok:7377548155597950251","why_matched":["#habittracker"]},{"id":"tiktok:7575957182185835831","platform":"tiktok","url":"https://www.tiktok.com/@trevorrgetsholistic/video/7575957182185835831","handle":"trevorrgetsholistic","posted_at":"2025-11-23","views":1659563,"outlier_score":1116,"outlier_explained":"1116x this account's usual views (median 1.5k over its last 18 posts)","caption":"The habit tracker set up I’ve been loving for the past 75 days. Full credit to…","hook":null,"format":"video","cover_url":"https://searchtok.app/api/c/tiktok:7575957182185835831","why_matched":["#habittracker"]}],"total_found":111,"searched":[{"platform":"instagram","search":"reels search \"habit tracker app\"","found":9},{"platform":"instagram","search":"top \"habit tracker app\"","found":12}],"link":"https://searchtok.app/app/searches/00000000-0000-4000-8000-000000000001"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/accounts/find":{"post":{"operationId":"find_accounts","summary":"Find creators and brands","description":"Find TikTok or Instagram creators and brands in a niche, with how well their posts do: followers, usual (median) views and outlier rate (how often a post gets 3x+ their usual views).\nUse it for: creators to learn from or partner with, competitors in a niche, accounts that reliably go viral.\nDon't use it for: one account you already know (get_account), a brand's website or name (analyze_brand), posts (search_content).\nReturns up to 8 accounts (6 on Instagram), most reliable outlier-makers first, each with id, handle, url, followers, median views, outlier rate and posts per week. Never returns or infers gender, ethnicity or age.\n\nCost: 15 credits.","x-credits":"15","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":100,"description":"A niche or topic (\"habit tracker app\"), or a name to look up"},"platform":{"description":"Default: tiktok","type":"string","enum":["tiktok","instagram"]}},"required":["query"]},"example":{"query":"habit tracker app"}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"id":{"description":"searchtok account id (null when the platform didn't give one). Pass the handle to get_account for more","type":["string","null"]},"platform":{"type":"string","enum":["tiktok","instagram"]},"handle":{"type":"string"},"display_name":{"type":["string","null"]},"url":{"type":"string"},"followers":{"type":["number","null"]},"verified":{"type":["boolean","null"]},"bio":{"description":"Cut to about 80 characters","type":["string","null"]},"median_views":{"description":"The account's usual views: median of its latest 30 posts that are 2+ days old","type":["number","null"]},"posts_sampled":{"type":"number"},"baseline_explained":{"type":"string"},"outlier_rate":{"description":"Share of those posts that got 3x+ the account's usual views (0.2 = 1 in 5). Null under 8 posts","type":["number","null"]},"posts_per_week":{"type":["number","null"]}},"required":["id","platform","handle","display_name","url","followers","verified","bio","median_views","posts_sampled","baseline_explained","outlier_rate","posts_per_week"],"additionalProperties":false}},"missed":{"type":"array","items":{"type":"string"}},"truncated":{"type":"number"},"note":{"type":"string"}},"required":["rows"],"additionalProperties":false},"example":{"rows":[{"id":"tiktok:7597922150545507350","platform":"tiktok","handle":"completerapp","display_name":"Completer - Habit Tracker","url":"https://www.tiktok.com/@completerapp","followers":667,"verified":null,"bio":null,"median_views":674,"posts_sampled":30,"baseline_explained":"median 674 views over its last 30 posts (2+ days old)","outlier_rate":0.17,"posts_per_week":1.1},{"id":"tiktok:7285627514402653186","platform":"tiktok","handle":"thehabittracker","display_name":"The Habit Tracker","url":"https://www.tiktok.com/@thehabittracker","followers":1701,"verified":null,"bio":null,"median_views":746,"posts_sampled":25,"baseline_explained":"median 746 views over its last 25 posts (2+ days old)","outlier_rate":0.08,"posts_per_week":0.5}]}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/accounts/{platform}/{handle}":{"get":{"operationId":"get_account","summary":"Look up an account","description":"Look up one TikTok or Instagram account: profile, its usual (median) views, outlier rate, posting rate, format mix and its best recent posts by outlier score.\nUse it for: checking a creator or competitor you already know by handle or url, and following up on an account from another searchtok result.\nDon't use it for: finding accounts (find_accounts), a brand known only by website or name, or comparing brands (analyze_brand).\nReturns the profile, numbers (all worked out from its latest 30 posts) and up to 5 top recent posts with outlier scores and ids for analyze_post.\n\nCost: 3 credits.","x-credits":"3","parameters":[{"name":"platform","in":"path","required":true,"description":"tiktok or instagram","schema":{"description":"Default: tiktok (ignored when url is given)","type":"string","enum":["tiktok","instagram"]}},{"name":"handle","in":"path","required":true,"description":"The account's handle, with or without \"@\"","schema":{"description":"e.g. \"@name\". Give platform too if it's Instagram","type":"string","minLength":1,"maxLength":60}}],"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram"]},"handle":{"type":"string"},"display_name":{"type":["string","null"]},"url":{"type":"string"},"followers":{"type":["number","null"]},"following":{"type":["number","null"]},"posts":{"type":["number","null"]},"likes_total":{"type":["number","null"]},"verified":{"type":["boolean","null"]},"bio":{"type":["string","null"]}},"required":["id","platform","handle","display_name","url","followers","following","posts","likes_total","verified","bio"],"additionalProperties":false},"numbers":{"type":"object","properties":{"median_views":{"description":"The account's usual views: median of its latest 30 posts that are 2+ days old","type":["number","null"]},"posts_sampled":{"type":"number"},"baseline_explained":{"type":"string"},"outlier_rate":{"description":"Share of those posts that got 3x+ the account's usual views (0.2 = 1 in 5). Null under 8 posts","type":["number","null"]},"posts_per_week":{"type":["number","null"]},"format_mix":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"},"description":"Share of recent posts per format"}},"required":["median_views","posts_sampled","baseline_explained","outlier_rate","posts_per_week","format_mix"],"additionalProperties":false},"top_outliers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"searchtok post id, e.g. \"tiktok:7301234567890\". Pass it to analyze_post or find_similar."},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"description":"YYYY-MM-DD","type":["string","null"]},"views":{"type":["number","null"]},"outlier_score":{"description":"views / the account's usual (median) views. 3+ is a strong outlier. Null = no score, see outlier_explained.","type":["number","null"]},"outlier_explained":{"type":"string"},"caption":{"description":"The caption, cut to about 80 characters","type":["string","null"]},"hook":{"description":"The post's hook, quoted, once the post has been analysed. Null until then.","type":["string","null"]},"format":{"type":["string","null"]},"also_on":{"description":"Ids of the same video cross-posted elsewhere","type":"array","items":{"type":"string"}},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]},"paid":{"description":"Set on an ad, sponsored post or paid partnership: show it flagged as paid. Left out otherwise","type":"boolean","const":true}},"required":["id","platform","url","handle","posted_at","views","outlier_score","outlier_explained","caption","hook","format"],"additionalProperties":false},"description":"Its best recent posts by outlier score"},"link":{"type":"string"}},"required":["account","numbers","top_outliers","link"],"additionalProperties":false},"example":{"account":{"id":"tiktok:7597922150545507350","platform":"tiktok","handle":"completerapp","display_name":"Completer - Habit Tracker","url":"https://www.tiktok.com/@completerapp","followers":667,"following":493,"posts":79,"likes_total":13861,"verified":false,"bio":"Build better habits with a simple habit tracker. Download \"COMPLETER\" on the App Store. 📲 getcompleter.app"},"numbers":{"median_views":674,"posts_sampled":30,"baseline_explained":"median 674 views over its last 30 posts (2+ days old)","outlier_rate":0.17,"posts_per_week":1.1,"format_mix":{"carousel":0.87,"video":0.13}},"top_outliers":[{"id":"tiktok:7616340301648563488","platform":"tiktok","url":"https://www.tiktok.com/@completerapp/photo/7616340301648563488","handle":"completerapp","posted_at":"2026-03-12","views":216733,"outlier_score":344,"outlier_explained":"344x this account's usual views (median 630 over its last 29 posts)","caption":"Discover my favorite iPhone apps for 2026 — handy tools to stay productive, org…","hook":null,"format":"carousel","cover_url":"https://searchtok.app/api/c/tiktok:7616340301648563488"},{"id":"tiktok:7621653006248987936","platform":"tiktok","url":"https://www.tiktok.com/@completerapp/photo/7621653006248987936","handle":"completerapp","posted_at":"2026-03-26","views":86902,"outlier_score":137.9,"outlier_explained":"137.9x this account's usual views (median 630 over its last 29 posts)","caption":"Some of my favorite widgets to keep on the Lock Screen #iphone #widgets #techto…","hook":null,"format":"carousel","cover_url":"https://searchtok.app/api/c/tiktok:7621653006248987936"}],"link":"https://searchtok.app/app/accounts/tiktok%3A7597922150545507350"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/brands/analyze":{"post":{"operationId":"analyze_brand","summary":"Analyse a brand","description":"Analyse a brand's or creator's organic TikTok and Instagram from its website, handle or name, optionally side by side with up to 3 others (compare).\nUse it for: competitor research, 'how is X doing on TikTok', benchmarking your brand against others, a brand known only by its website.\nDon't use it for: one handle when you only need its profile and top posts (get_account, cheaper), finding brands in a niche (find_accounts), ads (organic posts only).\nA website is read for its TikTok and Instagram links; a name is looked up with TikTok account search (resolved_from says how, check it). Returns per account: followers, usual (median) views, outlier rate, posts per week, format mix, last-30-days vs previous-30-days posting and views, top outlier posts and quoted hooks of analysed posts. Every number is worked out in code; interpret them yourself.\n\nCost: 5 per brand (the brand plus each one compared) credits.","x-credits":"5 per brand (the brand plus each one compared)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"website":{"description":"The brand's site, e.g. \"acme.com\". Its TikTok and Instagram links are read from the page","type":"string","minLength":3,"maxLength":200},"handle":{"description":"A TikTok or Instagram handle, e.g. \"@acme\"","type":"string","minLength":1,"maxLength":60},"platform":{"description":"The handle's platform. Default: tiktok","type":"string","enum":["tiktok","instagram"]},"name":{"description":"The brand's name, looked up with TikTok account search","type":"string","minLength":2,"maxLength":80},"compare":{"description":"Up to 3 other brands, same fields, analysed side by side","maxItems":3,"type":"array","items":{"type":"object","properties":{"website":{"description":"The brand's site, e.g. \"acme.com\". Its TikTok and Instagram links are read from the page","type":"string","minLength":3,"maxLength":200},"handle":{"description":"A TikTok or Instagram handle, e.g. \"@acme\"","type":"string","minLength":1,"maxLength":60},"platform":{"description":"The handle's platform. Default: tiktok","type":"string","enum":["tiktok","instagram"]},"name":{"description":"The brand's name, looked up with TikTok account search","type":"string","minLength":2,"maxLength":80}}}}}},"example":{"handle":"@completerapp","compare":[{"handle":"@thehabittracker"}]}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"brands":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string","description":"What was asked for"},"resolved_from":{"type":"string","description":"How the accounts were found. Check it when it says 'closest search result'"},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram"]},"handle":{"type":"string"},"url":{"type":"string"},"followers":{"type":["number","null"]},"median_views":{"type":["number","null"]},"posts_sampled":{"type":"number"},"outlier_rate":{"description":"Share of recent posts at 3x+ the account's usual views","type":["number","null"]},"posts_per_week":{"type":["number","null"]},"format_mix":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"change_30d":{"anyOf":[{"type":"object","properties":{"posts_last_30d":{"type":"number"},"posts_prev_30d":{"type":"number"},"median_views_last_30d":{"type":["number","null"]},"median_views_prev_30d":{"type":["number","null"]}},"required":["posts_last_30d","posts_prev_30d","median_views_last_30d","median_views_prev_30d"],"additionalProperties":false},{"type":"null"}],"description":"Last 30 days vs the 30 before. Null when the recent posts we read don't reach back 60 days"},"top_outliers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"searchtok post id, e.g. \"tiktok:7301234567890\". Pass it to analyze_post or find_similar."},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"description":"YYYY-MM-DD","type":["string","null"]},"views":{"type":["number","null"]},"outlier_score":{"description":"views / the account's usual (median) views. 3+ is a strong outlier. Null = no score, see outlier_explained.","type":["number","null"]},"outlier_explained":{"type":"string"},"caption":{"description":"The caption, cut to about 80 characters","type":["string","null"]},"hook":{"description":"The post's hook, quoted, once the post has been analysed. Null until then.","type":["string","null"]},"format":{"type":["string","null"]},"also_on":{"description":"Ids of the same video cross-posted elsewhere","type":"array","items":{"type":"string"}},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]},"paid":{"description":"Set on an ad, sponsored post or paid partnership: show it flagged as paid. Left out otherwise","type":"boolean","const":true}},"required":["id","platform","url","handle","posted_at","views","outlier_score","outlier_explained","caption","hook","format"],"additionalProperties":false}},"hooks":{"type":"array","items":{"type":"object","properties":{"post_id":{"type":"string"},"hook":{"type":"string"}},"required":["post_id","hook"],"additionalProperties":false},"description":"Hooks quoted from its analysed posts. Empty until posts are analysed (analyze_post)"}},"required":["id","platform","handle","url","followers","median_views","posts_sampled","outlier_rate","posts_per_week","format_mix","change_30d","top_outliers","hooks"],"additionalProperties":false}},"error":{"type":"object","properties":{"message":{"type":"string"},"next":{"type":"string"}},"required":["message","next"],"additionalProperties":false}},"required":["brand","resolved_from","accounts"],"additionalProperties":false},"description":"The brand first, then each one compared"},"missed":{"type":"array","items":{"type":"string"}},"link":{"type":"string"}},"required":["brands","link"],"additionalProperties":false},"example":{"brands":[{"brand":"@completerapp","resolved_from":"handle on tiktok","accounts":[{"id":"tiktok:7597922150545507350","platform":"tiktok","handle":"completerapp","url":"https://www.tiktok.com/@completerapp","followers":667,"median_views":674,"posts_sampled":30,"outlier_rate":0.17,"posts_per_week":1.1,"format_mix":{"carousel":0.87,"video":0.13},"change_30d":{"posts_last_30d":2,"posts_prev_30d":0,"median_views_last_30d":1165,"median_views_prev_30d":null},"top_outliers":[{"id":"tiktok:7616340301648563488","platform":"tiktok","url":"https://www.tiktok.com/@completerapp/photo/7616340301648563488","handle":"completerapp","posted_at":"2026-03-12","views":216733,"outlier_score":344,"outlier_explained":"344x this account's usual views (median 630 over its last 29 posts)","caption":"Discover my favorite iPhone apps for 2026 — handy tools to stay productive, org…","hook":null,"format":"carousel"},{"id":"tiktok:7621653006248987936","platform":"tiktok","url":"https://www.tiktok.com/@completerapp/photo/7621653006248987936","handle":"completerapp","posted_at":"2026-03-26","views":86902,"outlier_score":137.9,"outlier_explained":"137.9x this account's usual views (median 630 over its last 29 posts)","caption":"Some of my favorite widgets to keep on the Lock Screen #iphone #widgets #techto…","hook":null,"format":"carousel"}],"hooks":[]}]},{"brand":"@thehabittracker","resolved_from":"handle on tiktok","accounts":[{"id":"tiktok:7285627514402653186","platform":"tiktok","handle":"thehabittracker","url":"https://www.tiktok.com/@thehabittracker","followers":1701,"median_views":746,"posts_sampled":25,"outlier_rate":0.08,"posts_per_week":0.5,"format_mix":{"video":1},"change_30d":{"posts_last_30d":6,"posts_prev_30d":13,"median_views_last_30d":598,"median_views_prev_30d":724},"top_outliers":[{"id":"tiktok:7553185907361336594","platform":"tiktok","url":"https://www.tiktok.com/@thehabittracker/video/7553185907361336594","handle":"thehabittracker","posted_at":"2025-09-23","views":6404,"outlier_score":8.7,"outlier_explained":"8.7x this account's usual views (median 738 over its last 24 posts)","caption":"Hi I’m @Bec Stewart & my unhealthy habits + toxic lifestyle was the catalyst fo…","hook":null,"format":"video"},{"id":"tiktok:7670823025742269717","platform":"tiktok","url":"https://www.tiktok.com/@thehabittracker/video/7670823025742269717","handle":"thehabittracker","posted_at":"2026-08-06","views":2834,"outlier_score":3.8,"outlier_explained":"3.8x this account's usual views (median 738 over its last 24 posts)","caption":"Meet the ✨THT TEAM✨ ft. 1 rogue fact each 🤭⭐️📔💛 We’re excited to bring you i…","hook":null,"format":"video"}],"hooks":[]}]}],"link":"https://searchtok.app/app/brief?accounts=tiktok%3A7597922150545507350,tiktok%3A7285627514402653186"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/posts/analyze":{"post":{"operationId":"analyze_post","summary":"Analyse a post","description":"Everything about a TikTok or Instagram post, by url or searchtok id. For several posts, pass them together as ids or urls (up to 8): they're analysed at the same time, much faster than one call each.\nUse it for: breaking down why a post worked, quoting its hook or script, checking a post from another searchtok result or a link the user pasted.\nDon't use it for: finding posts (search_content), posts like this one (find_similar), an account's overall numbers (get_account).\nReturns fresh views, likes, comments, shares and saves, the account's usual views, the outlier score with its explanation, the transcript and, once analysed, on-screen text, spoken and on-screen hooks, format and structure (analysis_status says whether that has run). Hooks are quoted word for word from the post, never written by a model. With ids or urls, a list (posts), one per post, in order.\n\nCost: 6 per post credits.","x-credits":"6 per post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"The post's TikTok or Instagram url","type":"string","format":"uri"},"id":{"description":"A searchtok post id from another result, e.g. \"tiktok:7301234567890\"","type":"string"},"urls":{"description":"Several posts by url (up to 8 in all, with ids), analysed at the same time","minItems":1,"maxItems":8,"type":"array","items":{"type":"string","format":"uri"}},"ids":{"description":"Several posts by searchtok id (up to 8 in all, with urls), analysed at the same time","minItems":1,"maxItems":8,"type":"array","items":{"type":"string"}}}},"example":{"url":"https://www.tiktok.com/@spaceyflower/video/7377548155597950251"}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"type":["string","null"]},"caption":{"type":["string","null"]},"hashtags":{"type":"array","items":{"type":"string"}},"duration_s":{"type":["number","null"]},"format":{"type":["string","null"]},"sound":{"type":["string","null"]},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]}},"required":["id","platform","url","handle","posted_at","caption","hashtags","duration_s","format","sound","cover_url"],"additionalProperties":false},"metrics":{"type":"object","properties":{"views":{"type":["number","null"]},"likes":{"type":["number","null"]},"comments":{"type":["number","null"]},"shares":{"type":["number","null"]},"saves":{"type":["number","null"]},"views_per_day":{"type":["number","null"]},"engagement_rate":{"description":"(likes + comments + shares) / views. Instagram has no shares","type":["number","null"]}},"required":["views","likes","comments","shares","saves","views_per_day","engagement_rate"],"additionalProperties":false},"baseline":{"type":"object","properties":{"median_views":{"description":"The account's usual views","type":["number","null"]},"posts_sampled":{"type":"number"},"confidence":{"type":"string","enum":["low","ok"]}},"required":["median_views","posts_sampled","confidence"],"additionalProperties":false},"outlier_score":{"type":["number","null"]},"outlier_explained":{"type":"string"},"transcript":{"type":"object","properties":{"status":{"type":"string","enum":["available","too_long","no_speech","unavailable"]},"text":{"type":["string","null"]},"cut":{"type":"boolean","description":"True when the text was shortened for this result"}},"required":["status","text","cut"],"additionalProperties":false},"on_screen_text":{"type":["string","null"]},"spoken_hook":{"type":["string","null"]},"on_screen_hook":{"type":["string","null"]},"format_label":{"type":["string","null"]},"second_format_label":{"description":"Only when the post fits two formats","type":["string","null"]},"structure":{},"seen":{"anyOf":[{"type":"object","properties":{"visual_hook":{"description":"What grabs attention in the first 3 seconds, apart from the words","type":["string","null"]},"emotion":{"description":"A strong emotion on screen (crying, laughing, shocked)","type":["string","null"]},"look":{"type":["string","null"]},"setting":{"description":"Where and how it's filmed, e.g. \"talking head in a car\"","type":["string","null"]}},"required":["visual_hook","emotion","look","setting"],"additionalProperties":false},{"type":"null"}],"description":"What the video shows, read from its stills. Null until it's read"},"is_ad":{"description":"True for an ad, sponsored post or paid partnership: show it flagged as paid. Null until read","type":["boolean","null"]},"country":{"description":"The creator's likely country (two letters), from the platform or the video","type":["string","null"]},"analysis_status":{"type":"string","enum":["done","pending","not_available"],"description":"pending: reading the hooks failed this time and is being retried, ask again in a minute; not_available: no hook reader here. Transcript and numbers are real either way"},"link":{"type":"string"}},"required":["post","metrics","baseline","outlier_score","outlier_explained","transcript","on_screen_text","spoken_hook","on_screen_hook","format_label","second_format_label","structure","seen","is_ad","country","analysis_status","link"],"additionalProperties":false},{"type":"object","properties":{"posts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"type":["string","null"]},"caption":{"type":["string","null"]},"hashtags":{"type":"array","items":{"type":"string"}},"duration_s":{"type":["number","null"]},"format":{"type":["string","null"]},"sound":{"type":["string","null"]},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]}},"required":["id","platform","url","handle","posted_at","caption","hashtags","duration_s","format","sound","cover_url"],"additionalProperties":false},"metrics":{"type":"object","properties":{"views":{"type":["number","null"]},"likes":{"type":["number","null"]},"comments":{"type":["number","null"]},"shares":{"type":["number","null"]},"saves":{"type":["number","null"]},"views_per_day":{"type":["number","null"]},"engagement_rate":{"description":"(likes + comments + shares) / views. Instagram has no shares","type":["number","null"]}},"required":["views","likes","comments","shares","saves","views_per_day","engagement_rate"],"additionalProperties":false},"baseline":{"type":"object","properties":{"median_views":{"description":"The account's usual views","type":["number","null"]},"posts_sampled":{"type":"number"},"confidence":{"type":"string","enum":["low","ok"]}},"required":["median_views","posts_sampled","confidence"],"additionalProperties":false},"outlier_score":{"type":["number","null"]},"outlier_explained":{"type":"string"},"transcript":{"type":"object","properties":{"status":{"type":"string","enum":["available","too_long","no_speech","unavailable"]},"text":{"type":["string","null"]},"cut":{"type":"boolean","description":"True when the text was shortened for this result"}},"required":["status","text","cut"],"additionalProperties":false},"on_screen_text":{"type":["string","null"]},"spoken_hook":{"type":["string","null"]},"on_screen_hook":{"type":["string","null"]},"format_label":{"type":["string","null"]},"second_format_label":{"description":"Only when the post fits two formats","type":["string","null"]},"structure":{},"seen":{"anyOf":[{"type":"object","properties":{"visual_hook":{"description":"What grabs attention in the first 3 seconds, apart from the words","type":["string","null"]},"emotion":{"description":"A strong emotion on screen (crying, laughing, shocked)","type":["string","null"]},"look":{"type":["string","null"]},"setting":{"description":"Where and how it's filmed, e.g. \"talking head in a car\"","type":["string","null"]}},"required":["visual_hook","emotion","look","setting"],"additionalProperties":false},{"type":"null"}],"description":"What the video shows, read from its stills. Null until it's read"},"is_ad":{"description":"True for an ad, sponsored post or paid partnership: show it flagged as paid. Null until read","type":["boolean","null"]},"country":{"description":"The creator's likely country (two letters), from the platform or the video","type":["string","null"]},"analysis_status":{"type":"string","enum":["done","pending","not_available"],"description":"pending: reading the hooks failed this time and is being retried, ask again in a minute; not_available: no hook reader here. Transcript and numbers are real either way"},"link":{"type":"string"}},"required":["post","metrics","baseline","outlier_score","outlier_explained","transcript","on_screen_text","spoken_hook","on_screen_hook","format_label","second_format_label","structure","seen","is_ad","country","analysis_status","link"],"additionalProperties":false},{"type":"object","properties":{"ref":{"type":"string","description":"The url or id asked for"},"error":{"type":"string","description":"Why it couldn't be analysed (not_found, unsupported, unavailable...)"},"message":{"type":"string"},"next":{"type":"string"}},"required":["ref","error","message","next"],"additionalProperties":false}]},"description":"One per post asked for, in order: its analysis, or why it failed (failed posts cost nothing)"}},"required":["posts"],"additionalProperties":false}]},"example":{"post":{"id":"tiktok:7377548155597950251","platform":"tiktok","url":"https://www.tiktok.com/@spaceyflower/video/7377548155597950251","handle":"spaceyflower","posted_at":"2024-06-07","caption":"#habittracker #habittracker2024 #BulletJournal #bulletjournaling #yearinpixels #ratemyday","hashtags":["habittracker","habittracker2024"],"duration_s":30.3,"format":"video","sound":"original sound - neil.chapman1","cover_url":"https://searchtok.app/api/c/tiktok:7377548155597950251"},"metrics":{"views":565678,"likes":8281,"comments":66,"shares":729,"saves":2545,"views_per_day":658,"engagement_rate":0.016},"baseline":{"median_views":388,"posts_sampled":20,"confidence":"ok"},"outlier_score":1457.9,"outlier_explained":"1457.9x this account's usual views (median 388 over its last 20 posts)","transcript":{"status":"available","text":"the reason why I wake up at 5:00am and I run every morning is it because I'm a Marathon runner or because I'm some kind of triathlete it's because I fucking hate running man I hate getting up early even more so I'm starting the day by building a non negotiable standard for myself which I've come to realize is the only way we can ever grow and improve when people say no one's coming to save you they're not talking about how no one's coming to help you reach your goals talking about how no one's coming to save you from yourself because without standards man we always lose direction and we always fall back to our lowest automatic systems binging procrastinating clinging to comfort","cut":false},"on_screen_text":null,"spoken_hook":null,"on_screen_hook":null,"format_label":null,"second_format_label":null,"structure":null,"seen":null,"is_ad":null,"country":"US","analysis_status":"not_available","link":"https://searchtok.app/app/posts/tiktok%3A7377548155597950251"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/similar":{"post":{"operationId":"find_similar","summary":"Find similar posts","description":"Find posts like a given TikTok or Instagram post (same topic or format), ranked by outlier score.\nUse it for: 'more like this', finding other creators doing the same format, checking whether a format works beyond one account.\nDon't use it for: a topic in words (search_content), one post's details (analyze_post).\nSearches the post's own hashtags and caption words on its platform, plus searchtok's index by meaning. Returns the same compact rows as search_content (the source post left out), with why_matched saying which seed found each. Paid posts are flagged paid.\n\nCost: 12 credits.","x-credits":"12","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"The post's TikTok or Instagram url","type":"string","format":"uri"},"id":{"description":"A searchtok post id, e.g. \"tiktok:7301234567890\"","type":"string"},"limit":{"description":"Default 10","type":"integer","minimum":1,"maximum":30}}},"example":{"id":"tiktok:7377548155597950251","limit":10}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"handle":{"type":["string","null"]},"views":{"type":["number","null"]}},"required":["id","url","handle","views"],"additionalProperties":false},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"searchtok post id, e.g. \"tiktok:7301234567890\". Pass it to analyze_post or find_similar."},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"posted_at":{"description":"YYYY-MM-DD","type":["string","null"]},"views":{"type":["number","null"]},"outlier_score":{"description":"views / the account's usual (median) views. 3+ is a strong outlier. Null = no score, see outlier_explained.","type":["number","null"]},"outlier_explained":{"type":"string"},"caption":{"description":"The caption, cut to about 80 characters","type":["string","null"]},"hook":{"description":"The post's hook, quoted, once the post has been analysed. Null until then.","type":["string","null"]},"format":{"type":["string","null"]},"also_on":{"description":"Ids of the same video cross-posted elsewhere","type":"array","items":{"type":"string"}},"cover_url":{"description":"The post's cover image (a public link). Null when we have none","type":["string","null"]},"why_matched":{"type":"array","items":{"type":"string"}},"paid":{"description":"Set on an ad, sponsored post or paid partnership: show it flagged as paid. Left out otherwise","type":"boolean","const":true}},"required":["id","platform","url","handle","posted_at","views","outlier_score","outlier_explained","caption","hook","format","why_matched"],"additionalProperties":false}},"total_found":{"type":"number"},"searched":{"type":"array","items":{"type":"string"}},"missed":{"type":"array","items":{"type":"string"}},"truncated":{"type":"number"},"note":{"type":"string"}},"required":["source","rows","total_found","searched"],"additionalProperties":false},"example":{"source":{"id":"tiktok:7377548155597950251","url":"https://www.tiktok.com/@spaceyflower/video/7377548155597950251","handle":"spaceyflower","views":565678},"rows":[{"id":"tiktok:7400516824174988590","platform":"tiktok","url":"https://www.tiktok.com/@spaceyflower/video/7400516824174988590","handle":"spaceyflower","posted_at":"2024-08-07","views":1360488,"outlier_score":2846.2,"outlier_explained":"2846.2x this account's usual views (median 478 over its last 27 posts)","caption":"#habittracker2024 #habittracker #BulletJournal #bulletjournaling #yearinpixels…","hook":null,"format":"video","cover_url":"https://searchtok.app/api/c/tiktok:7400516824174988590","why_matched":["#habittracker2024"]},{"id":"tiktok:7443997179297172782","platform":"tiktok","url":"https://www.tiktok.com/@spaceyflower/video/7443997179297172782","handle":"spaceyflower","posted_at":"2024-12-03","views":856067,"outlier_score":1790.9,"outlier_explained":"1790.9x this account's usual views (median 478 over its last 27 posts)","caption":"Replying to @Adam DeMille October recap 😘 #habittracker #BulletJournal #bullet…","hook":null,"format":"video","cover_url":"https://searchtok.app/api/c/tiktok:7443997179297172782","why_matched":["#habittracker2024"]}],"total_found":37,"searched":["tiktok #habittracker (20)","tiktok #habittracker2024 (18)"]}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/research":{"post":{"operationId":"research","summary":"Research a question","description":"Hand a whole question to searchtok's own research agent, which runs many searches and writes a checked report, every claim citing real posts.\nUse it when the user asks for a full research report, or wants a big question run in the background (depth deep, then get_research for the answer).\nDon't use it for: most questions. Calling search_content, find_accounts and analyze_post yourself is faster, cheaper and shows each step. It costs the most credits.\nReturns a summary, the posts it's based on (ids, outlier scores, quoted hooks) and a dashboard link. quick waits about 15s; deep returns at once with its search_id and link, and the answer is ready within about a minute (get_research).\n\nCost: 50 quick, 150 deep credits.","x-credits":"50 quick, 150 deep","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":500,"description":"The research question, in the user's words"},"depth":{"description":"quick: under 15s, only already-analysed posts. deep: up to a minute, analyses new posts. Default quick","type":"string","enum":["quick","deep"]}},"required":["question"]},"example":{"question":"smile transformation"}}}},"responses":{"200":{"description":"A quick run's answer, or a deep run's search_id to collect with GET /research/{search_id}","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"search_id":{"type":"string","description":"This run's id in searchtok"},"status":{"type":"string","enum":["done","partial","running"],"description":"partial: some data couldn't be fetched, see answer.gaps. running: a deep run, still working"},"answer":{"description":"The checked answer: summary, patterns (each with claims citing post ids, with their numbers and quoted hooks) and example posts, what was searched, gaps. Not set while running"},"posts":{"description":"More results, best first: id, url, handle, views, outlier_score, caption","type":"array","items":{}},"events_url":{"description":"Live progress and the answer as server-sent events (deep runs)","type":"string"},"link":{"type":"string","description":"This run in the searchtok dashboard"},"outage":{"description":"Set when the run has no answer because searchtok's side failed: its credits were given back","type":"string"},"note":{"type":"string"}},"required":["search_id","status","link"],"additionalProperties":false},"example":{"search_id":"00000000-0000-4000-8000-000000000001","status":"done","answer":{"summary":"Smile transformation videos work best as a clear before and after reveal, or as an emotional story about a person who hid their smile. Dentists also get reach from a rating question or a warning about bad veneers. No hooks were analysed, so none are quoted.","groups":[{"pattern":"Rate-this-smile reveal","why":"A direct question invites comments and replays, and a clinic can film it with any patient case.","claims":[{"text":"A dentist's rate-this-smile veneers video reached 10.99M views, 226.7x the account's usual.","post_ids":["tiktok:7598707763442748703"],"numbers":[{"post_id":"tiktok:7598707763442748703","metric":"views","value":10989752},{"post_id":"tiktok:7598707763442748703","metric":"outlier","value":226.7}],"hooks":[]},{"text":"A perfect-smile question video got 849K views.","post_ids":["tiktok:7572693262838877471"],"numbers":[{"post_id":"tiktok:7572693262838877471","metric":"views","value":849377}],"hooks":[]}],"examples":["tiktok:7598707763442748703","tiktok:7572693262838877471"]},{"pattern":"Emotional story of hiding the smile","why":"The patient's story gives viewers a reason to watch to the reveal and to share it.","claims":[{"text":"A story about years of braces and hiding her smile hit 2.6M views, 29x the account's usual.","post_ids":["tiktok:7568738053708057886"],"numbers":[{"post_id":"tiktok:7568738053708057886","metric":"views","value":2636764},{"post_id":"tiktok:7568738053708057886","metric":"outlier","value":29}],"hooks":[]},{"text":"A video about Pop On Veneers as a temporary way to smile again reached 1.17M views.","post_ids":["tiktok:7609459213361745182"],"numbers":[{"post_id":"tiktok:7609459213361745182","metric":"views","value":1167400}],"hooks":[]}],"examples":["tiktok:7568738053708057886","tiktok:7609459213361745182"]}],"searched":["smile transformation","veneers before and after"],"gaps":["TikTok only; Instagram not searched.","No hooks available, since no posts were analysed."]},"posts":[{"id":"tiktok:7002262291064360197","url":"https://www.tiktok.com/@austincosmeticdentistry/video/7002262291064360197","handle":"austincosmeticdentistry","views":84080,"outlier_score":81.8,"caption":"#beforeandafter #beforeafter #smile #smiledekedekho #makeover #transformation #…"},{"id":"tiktok:7434792812228463927","url":"https://www.tiktok.com/@drkadish/video/7434792812228463927","handle":"drkadish","views":2766699,"outlier_score":null,"caption":"Would you get veneers? #dentist #veneer #veneers #dentalcrown #turkeyteeth"}],"link":"https://searchtok.app/app/searches/00000000-0000-4000-8000-000000000001"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/research/{search_id}":{"get":{"operationId":"get_research","summary":"Get a research answer","description":"Fetch a research run's answer by its search_id: a deep run that research started in the background, or any earlier run.\nUse it when research returned status running, or the user asks about an earlier research run.\nDon't use it for: search_content results (they come back in full straight away).\nReturns the status and, once it's done, the same answer research returns, with a dashboard link. Free.\n\nCost: 0 credits. Works without a plan.","x-credits":"0","parameters":[{"name":"search_id","in":"path","required":true,"description":"The run's search_id, from POST /research","schema":{"type":"string","minLength":8,"maxLength":80,"description":"The search_id a research call returned"}}],"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"search_id":{"type":"string"},"question":{"type":"string"},"depth":{"type":"string","enum":["quick","deep"]},"status":{"type":"string","enum":["queued","running","done","partial","failed","cancelled"],"description":"running: not finished yet, ask again in 20 to 30 seconds. partial: some data couldn't be fetched, see answer.gaps"},"answer":{"description":"The checked answer, the same shape research returns. Set once the run is done or partial"},"posts":{"description":"More results, best first","type":"array","items":{}},"error":{"type":"string"},"link":{"type":"string","description":"This run in the searchtok dashboard"},"events_url":{"description":"Live progress as server-sent events, while it runs","type":"string"},"created_at":{"type":"string"},"finished_at":{"type":["string","null"]},"truncated":{"type":"number"},"note":{"type":"string"}},"required":["search_id","question","depth","status","link","created_at","finished_at"],"additionalProperties":false},"example":{"search_id":"00000000-0000-4000-8000-000000000001","question":"smile transformation","depth":"deep","status":"done","answer":{"summary":"Smile transformation videos work best as a clear before and after reveal, or as an emotional story about a person who hid their smile. Dentists also get reach from a rating question or a warning about bad veneers. No hooks were analysed, so none are quoted.","groups":[{"pattern":"Rate-this-smile reveal","why":"A direct question invites comments and replays, and a clinic can film it with any patient case.","claims":[{"text":"A dentist's rate-this-smile veneers video reached 10.99M views, 226.7x the account's usual.","post_ids":["tiktok:7598707763442748703"],"numbers":[{"post_id":"tiktok:7598707763442748703","metric":"views","value":10989752},{"post_id":"tiktok:7598707763442748703","metric":"outlier","value":226.7}],"hooks":[]},{"text":"A perfect-smile question video got 849K views.","post_ids":["tiktok:7572693262838877471"],"numbers":[{"post_id":"tiktok:7572693262838877471","metric":"views","value":849377}],"hooks":[]}],"examples":["tiktok:7598707763442748703","tiktok:7572693262838877471"]},{"pattern":"Emotional story of hiding the smile","why":"The patient's story gives viewers a reason to watch to the reveal and to share it.","claims":[{"text":"A story about years of braces and hiding her smile hit 2.6M views, 29x the account's usual.","post_ids":["tiktok:7568738053708057886"],"numbers":[{"post_id":"tiktok:7568738053708057886","metric":"views","value":2636764},{"post_id":"tiktok:7568738053708057886","metric":"outlier","value":29}],"hooks":[]},{"text":"A video about Pop On Veneers as a temporary way to smile again reached 1.17M views.","post_ids":["tiktok:7609459213361745182"],"numbers":[{"post_id":"tiktok:7609459213361745182","metric":"views","value":1167400}],"hooks":[]}],"examples":["tiktok:7568738053708057886","tiktok:7609459213361745182"]}],"searched":["smile transformation","veneers before and after"],"gaps":["TikTok only; Instagram not searched.","No hooks available, since no posts were analysed."]},"posts":[{"id":"tiktok:7002262291064360197","url":"https://www.tiktok.com/@austincosmeticdentistry/video/7002262291064360197","handle":"austincosmeticdentistry","views":84080,"outlier_score":81.8,"caption":"#beforeandafter #beforeafter #smile #smiledekedekho #makeover #transformation #…"},{"id":"tiktok:7434792812228463927","url":"https://www.tiktok.com/@drkadish/video/7434792812228463927","handle":"drkadish","views":2766699,"outlier_score":null,"caption":"Would you get veneers? #dentist #veneer #veneers #dentalcrown #turkeyteeth"}],"link":"https://searchtok.app/app/searches/00000000-0000-4000-8000-000000000001","created_at":"2026-10-16T16:11:50.841Z","finished_at":"2026-10-16T16:11:50.844Z","truncated":3}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}}}},"/ideas":{"post":{"operationId":"content_ideas","summary":"Content ideas","description":"Content ideas for the user's profile, each built on one video in their niche that beat its account's usual views 2x+ and fits the user (plus up to 2 more posts in its format), with hooks quoted word for word and the beats to film.\nEach call finds new videos: a video shown in an earlier set for the profile is never shown again.\nUse it for: 'what should I post', a content plan, ideas in a given format ('talking head ideas') or from an account's posts.\nDon't use it for: finding posts to study (search_content). Ideas never invent hooks or formats: fewer new videos means fewer ideas, said in `note`.\nTakes about a minute. Returns the ideas with their post ids, outlier scores and quoted hooks, plus a dashboard link.\n\nCost: 150 credits.","x-credits":"150","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profile_id":{"description":"Which saved profile (get_profile). Default: the first","type":"string"},"count":{"description":"How many ideas, 1 to 8. Default 8","type":"integer","minimum":1,"maximum":8},"focus":{"description":"Narrow the ideas: a theme (\"leg day\"), a format (\"talking head\", \"talking head fitness\") or an account (\"@acme\": ideas from its posts)","type":"string","maxLength":200}}},"example":{}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"set_id":{"type":"string"},"profile_id":{"type":["string","null"]},"status":{"type":"string","enum":["running","done","thin","empty"],"description":"thin: fewer new videos than ideas asked for; empty: none (the credits go back). running: started in the background (the dashboard)"},"focus":{"type":["string","null"]},"ideas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","description":"What to film, in a few words"},"format":{"type":"string","description":"The format's name, from searchtok's format list"},"format_id":{"type":"string"},"fits":{"type":"object","properties":{"text":{"type":"string","description":"Why it fits this profile"},"phrase":{"type":"string","description":"The words from the profile's brief it rests on"},"brief_field":{"type":"string","description":"Where in the brief: what, who_for, niche or content_goal"}},"required":["text","phrase","brief_field"],"additionalProperties":false},"why":{"type":"array","items":{"type":"string"},"description":"Why the video (posts[0]) worked: what's seen, said and shown"},"posts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram"]},"url":{"type":"string"},"handle":{"type":["string","null"]},"views":{"type":["number","null"]},"outlier_score":{"type":["number","null"]},"outlier_explained":{"type":"string"},"on_screen_hook":{"description":"Word for word from the post","type":["string","null"]},"own":{"type":"boolean","description":"From the profile's own account"}},"required":["id","platform","url","handle","views","outlier_score","outlier_explained","on_screen_hook","own"],"additionalProperties":false},"description":"The video the idea is built on first, then up to 2 more in the same format. All 2x+ their account's usual views"},"proof":{"type":"number","description":"Fitting posts found in this format at 2x+ (the ones shown included; 1 when the video stands alone)"},"beats":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"post_id":{"type":"string"}},"required":["text","post_id"],"additionalProperties":false},"description":"What to film, in order, each taken from one of the posts"},"hooks":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"post_id":{"type":"string"},"field":{"type":"string","enum":["spoken","on_screen"]}},"required":["text","post_id","field"],"additionalProperties":false},"description":"Hooks quoted word for word from the posts (none when the video's hook is only visual)"}},"required":["id","title","format","format_id","fits","why","posts","proof","beats","hooks"],"additionalProperties":false}},"note":{"description":"Said when there are fewer ideas than asked for, and why","type":["string","null"]},"formats":{"type":"number","description":"Formats among the fitting posts read"},"scanned":{"type":"number","description":"Posts checked"},"searched":{"type":"array","items":{"type":"string"}},"dropped":{"type":"number","description":"Ideas the checks removed"},"link":{"type":"string","description":"These ideas in the searchtok dashboard"}},"required":["set_id","profile_id","status","focus","ideas","note","formats","scanned","searched","dropped","link"],"additionalProperties":false},"example":{"set_id":"00000000-0000-4000-8000-000000000001","profile_id":"00000000-0000-4000-8000-000000000001","status":"thin","focus":null,"ideas":[{"id":"idea-1","title":"Home tour with a personal story","format":"day in the life / vlog","format_id":"day-in-the-life","fits":{"text":"A house tour told with a real story gives home buyers and sellers in your area a reason to trust you, which suits a residential realtor.","phrase":"a residential realtor","brief_field":"what"},"why":["It opens by saying plainly what it is: a house tour, and the same words appear on screen.","The personal reason is told right away: the speaker's mom is selling the home they grew up in."],"posts":[{"id":"tiktok:7649541016927735054","platform":"tiktok","url":"https://www.tiktok.com/@meredithboydd/video/7649541016927735054","handle":"meredithboydd","views":3518505,"outlier_score":2398.4,"outlier_explained":"2398.4x this account's usual views (median 1.5k over its last 20 posts)","on_screen_hook":"let's do a house tour","own":false},{"id":"tiktok:7608017119934008607","platform":"tiktok","url":"https://www.tiktok.com/@soldbysassenhagen/video/7608017119934008607","handle":"soldbysassenhagen","views":2242923,"outlier_score":753.4,"outlier_explained":"753.4x this account's usual views (median 3k over its last 16 posts)","on_screen_hook":null,"own":false}],"proof":7,"beats":[{"text":"Open outside the home and say you are doing a house tour, with the same words on screen.","post_id":"tiktok:7649541016927735054"},{"text":"Give the reason for the tour in one line, such as your seller's story or what makes this home special.","post_id":"tiktok:7649541016927735054"}],"hooks":[{"text":"let's do a house tour","post_id":"tiktok:7649541016927735054","field":"on_screen"},{"text":"it's closing day & I'm your realtor 🎉🏡","post_id":"tiktok:7615651790679330062","field":"on_screen"}]}],"note":"only 1 proven format in your niche right now. more niche words in your brief find more.","formats":2,"scanned":207,"searched":["Instagram reels search \"realtor\" (10)","Instagram top \"realtor\" (12)"],"dropped":1,"link":"https://searchtok.app/app/ideas?set=00000000-0000-4000-8000-000000000001"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/profile/build":{"post":{"operationId":"build_profile","summary":"Build a profile","description":"Turn one link into the user's searchtok profile: an App Store or Play link, a website, a TikTok or Instagram handle, or a sentence about the business.\nUse it when the user has no profile yet (get_profile is empty) or adds a new app, business or client. Agencies keep one profile per client.\nDon't use it to research someone else's account (get_account, analyze_brand).\nIt reads the listing, site or account. Returns (and saves) the brief: type (app, service, creator, ecommerce or agency), what it is, who it's for, 5 to 10 niche phrases in the words people use on TikTok, content goal, language, region, its own accounts, and 3 to 5 lookalike TikTok accounts that account search returned (never made up). Building the same link again updates that profile.\n\nCost: 10 credits.","x-credits":"10","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":2,"maxLength":500,"description":"What the profile is for: an App Store or Google Play link, a website (\"acme.com\"), a TikTok or Instagram handle or profile url (\"@acme\", \"instagram @acme\"), or a sentence (\"i run a dog grooming van in leeds\")"},"save":{"description":"Save it as one of the user's profiles. Default true. Building the same link again updates that profile","type":"boolean"}},"required":["input"]},"example":{"input":"opal.so"}}}},"responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"profile_id":{"description":"Pass it to content_ideas as profile_id. Null when save was false","type":["string","null"]},"saved":{"type":"string","enum":["created","updated","not_saved"]},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["app_store","play","website","account","sentence"]},"url":{"type":["string","null"]}},"required":["kind","url"],"additionalProperties":false},"brief":{"type":"object","properties":{"type":{"type":"string","enum":["app","service","creator","ecommerce","agency"]},"name":{"type":"string"},"what":{"type":"string","description":"What it is, in a sentence or two"},"who_for":{"type":"string"},"niche":{"type":"array","items":{"type":"string"},"description":"5 to 10 phrases in the words people use on TikTok, in the profile's language. Use them as search queries"},"content_goal":{"type":"string","enum":["downloads","bookings","sales","followers"]},"language":{"type":"string","description":"Two-letter language code"},"region":{"description":"Two-letter country code, or null when they serve everyone","type":["string","null"]},"own_accounts":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram"]},"handle":{"type":"string"},"url":{"type":"string"},"followers":{"type":["number","null"]},"median_views":{"description":"Usual views: median of its latest posts that are 2+ days old","type":["number","null"]},"posts_per_week":{"type":["number","null"]},"found":{"type":"string","description":"How we found it: \"the handle given\" or \"linked from <site>\""}},"required":["platform","handle","url","followers","median_views","posts_per_week","found"],"additionalProperties":false},"description":"The profile's own TikTok and Instagram accounts, when we found them"},"lookalikes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram"]},"handle":{"type":"string"},"display_name":{"type":["string","null"]},"url":{"type":"string"},"followers":{"type":["number","null"]},"verified":{"type":["boolean","null"]},"bio":{"description":"Cut to about 80 characters","type":["string","null"]},"why":{"type":"string","description":"Why it's a lookalike, in a line"},"found_with":{"type":"string","description":"The TikTok account search that returned it"}},"required":["platform","handle","display_name","url","followers","verified","bio","why","found_with"],"additionalProperties":false},"description":"3 to 5 accounts like this one, each returned by TikTok account search (checked to exist)"},"gaps":{"type":"array","items":{"type":"string"},"description":"What the sources didn't say, and why there are fewer than 3 lookalikes"}},"required":["type","name","what","who_for","niche","content_goal","language","region","own_accounts","lookalikes","gaps"],"additionalProperties":false},"missed":{"description":"Pages, accounts or searches that couldn't be read","type":"array","items":{"type":"string"}},"link":{"type":"string"}},"required":["profile_id","saved","source","brief","link"],"additionalProperties":false},"example":{"profile_id":"00000000-0000-4000-8000-000000000001","saved":"created","source":{"kind":"website","url":"https://opal.so"},"brief":{"type":"app","name":"Opal","what":"Opal is a screen time and focus app for iPhone, iPad, Mac and Android. It blocks apps you choose, runs a focus timer and gives a daily score for how your tech use fits your wellbeing.","who_for":"People who spend too much time on their phone and want to scroll less and focus more.","niche":["screen time app","app blocker"],"content_goal":"downloads","language":"en","region":null,"own_accounts":[{"platform":"tiktok","handle":"opal","url":"https://www.tiktok.com/@opal","followers":10931,"median_views":4433,"posts_per_week":0.3,"found":"linked from opal.so"},{"platform":"instagram","handle":"opalapp","url":"https://www.instagram.com/opalapp/","followers":326081,"median_views":5060,"posts_per_week":5,"found":"linked from opal.so"}],"lookalikes":[{"platform":"tiktok","handle":"bepresent.app","display_name":"BePresent | Screen Time App","url":"https://www.tiktok.com/@bepresent.app","followers":10124,"verified":null,"bio":null,"why":"a screen time app, by its name","found_with":"screen time app"},{"platform":"tiktok","handle":"drshleep","display_name":"DigitalDetox","url":"https://www.tiktok.com/@drshleep","followers":16826,"verified":null,"bio":null,"why":"a digital detox account, by its name","found_with":"digital detox"}],"gaps":["The material doesn't say which country they mainly serve. Posts mention the US, UK, Japan and Australia.","The TikTok location signal says fr, but the captions are all in English."]},"link":"https://searchtok.app/app/profiles"}}}},"400":{"$ref":"#/components/responses/BadInput"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/NoPlanOrCredits"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/TooBig"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/profile":{"get":{"operationId":"get_profile","summary":"Get my profile","description":"The user's saved searchtok profile(s): what they make content for (an app, a business, a creator...), their niche, audience and language.\nUse it first when a question depends on who the user is ('ideas for me', 'what should I post'), so searches match their niche and language.\nDon't use it to look up other accounts (get_account). Free.\nReturns each profile's id, type, name, link, language, region and brief.\n\nCost: 0 credits. Works without a plan.","x-credits":"0","responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"profiles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Pass it to content_ideas as profile_id"},"type":{"type":"string","enum":["app","service","creator","ecommerce","agency"]},"name":{"type":"string"},"source_url":{"type":["string","null"]},"language":{"type":["string","null"]},"region":{"type":["string","null"]},"brief":{"description":"What they make, for whom, and their niche, as saved in the dashboard"}},"required":["id","type","name","source_url","language","region","brief"],"additionalProperties":false}},"note":{"type":"string"},"link":{"type":"string"}},"required":["profiles","link"],"additionalProperties":false},"example":{"profiles":[{"id":"00000000-0000-4000-8000-000000000001","type":"app","name":"example habit app (test data)","source_url":"https://app.example","language":"en","region":null,"brief":{"note":"test data for this example","niche":"habit tracker app"}}],"link":"https://searchtok.app/app/profiles"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}}}},"/usage":{"get":{"operationId":"get_usage","summary":"Check credits","description":"The user's searchtok plan, credits left, when they reset, and what each tool costs.\nUse it before a long run of calls (or after a no_credits error) so you can warn the user before they run out. Free and always works, even without a plan.\nReturns plan, plan_status, can_use_tools, credits_left, credits_used, resets_at, credit_costs and upgrade_url.\n\nCost: 0 credits. Works without a plan.","x-credits":"0","responses":{"200":{"description":"OK","headers":{"credits-used":{"description":"Credits this request used","schema":{"type":"integer"}},"credits-left":{"description":"Credits left on the account after this request","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string"},"plan_status":{"type":"string"},"can_use_tools":{"type":"boolean","description":"False without an active plan or with no credits left"},"credits_left":{"type":"number"},"credits_used":{"type":"number","description":"Used this credit month; refunded calls don't count"},"monthly_allowance":{"type":"number","description":"The plan's monthly credits. 0 without a plan"},"period_start":{"description":"When this credit month started (ISO date)","type":["string","null"]},"resets_at":{"description":"When the plan renews and credits are topped up (ISO date). Null without a plan","type":["string","null"]},"by_surface":{"type":"array","items":{"type":"object","properties":{"surface":{"type":"string"},"credits":{"type":"number"},"calls":{"type":"number"}},"required":["surface","credits","calls"],"additionalProperties":false},"description":"This month's credits per door: dashboard, mcp, cli, api"},"by_tool":{"type":"array","items":{"type":"object","properties":{"tool":{"type":"string"},"credits":{"type":"number"},"calls":{"type":"number"}},"required":["tool","credits","calls"],"additionalProperties":false},"description":"This month's credits per tool, most first"},"credit_costs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["number","string"]},"description":"What each tool costs"},"upgrade_url":{"type":"string","description":"Pick a plan or buy more credits"},"usage_url":{"type":"string","description":"The same numbers on the dashboard"}},"required":["plan","plan_status","can_use_tools","credits_left","credits_used","monthly_allowance","period_start","resets_at","by_surface","by_tool","credit_costs","upgrade_url","usage_url"],"additionalProperties":false},"example":{"plan":"creator","plan_status":"active","can_use_tools":true,"credits_left":1000,"credits_used":0,"monthly_allowance":1250,"period_start":"2026-10-16","resets_at":"2026-11-03","by_surface":[{"surface":"dashboard","credits":0,"calls":0},{"surface":"mcp","credits":0,"calls":0}],"by_tool":[],"credit_costs":{"search_content":20,"find_accounts":15,"get_account":3,"analyze_brand":"5 per brand","analyze_post":6,"find_similar":12,"research":"50 quick, 150 deep","content_ideas":150,"build_profile":10,"get_profile":0,"get_usage":0},"upgrade_url":"https://searchtok.app/app/billing","usage_url":"https://searchtok.app/app/usage"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Internal"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key (st_live_...) from https://searchtok.app/app/settings/keys"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_input","unsupported","unauthorized","no_plan","no_credits","not_allowed","not_found","unknown_tool","budget_exceeded","rate_limited","internal","not_available","unavailable"]},"message":{"type":"string","description":"What went wrong"},"hint":{"type":"string","description":"What to try next"}},"required":["code","message","hint"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}},"responses":{"BadInput":{"description":"The request doesn't match the input schema. Codes: bad_input (the request doesn't match the input schema; message says what's wrong); unsupported (that platform or kind of link isn't supported by this endpoint).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"No valid key. Codes: unauthorized (no key, or the key isn't valid or was revoked).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NoPlanOrCredits":{"description":"Needs a plan, or more credits. Codes: no_plan (the account has no searchtok plan); no_credits (not enough credits left for this call).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not found. Codes: not_found (the post, account, run or endpoint doesn't exist (or is private)).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Too many requests. Codes: rate_limited (more than 60 requests in a minute with this key).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait","schema":{"type":"integer"}}}},"TooBig":{"description":"The call needed more data than one call may use. Codes: budget_exceeded (the call needed more data than one call may use; narrow it down).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Internal":{"description":"Something broke on our side. Credits are refunded. Codes: internal (something broke on our side; credits are refunded).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unavailable":{"description":"TikTok or Instagram data couldn't be fetched, or the endpoint is switched off for now. Codes: not_available (switched off for now (research has a kill switch and a daily cap)); unavailable (tiktok or instagram data couldn't be fetched right now; credits are refunded).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}