{"openapi":"3.1.0","info":{"title":"hooks.social","version":"1.0.0","description":"TikTok, Instagram, TikTok Shop, and YouTube data. Prepaid credits, failed calls are free. A response with meta.cached true is free. A genuine empty is HTTP 200 at 0 credits. partial true and stale true also cost 0. Only a fresh fetch that returns valid data costs credits. A shop product is 1 credit only when title and price are present. Search is 1 credit only when at least one card has an id and a title. A store is 1 credit only when it has a shop name or one such card. DE, FR, IT, ES, and IE return not_supported_market. A 200 with meta.degraded true (no likes, play_count, view_count, or taken_at) costs 0 credits and is not cached. A YouTube video that can't be read costs 0."},"servers":[{"url":"https://api.hooks.social","description":"Production"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/v1/tiktok/profile":{"get":{"summary":"TikTok profile with exact counts","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/video":{"get":{"summary":"TikTok video detail","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/posts":{"get":{"summary":"TikTok profile posts","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/comments":{"get":{"summary":"TikTok comments","security":[{"bearer":[]}],"parameters":[{"name":"video_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/comments/replies":{"get":{"summary":"TikTok comment replies","security":[{"bearer":[]}],"parameters":[{"name":"video_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"comment_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/search/videos":{"get":{"summary":"TikTok keyword video search","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"search_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/search/users":{"get":{"summary":"TikTok user search","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"search_id","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/hashtag":{"get":{"summary":"TikTok hashtag detail","security":[{"bearer":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/hashtag/videos":{"get":{"summary":"TikTok hashtag videos","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/sound":{"get":{"summary":"TikTok sound detail","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/sound/videos":{"get":{"summary":"TikTok sound videos","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktokshop/product":{"get":{"summary":"TikTok Shop product. 1 credit only when title and price are present. market us or uk. de, fr, it, es, and ie are not_supported_market.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"},"description":"Product id"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Product URL. The id is taken from it and the market query picks the storefront."},{"name":"market","in":"query","required":true,"schema":{"type":"string"},"description":"us, uk, de, fr, it, es, or ie"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"market":{"type":"string"},"id":{"type":["string","null"]},"title":{"type":["string","null"]},"price":{"type":["number","null"]},"original_price":{"type":["number","null"]},"currency":{"type":["string","null"]},"discount":{"type":["string","null"],"description":"Percent off when the original price is higher, such as 53%. Otherwise null."},"sold_count":{"type":["integer","null"]},"rating":{"type":["number","null"]},"review_count":{"type":["integer","null"]},"star_histogram":{"anyOf":[{"type":"object","description":"Star counts. A missing bucket is null.","properties":{"1":{"type":["integer","null"]},"2":{"type":["integer","null"]},"3":{"type":["integer","null"]},"4":{"type":["integer","null"]},"5":{"type":["integer","null"]}}},{"type":"null"}]},"reviews":{"type":["array","null"],"items":{"type":"object","properties":{"name":{"type":"string","description":"Masked reviewer name, as TikTok rendered it."},"rating":{"type":["integer","null"]},"text":{"type":["string","null"]}}}},"images":{"type":["array","null"],"items":{"type":"string"}},"category":{"type":["string","null"]},"shop":{"anyOf":[{"type":"object","properties":{"seller_id":{"type":["string","null"]},"name":{"type":["string","null"]},"sold_count":{"type":["integer","null"]},"product_count":{"type":["integer","null"]},"rating":{"type":["number","null"]}}},{"type":"null"}]},"related_products":{"type":["array","null"],"items":{"type":"object","description":"One product card. A missing number is null. A real zero stays zero.","properties":{"id":{"type":["string","null"]},"title":{"type":["string","null"]},"price":{"type":["number","null"]},"sold":{"type":["integer","null"]},"rating":{"type":["number","null"]},"image":{"type":["string","null"]}}},"description":"Present when available. Affiliate creator videos are not included."}}}}},"example":{"data":{"market":"us","id":"1729495699318543725","title":"Glarry 41-Inch Full Size Cutaway Acoustic-Electric Guitar Beginner Kit","price":220.99,"original_price":null,"currency":"USD","discount":null,"sold_count":450,"rating":4.3,"review_count":65,"star_histogram":{"1":4,"2":5,"3":2,"4":9,"5":45},"reviews":[{"name":"e**k J**é H**","rating":5,"text":"Gracias por mi products salio bien"}],"images":["https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/guitar.webp"],"category":"Electro-Acoustic Guitars","shop":{"seller_id":"7494313903714501997","name":"Glarry","sold_count":7191,"product_count":85,"rating":4.4},"related_products":[{"id":"1732200883070014281","title":"Hot-Selling Creative Poker Smartphone Casing","price":5.58,"sold":73,"rating":4.9,"image":"https://example.test/poker.jpg"}]},"error":null,"meta":{"credits":1}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"501":{"description":"not_supported_market. This shop page is not available for the market. Free and not cached."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktokshop/search":{"get":{"summary":"TikTok Shop search. Cards without an id and a title are omitted. 1 credit only when at least one card remains.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"market","in":"query","required":true,"schema":{"type":"string"},"description":"us, uk, de, fr, it, es, or ie"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"market":{"type":"string"},"query":{"type":"string"},"products":{"type":["array","null"],"items":{"type":"object","description":"One product card. A missing number is null. A real zero stays zero.","properties":{"id":{"type":["string","null"]},"title":{"type":["string","null"]},"price":{"type":["number","null"]},"sold":{"type":["integer","null"]},"rating":{"type":["number","null"]},"image":{"type":["string","null"]}}}}}}}},"example":{"data":{"market":"us","query":"phone case","products":[{"id":"1732292988470203055","title":"Phone Case - Summer palm tree and surfboard","price":8.99,"sold":4,"rating":null,"image":"https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/palm.webp"},{"id":"1732222994664297089","title":"Picnic Bee Design phone case","price":20,"sold":null,"rating":5,"image":"https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/bee.webp"}]},"error":null,"meta":{"credits":1}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"501":{"description":"not_supported_market. This shop page is not available for the market. Free and not cached."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktokshop/store":{"get":{"summary":"TikTok Shop store. 1 credit only when the shop has a name or at least one card with an id and a title.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"},"description":"Seller id"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Store URL"},{"name":"market","in":"query","required":true,"schema":{"type":"string"},"description":"us, uk, de, fr, it, es, or ie"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"market":{"type":"string"},"seller_id":{"type":["string","null"]},"name":{"type":["string","null"]},"sold_count":{"type":["integer","null"]},"product_count":{"type":["integer","null"]},"rating":{"type":["number","null"]},"products":{"type":["array","null"],"items":{"type":"object","description":"One product card. A missing number is null. A real zero stays zero.","properties":{"id":{"type":["string","null"]},"title":{"type":["string","null"]},"price":{"type":["number","null"]},"sold":{"type":["integer","null"]},"rating":{"type":["number","null"]},"image":{"type":["string","null"]}}}}}}}},"example":{"data":{"market":"us","seller_id":"7494313903714501997","name":"Glarry","sold_count":7191,"product_count":85,"rating":4.4,"products":[{"id":"1729474293263865197","title":"Glarry Full-Size Basswood Electric Guitar for Beginner Guitarists","price":139.99,"sold":1030,"rating":4.5,"image":"https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/basswood.webp"},{"id":"1732168347303317869","title":"GLARRY Full Size Electric Bass Guitar with 20W AMP","price":136.99,"sold":613,"rating":4.5,"image":"https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/bass.webp"}]},"error":null,"meta":{"credits":1}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"501":{"description":"not_supported_market. This shop page is not available for the market. Free and not cached."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktokshop/trending":{"get":{"summary":"Trending TikTok Shop products in the US, from a daily sweep of every category and the day's trending hashtags. rank=sold: units sold in the last days (until enough daily history exists, total sold). rank=rising: units against the period before. rank=new: products first seen in the window. Filter by category or by trend hashtag. 1 credit when products come back.","security":[{"bearer":[]}],"parameters":[{"name":"rank","in":"query","required":false,"schema":{"type":"string"},"description":"sold (default), rising or new"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"description":"1, 7 (default) or 30"},{"name":"category","in":"query","required":false,"schema":{"type":"string"},"description":"TikTok Shop category or subcategory name, or its id"},{"name":"trend","in":"query","required":false,"schema":{"type":"string"},"description":"Trending hashtag without the #"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Up to 100, default 30"},{"name":"market","in":"query","required":false,"schema":{"type":"string"},"description":"us"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/viral":{"get":{"summary":"The most viewed TikTok videos about a topic from the last 1, 7 or 30 days. Scans several pages of search and ranks by views. 1 credit.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"description":"1, 7 (default) or 30"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/tiktok/trends":{"get":{"summary":"What is trending on TikTok, for a topic or the whole platform: the sounds, hashtags and creators that appear most in recent videos, weighted by views, plus the top videos. 1 credit.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Topic, for example skincare. Leave empty for the whole platform"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"description":"1, 7 (default) or 30"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/meta/ads":{"get":{"summary":"Active ads in the Meta Ad Library (Facebook, Instagram, Messenger) for a brand or keyword, or for one page id: ad copy, headline, call to action, link, format, platforms and start date, grouped by advertiser with the matching brand first. 1 credit when ads come back.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Brand or keyword"},{"name":"page_id","in":"query","required":false,"schema":{"type":"string"},"description":"Facebook page id, for one advertiser"},{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"Two-letter country, default US"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/profile":{"get":{"summary":"Instagram profile with recent posts and reels. Degraded responses are free.","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"username":{"type":"string"},"user_id":{"type":"string"},"full_name":{"type":["string","null"],"description":"Display name. Null when not available."},"biography":{"type":"string"},"external_url":{"type":"string"},"verified":{"type":["boolean","null"],"description":"is_verified from the same source. Null when the source omitted it."},"followers":{"type":"integer"},"following":{"type":"integer"},"posts":{"type":"integer","description":"Media count. This stays a number. Recent media is items."},"avatar_url":{"type":["string","null"],"description":"profile_pic_url_hd when that URL is present, otherwise profile_pic_url. Null when neither is present."},"recent_shortcodes":{"type":"array","items":{"type":"string"}},"items":{"type":"array","items":{"type":"object","description":"One media object. Count fields are null when the number is not available. A real zero stays zero. view_count is the timeline video view count. play_count is the Reels play count. They are different numbers. views repeats view_count and plays repeats play_count.","properties":{"shortcode":{"type":"string"},"owner":{"type":"string"},"full_name":{"type":"string"},"avatar_url":{"type":"string"},"caption":{"type":"string"},"display_url":{"type":"string","description":"Cover image. display_url from the timeline, or display_uri from the Reels tab."},"product_type":{"type":"string","description":"clips (reel), feed, carousel_container, or igtv when Instagram sends one."},"media_type":{"type":"string","description":"image, video, or carousel."},"likes":{"type":["integer","null"]},"comments":{"type":["integer","null"]},"view_count":{"type":["integer","null"],"description":"Timeline video_view_count. Null on photos and on Reels-tab rows, which do not include it."},"play_count":{"type":["integer","null"],"description":"Reels play count. Null for photos and for videos not on the first Reels page."},"views":{"type":["integer","null"],"description":"Same value as view_count."},"plays":{"type":["integer","null"],"description":"Same value as play_count."},"is_video":{"type":"boolean"},"taken_at":{"type":["integer","null"],"description":"Unix seconds from the timeline. Null on Reels-tab rows, which do not include a timestamp."}},"required":["shortcode","likes","comments","view_count","play_count","views","plays","is_video","taken_at"]},"description":"First timeline page, with Reels-tab play_count merged by shortcode. Reels from that page that are not already on the timeline are appended. Photo play_count and view_count are null."},"counts_exact":{"type":"boolean"}},"required":["username","full_name","avatar_url","followers","posts","verified","counts_exact"]}}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/post":{"get":{"summary":"Instagram post: caption, owner, likes, comments, taken_at, view_count / play_count for a video or Reel, and audio (id, title, artist, original) for the sound it uses. Instagram shows shares and saves only to the account owner, so they are not included; a count the owner hid is null.","security":[{"bearer":[]}],"parameters":[{"name":"shortcode","in":"query","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/comments":{"get":{"summary":"Instagram comments","security":[{"bearer":[]}],"parameters":[{"name":"shortcode","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/posts":{"get":{"summary":"Instagram posts, 12 per page. Every post carries likes, comments and taken_at; videos and Reels add view_count and play_count (plays on page 1). Instagram shows shares and saves only to the account owner, so they are not included; a count the owner hid is null. A cached page is free.","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","description":"One media object. Count fields are null when the number is not available. A real zero stays zero. view_count is the timeline video view count. play_count is the Reels play count. They are different numbers. views repeats view_count and plays repeats play_count.","properties":{"shortcode":{"type":"string"},"owner":{"type":"string"},"full_name":{"type":"string"},"avatar_url":{"type":"string"},"caption":{"type":"string"},"display_url":{"type":"string","description":"Cover image. display_url from the timeline, or display_uri from the Reels tab."},"product_type":{"type":"string","description":"clips (reel), feed, carousel_container, or igtv when Instagram sends one."},"media_type":{"type":"string","description":"image, video, or carousel."},"likes":{"type":["integer","null"]},"comments":{"type":["integer","null"]},"view_count":{"type":["integer","null"],"description":"Timeline video_view_count. Null on photos and on Reels-tab rows, which do not include it."},"play_count":{"type":["integer","null"],"description":"Reels play count. Null for photos and for videos not on the first Reels page."},"views":{"type":["integer","null"],"description":"Same value as view_count."},"plays":{"type":["integer","null"],"description":"Same value as play_count."},"is_video":{"type":"boolean"},"taken_at":{"type":["integer","null"],"description":"Unix seconds from the timeline. Null on Reels-tab rows, which do not include a timestamp."}},"required":["shortcode","likes","comments","view_count","play_count","views","plays","is_video","taken_at"]}},"cursor":{"type":"string"},"has_more":{"type":"boolean"},"full_name":{"type":"string"},"avatar_url":{"type":"string"}},"required":["items","has_more"]}}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/reels":{"get":{"summary":"Instagram Reels, 12 per page, each with play_count, likes, comments and taken_at. Instagram shows shares and saves only to the account owner, so they are not included; a count the owner hid is null.","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","description":"One media object. Count fields are null when the number is not available. A real zero stays zero. view_count is the timeline video view count. play_count is the Reels play count. They are different numbers. views repeats view_count and plays repeats play_count.","properties":{"shortcode":{"type":"string"},"owner":{"type":"string"},"full_name":{"type":"string"},"avatar_url":{"type":"string"},"caption":{"type":"string"},"display_url":{"type":"string","description":"Cover image. display_url from the timeline, or display_uri from the Reels tab."},"product_type":{"type":"string","description":"clips (reel), feed, carousel_container, or igtv when Instagram sends one."},"media_type":{"type":"string","description":"image, video, or carousel."},"likes":{"type":["integer","null"]},"comments":{"type":["integer","null"]},"view_count":{"type":["integer","null"],"description":"Timeline video_view_count. Null on photos and on Reels-tab rows, which do not include it."},"play_count":{"type":["integer","null"],"description":"Reels play count. Null for photos and for videos not on the first Reels page."},"views":{"type":["integer","null"],"description":"Same value as view_count."},"plays":{"type":["integer","null"],"description":"Same value as play_count."},"is_video":{"type":"boolean"},"taken_at":{"type":["integer","null"],"description":"Unix seconds from the timeline. Null on Reels-tab rows, which do not include a timestamp."}},"required":["shortcode","likes","comments","view_count","play_count","views","plays","is_video","taken_at"]}},"cursor":{"type":"string"},"has_more":{"type":"boolean"},"full_name":{"type":"string"},"avatar_url":{"type":"string"}},"required":["items","has_more"]}}}}}},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/audio/reels":{"get":{"summary":"Reels that use an Instagram sound. audio_id is the audio.id from /v1/instagram/post.","security":[{"bearer":[]}],"parameters":[{"name":"audio_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/related":{"get":{"summary":"Instagram related accounts","security":[{"bearer":[]}],"parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/instagram/search":{"get":{"summary":"Instagram keyword search: top posts with likes, comments, plays and taken_at, and the accounts behind them. Use two or more words.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/youtube/player":{"get":{"summary":"YouTube player. A video that can't be read costs 0. A playable video costs 1.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/youtube/transcript":{"get":{"summary":"YouTube transcript. An empty transcript costs 0. A transcript costs 1.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/youtube/search":{"get":{"summary":"YouTube video search. period limits to uploads from today, this week, month or year; sort=popular ranks by popularity. Up to 30 videos per page with views, channel, length and age. 1 credit when videos come back.","security":[{"bearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string"},"description":"today, week, month or year"},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"relevance or popular"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/youtube/channel":{"get":{"summary":"A YouTube channel's latest uploads, by @handle or channel id, with views and publish dates. 1 credit when videos come back.","security":[{"bearer":[]}],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"@handle or channel link"},{"name":"id","in":"query","required":false,"schema":{"type":"string"},"description":"Channel id starting with UC"}],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/me":{"get":{"summary":"Credit balance and account settings for this key","security":[{"bearer":[]}],"parameters":[],"responses":{"200":{"description":"Data. A fresh success debits credits. A cached response is free."},"400":{"description":"Validation error. Free."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits."},"429":{"description":"Per-key rate limit."},"502":{"description":"No data this time. Free."},"503":{"description":"Temporarily unavailable. Free."},"504":{"description":"Took too long. Free."}}}},"/v1/demo/{platform}/profile":{"get":{"summary":"Anonymous profile and recent posts. Five lookups per visitor per UTC day. No API key.","security":[],"parameters":[{"name":"platform","in":"path","required":true,"schema":{"type":"string","enum":["tiktok","instagram"]}},{"name":"handle","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Profile and posts. credits is 0. would_cost is what a fresh keyed call would spend; a cached part is 0. The lookup still counts toward the daily demo limit."},"429":{"description":"Daily demo limit reached."}}}},"/v1/keys":{"get":{"summary":"List active keys. Secrets are not returned.","security":[{"bearer":[]}],"responses":{"200":{"description":"Keys"}}},"post":{"summary":"Create a key. The full secret is returned once.","security":[{"bearer":[]}],"responses":{"200":{"description":"New key"}}}},"/v1/keys/{id}":{"delete":{"summary":"Revoke a key","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Revoked"}}}},"/v1/ledger":{"get":{"summary":"Call receipt, newest first","security":[{"bearer":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque page cursor"},{"name":"format","in":"query","required":false,"schema":{"type":"string"},"description":"csv for a file download"}],"responses":{"200":{"description":"Ledger page or CSV"}}}},"/v1/checkout":{"post":{"summary":"Start a checkout for starter, builder, or scale","security":[{"bearer":[]}],"responses":{"200":{"description":"Checkout URL"},"501":{"description":"Payment provider is not configured. No charge was created."}}}},"/v1/resolve":{"get":{"summary":"Turn a TikTok or Instagram link into an endpoint and its parameters","security":[],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resolved link"}}}},"/v1/watchlist":{"get":{"summary":"Handles checked at 06:00 in the account timezone","security":[{"bearer":[]}],"responses":{"200":{"description":"Watchlist"}}},"post":{"summary":"Add a handle. The first check waits until the next 06:00.","security":[{"bearer":[]}],"responses":{"201":{"description":"Added"}}}},"/v1/watchlist/changes":{"get":{"summary":"Follower changes between stored checks","security":[{"bearer":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Changes"}}}},"/v1/snapshots":{"get":{"summary":"List stored snapshots for one profile. Credit cost: 0.","description":"Credit cost: 0. Computed from stored snapshots. Requires platform and handle. Page size 50.","security":[{"bearer":[]}],"parameters":[{"name":"platform","in":"query","required":true,"schema":{"type":"string"}},{"name":"handle","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque page cursor"}],"responses":{"200":{"description":"Snapshots, newest first. meta.credits is 0."},"401":{"description":"Missing or unknown API key."}}},"post":{"summary":"Capture a profile snapshot now. Credit cost: up to 2.","description":"Credit cost: 1 for a fresh profile read, plus 1 for a fresh posts read when include_posts is true (the default). A cache hit is free and is not debited. A profile or posts response with meta.degraded true or meta.credits 0 is free and is not debited. A degraded profile is still stored and marked degraded. A failed part is free and no row is written when the profile itself fails. Instagram post averages come from the profile's merged timeline and Reels items, preferring rows that have play_count and likes. Averages skip null counts. sampled_views, sampled_likes, sampled_comments, and sampled_shares are how many items supplied each average. A cache hit costs 0 credits.","security":[{"bearer":[]}],"responses":{"201":{"description":"Snapshot stored. meta.credits is 0, 1, or 2. data.degraded is true when the profile read was degraded. data.sampled_views, data.sampled_likes, data.sampled_comments, and data.sampled_shares are the non-null sample sizes."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Insufficient credits. Nothing was stored."}}}},"/v1/snapshots/{id}":{"get":{"summary":"Fetch one snapshot, including recent post metrics. Credit cost: 0.","description":"Credit cost: 0. Stored data only.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Snapshot. meta.credits is 0."},"404":{"description":"Not found for this account."}}}},"/v1/compare":{"get":{"summary":"Compare a profile with itself over time, or several profiles at their latest snapshot. Credit cost: 0.","description":"Credit cost: 0. Pass platform and handle for history (followers, avg_views, avg_likes, avg_comments, engagement_bps). Pass accounts=tiktok:nasa,instagram:nike (max 10) for a side-by-side of the latest snapshot of each. Optional from and to are snapshot ids that bound the history span.","security":[{"bearer":[]}],"parameters":[{"name":"platform","in":"query","required":false,"schema":{"type":"string"}},{"name":"handle","in":"query","required":false,"schema":{"type":"string"}},{"name":"accounts","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated platform:handle list, max 10"},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Snapshot id"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"Snapshot id"}],"responses":{"200":{"description":"Deltas or side-by-side rows. meta.credits is 0."}}}},"/v1/exports/posts":{"get":{"summary":"Export posts from a stored snapshot as CSV or JSON. Credit cost: 0.","description":"Credit cost: 0. CSV is UTF-8 with a BOM, a header row, CRLF lines, and plain numbers. format=csv (default) or format=json.","security":[{"bearer":[]}],"parameters":[{"name":"platform","in":"query","required":true,"schema":{"type":"string"}},{"name":"handle","in":"query","required":true,"schema":{"type":"string"}},{"name":"snapshot_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"},"description":"csv or json"}],"responses":{"200":{"description":"CSV file or JSON. meta.credits is 0 for JSON."}}}},"/v1/exports/snapshots":{"get":{"summary":"Export snapshot history as CSV or JSON. Credit cost: 0.","description":"Credit cost: 0. Up to 500 newest snapshots. format=csv (default) or format=json.","security":[{"bearer":[]}],"parameters":[{"name":"platform","in":"query","required":true,"schema":{"type":"string"}},{"name":"handle","in":"query","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"},"description":"csv or json"}],"responses":{"200":{"description":"CSV file or JSON."}}}},"/v1/exports/compare":{"get":{"summary":"Export a compare result as CSV or JSON. Credit cost: 0.","description":"Credit cost: 0. Same query as GET /v1/compare. format=csv (default) or format=json.","security":[{"bearer":[]}],"parameters":[{"name":"platform","in":"query","required":false,"schema":{"type":"string"}},{"name":"handle","in":"query","required":false,"schema":{"type":"string"}},{"name":"accounts","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"},"description":"csv or json"}],"responses":{"200":{"description":"CSV file or JSON."}}}},"/v1/exports/boards/{id}":{"get":{"summary":"Export a board and each account's latest snapshot as CSV or JSON. Credit cost: 0.","description":"Credit cost: 0. format=csv (default) or format=json.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"},"description":"csv or json"}],"responses":{"200":{"description":"CSV file or JSON."},"404":{"description":"Board not found."}}}},"/v1/boards":{"get":{"summary":"List boards. Credit cost: 0.","description":"Credit cost: 0. A board is a named collection of TikTok and Instagram accounts.","security":[{"bearer":[]}],"responses":{"200":{"description":"Boards."}}},"post":{"summary":"Create a board. Credit cost: 0.","description":"Credit cost: 0. Cap is 20 boards. Body: { name }.","security":[{"bearer":[]}],"responses":{"201":{"description":"Created."},"409":{"description":"Board limit."}}}},"/v1/boards/{id}":{"get":{"summary":"Board accounts with each latest snapshot. Credit cost: 0.","description":"Credit cost: 0. This is the side-by-side view of a board.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Board."},"404":{"description":"Not found."}}},"patch":{"summary":"Rename a board. Credit cost: 0.","description":"Credit cost: 0. Body: { name }.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated."}}},"delete":{"summary":"Delete a board and its automations. Credit cost: 0.","description":"Credit cost: 0. Snapshots for the handles are kept.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted."}}}},"/v1/boards/{id}/accounts":{"post":{"summary":"Add a TikTok or Instagram account to a board. Credit cost: 0.","description":"Credit cost: 0. Body: { platform, handle }. Cap is 25 accounts.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Added."},"409":{"description":"Already on the board, or the board is full."}}}},"/v1/boards/{id}/accounts/{platform}/{handle}":{"delete":{"summary":"Remove an account from a board. Credit cost: 0.","description":"Credit cost: 0. Snapshots are kept.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"platform","in":"path","required":true,"schema":{"type":"string","enum":["tiktok","instagram"]}},{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Removed."}}}},"/v1/boards/{id}/refresh":{"post":{"summary":"Capture a snapshot for every account on a board. Credit cost: up to 2 per account.","description":"Credit cost: 1 for each successful profile read, plus 1 for each successful posts read. A profile or posts response with meta.degraded true or meta.credits 0 is free. A degraded profile is still stored. Failures are free. Stops when the balance is empty and reports the accounts that were skipped.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Snapshots and per-account errors. meta.credits is the sum charged."},"402":{"description":"No snapshot was stored because the balance was empty."}}}},"/v1/automations":{"get":{"summary":"List scheduled refreshes. Credit cost: 0.","description":"Credit cost: 0 to read. A run costs up to 2 credits per account (profile + posts). A profile or posts response with meta.degraded true or meta.credits 0 is free. A run is skipped, and recorded, when the balance is empty.","security":[{"bearer":[]}],"responses":{"200":{"description":"Automations. Webhook secrets are omitted on the list."}}},"post":{"summary":"Schedule a daily or weekly refresh of a watchlist item or a board. Credit cost: 0 to save.","description":"Credit cost: 0 to save. Each run costs up to 2 credits per account. A profile or posts response with meta.degraded true or meta.credits 0 is free. Body: { target_kind: watch|board, target_id, cadence: daily|weekly, name, webhook_url, metric, direction: above|below, threshold, notify_new_post }. webhook_url must be public https. The webhook secret is returned once on create and on GET. The first run waits until the next 06:00 in the account timezone.","security":[{"bearer":[]}],"responses":{"201":{"description":"Created. data.webhook_secret is the signing secret."},"409":{"description":"Cap of 20 automations."}}}},"/v1/automations/{id}":{"get":{"summary":"Fetch one automation, including its webhook secret. Credit cost: 0.","description":"Credit cost: 0.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Automation."},"404":{"description":"Not found."}}},"patch":{"summary":"Update cadence, webhook, threshold, or enabled. Credit cost: 0.","description":"Credit cost: 0. Changing the webhook URL rotates the secret.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated."}}},"delete":{"summary":"Delete an automation. Credit cost: 0.","description":"Credit cost: 0. Past run rows stay until the 90 day retention.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted."}}}},"/v1/automations/{id}/runs":{"get":{"summary":"Recent automation runs, including credit skips and cap skips. Credit cost: 0.","description":"Credit cost: 0.","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Up to 50 runs, newest first."}}}},"/v1/status":{"get":{"summary":"Service status","security":[],"responses":{"200":{"description":"Status"}}}},"/status":{"get":{"summary":"Public status page","security":[],"responses":{"200":{"description":"HTML"}}}}}}