{"openapi":"3.1.0","info":{"title":"TrueScrape API","version":"0.1.0","description":"Unified social media data API with a normalised cross-platform schema,\nasync jobs, batching, and change subscriptions.\n\n**Billing guarantees**\n- You are never charged for a failed request.\n- You are never charged for an empty result.\n- Cache hits cost 0 credits.\n- Every endpoint publishes its price as `x-credit-cost` in this spec."},"servers":[{"url":"https://api.truescrape.com","description":"API server"}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Ad":{"title":"Ad","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"advertiserId":{"type":["string","null"]},"advertiserName":{"type":["string","null"]},"url":{"description":"Link to the ad's page in the platform's ad library.","type":["string","null"]},"headline":{"type":["string","null"]},"body":{"type":["string","null"]},"ctaText":{"description":"Text of the call-to-action button, such as \"Shop now\".","type":["string","null"]},"linkUrl":{"description":"Where the ad links to. Some ad libraries expose only the destination's domain.","type":["string","null"]},"creativeType":{"description":"Format of the ad creative, such as `video` or `image`, as the ad library labels it.","type":["string","null"]},"imageUrls":{"type":"array","items":{"type":"string"}},"videoUrls":{"type":"array","items":{"type":"string"}},"platforms":{"description":"Platforms the ad was shown on, in lowercase, such as `facebook` or `instagram`.","type":"array","items":{"type":"string"}},"countries":{"description":"Countries the ad ran in or targeted, usually as two-letter country codes.","type":"array","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"}},"startedAt":{"type":["string","null"]},"endedAt":{"description":"When the ad stopped running. Null while it is still running, or when the ad library reports no end date.","type":["string","null"]},"isActive":{"type":["boolean","null"]},"impressionsLower":{"description":"Lower bound of the impressions range the ad library reports. Libraries publish a range, not an exact figure.","type":["number","null"]},"impressionsUpper":{"description":"Upper bound of the impressions range the ad library reports.","type":["number","null"]},"spendLower":{"description":"Lower bound of the reported spend range, in `currency`.","type":["number","null"]},"spendUpper":{"description":"Upper bound of the reported spend range, in `currency`.","type":["number","null"]},"currency":{"description":"Currency of the spend range, as a code such as `USD`.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"}},"required":["platform","id","advertiserId","advertiserName","url","headline","body","ctaText","linkUrl","creativeType","imageUrls","videoUrls","platforms","countries","languages","startedAt","endedAt","isActive","impressionsLower","impressionsUpper","spendLower","spendUpper","currency","fetchedAt"]},"Address":{"title":"Address","type":"object","properties":{"formatted":{"description":"The whole address as one line, as the source published it. Some sources publish only this line, so the other address fields can be null while this is set.","type":["string","null"]},"street":{"type":["string","null"]},"locality":{"description":"City or town.","type":["string","null"]},"region":{"description":"State, province or region.","type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"description":"Country as the source gives it, which may be a code such as US or a name.","type":["string","null"]}},"required":["formatted","street","locality","region","postalCode","country"]},"AgentStat":{"title":"AgentStat","type":"object","properties":{"label":{"description":"What the figure measures, such as total sales volume.","type":["string","null"]},"value":{"description":"The figure as the source displays it.","type":["string","null"]},"numericValue":{"description":"`value` as a number, where it can be read as one.","type":["number","null"]}},"required":["label","value","numericValue"]},"Comment":{"title":"Comment","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"postId":{"type":["string","null"]},"parentId":{"description":"Id of the comment this one replies to. Null on a top-level comment.","type":["string","null"]},"text":{"type":"string"},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"authorAvatarUrl":{"type":["string","null"]},"likeCount":{"type":["number","null"]},"replyCount":{"type":["number","null"]},"isPinned":{"type":["boolean","null"]},"isAuthorReply":{"description":"Whether the comment was written by the author of the post.","type":["boolean","null"]},"publishedAt":{"description":"When the comment was posted. Usually an ISO 8601 timestamp; some platforms expose only relative text such as \"2 days ago\".","type":["string","null"]}},"required":["platform","id","postId","parentId","text","authorId","authorHandle","authorName","authorAvatarUrl","likeCount","replyCount","isPinned","isAuthorReply","publishedAt"]},"Creator":{"title":"Creator","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt"]},"JobPosting":{"title":"JobPosting","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"Identifier for the posting. Where the source shows none, this is the posting URL.","type":["string","null"]},"title":{"type":["string","null"]},"company":{"type":["string","null"]},"location":{"type":["string","null"]},"via":{"description":"The job board the posting was listed through, as in \"via LinkedIn\".","type":["string","null"]},"description":{"description":"Snippet of the job description shown with the result.","type":["string","null"]},"url":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"postedAt":{"type":["string","null"]},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","id","title","company","location","via","description","url","tags","postedAt","fetchedAt"]},"NewsArticle":{"title":"NewsArticle","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"position":{"description":"Rank of the article in the results, starting at 1.","type":["number","null"]},"title":{"type":["string","null"]},"source":{"description":"Name of the outlet that published the article.","type":["string","null"]},"description":{"description":"Snippet of the article shown with the result.","type":["string","null"]},"link":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"publishedAt":{"description":"When the article was published, as the result displays it. Often relative, such as \"2 hours ago\", and not converted to a date.","type":["string","null"]},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","position","title","source","description","link","thumbnailUrl","publishedAt","fetchedAt"]},"Offer":{"title":"Offer","type":"object","properties":{"sellerName":{"type":["string","null"]},"sellerId":{"type":["string","null"]},"price":{"description":"Price of the item in this offer, in `currency`. Shipping is separate, in `shippingPrice`.","type":["number","null"]},"currency":{"description":"ISO 4217 currency code for the amounts in this record, such as USD or EUR.","type":["string","null"]},"shippingPrice":{"description":"Shipping cost in `currency`. 0 when shipping is free.","type":["number","null"]},"condition":{"description":"Item condition as the offer states it, such as New or Used - Like New.","type":["string","null"]},"isPrime":{"description":"True when the offer shows a Prime badge. An offer without the badge is null, not false.","type":["boolean","null"]},"fulfilledByPlatform":{"description":"Whether the marketplace itself fulfils the order, as with Fulfilled by Amazon.","type":["boolean","null"]},"isBuyBox":{"description":"Whether this is the featured offer the product page sells by default. Null where the marketplace has no featured offer or did not say.","type":["boolean","null"]},"shipsFrom":{"description":"The party the item ships from, as the offer names it.","type":["string","null"]}},"required":["sellerName","sellerId","price","currency","shippingPrice","condition","isPrime","fulfilledByPlatform","isBuyBox","shipsFrom"]},"Place":{"title":"Place","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":["string","null"]},"name":{"type":["string","null"]},"address":{"$ref":"#/components/schemas/Address"},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"phone":{"type":["string","null"]},"website":{"description":"The business's own website.","type":["string","null"]},"url":{"description":"Link to the place's listing on the map service.","type":["string","null"]},"rating":{"description":"Average star rating, out of 5.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"priceLevel":{"description":"Price band as the listing shows it, such as `$` or `$$`. The scale varies by locale.","type":["string","null"]},"categories":{"type":"array","items":{"type":"string"}},"hours":{"description":"Opening hours keyed by lowercase weekday, such as `monday`. Each value is the hours text as the listing published it.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"imageUrls":{"type":"array","items":{"type":"string"}},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","id","name","address","latitude","longitude","phone","website","url","rating","reviewCount","priceLevel","categories","hours","imageUrls","fetchedAt"]},"Post":{"title":"Post","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt"]},"PriceEvent":{"title":"PriceEvent","type":"object","properties":{"date":{"description":"When the event happened, in ISO 8601 format.","type":["string","null"]},"price":{"description":"Price at this event, in `currency`.","type":["number","null"]},"currency":{"description":"ISO 4217 currency code for the amounts in this record, such as USD or EUR.","type":["string","null"]},"event":{"description":"What happened, as the source words it, such as Listed, Price Changed or Sold.","type":["string","null"]},"source":{"description":"Where the event was recorded, such as a listing service or public records.","type":["string","null"]}},"required":["date","price","currency","event","source"]},"Product":{"title":"Product","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The product id on its marketplace: the ASIN on Amazon, the item id on Walmart and eBay. Always a string.","type":"string"},"title":{"type":["string","null"]},"brand":{"type":["string","null"]},"description":{"type":["string","null"]},"url":{"type":["string","null"]},"imageUrls":{"type":"array","items":{"type":"string"}},"price":{"description":"The price a buyer pays now, in `currency`.","type":["number","null"]},"currency":{"description":"ISO 4217 currency code for the amounts in this record, such as USD or EUR.","type":["string","null"]},"listPrice":{"description":"The struck-through reference price shown next to `price` when the listing shows a discount.","type":["number","null"]},"availability":{"description":"Stock status. `unknown` means the listing showed a status that could not be read as one of the other values.","type":["string","null"],"enum":["in_stock","out_of_stock","preorder","discontinued","unknown"]},"rating":{"description":"Average customer rating, out of 5.","type":["number","null"]},"reviewCount":{"description":"Number of ratings or reviews the marketplace reports for the product, not the number of entries in `reviews`.","type":["number","null"]},"sellerName":{"type":["string","null"]},"shipsFrom":{"description":"The party the item ships from, as the listing names it.","type":["string","null"]},"marketplace":{"description":"The marketplace site this product was read from, such as `amazon.co.uk`.","type":["string","null"]},"categories":{"description":"Category breadcrumb, from the broadest category to the most specific.","type":"array","items":{"type":"string"}},"featureBullets":{"type":"array","items":{"type":"string"}},"attributes":{"description":"Specifications as label and value pairs. Which labels appear varies by marketplace and category.","type":"object","additionalProperties":{"type":"string"}},"reviews":{"description":"A sample of reviews shown on the product page, not the full review list.","type":"array","items":{"$ref":"#/components/schemas/ProductReview"}},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","id","title","brand","description","url","imageUrls","price","currency","listPrice","availability","rating","reviewCount","sellerName","shipsFrom","marketplace","categories","featureBullets","attributes","reviews","fetchedAt"]},"ProductReview":{"title":"ProductReview","type":"object","properties":{"id":{"type":["string","null"]},"rating":{"description":"Star rating the reviewer gave, out of 5.","type":["number","null"]},"title":{"type":["string","null"]},"text":{"type":["string","null"]},"author":{"type":["string","null"]},"publishedAt":{"description":"When the review was posted: an ISO 8601 timestamp where the date could be read, otherwise the date text as the marketplace shows it.","type":["string","null"]},"helpfulCount":{"description":"Number of people who marked the review helpful.","type":["number","null"]},"negativeCount":{"description":"Number of people who marked the review unhelpful.","type":["number","null"]},"verifiedPurchase":{"type":["boolean","null"]},"badges":{"description":"Labels the marketplace shows on the review, such as Verified Purchase.","type":"array","items":{"type":"string"}}},"required":["id","rating","title","text","author","publishedAt","helpfulCount","negativeCount","verifiedPurchase","badges"]},"PropertyListing":{"title":"PropertyListing","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The property id on its source, such as a Zillow zpid. Always a string.","type":"string"},"url":{"type":["string","null"]},"listingType":{"type":["string","null"],"enum":["sale","rent"]},"status":{"description":"Where the listing is in its lifecycle. `pending` and `under_offer` mean a deal is in progress. `off_market` means withdrawn without a sale and may return, unlike `sold`. `unknown` means the status could not be read as one of the other values.","type":["string","null"],"enum":["active","pending","under_offer","sold","rented","off_market","unknown"]},"price":{"description":"Asking price, or the rent for a rental, in `currency`. Read it together with `priceQualifier`.","type":["number","null"]},"currency":{"description":"ISO 4217 currency code for the amounts in this record, such as USD or EUR.","type":["string","null"]},"priceQualifier":{"description":"Wording that changes what `price` means, such as \"offers over\", \"guide price\", \"per month\" or \"starting at\".","type":["string","null"]},"pricePerArea":{"description":"Price per unit of area, in `currency` per `areaUnit`.","type":["number","null"]},"address":{"$ref":"#/components/schemas/Address"},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"beds":{"type":["number","null"]},"baths":{"description":"Number of bathrooms. Can be fractional, such as 2.5.","type":["number","null"]},"receptions":{"description":"Number of reception rooms, a figure UK and European listings state. US listings have no equivalent, so it is null there.","type":["number","null"]},"area":{"description":"Interior floor area, in `areaUnit`.","type":["number","null"]},"areaUnit":{"description":"Unit of `area`: `sqft` for square feet, `sqm` for square metres. Null when the source gave no unit.","type":["string","null"],"enum":["sqft","sqm"]},"lotArea":{"description":"Area of the plot the property stands on, in `lotAreaUnit`.","type":["number","null"]},"lotAreaUnit":{"description":"Unit of `lotArea`: `sqft` for square feet, `sqm` for square metres. Null when the source gave no unit.","type":["string","null"],"enum":["sqft","sqm"]},"propertyType":{"description":"Property type as the source words it, so values differ between sources.","type":["string","null"]},"yearBuilt":{"type":["number","null"]},"description":{"type":["string","null"]},"imageUrls":{"type":"array","items":{"type":"string"}},"floorPlanUrls":{"type":"array","items":{"type":"string"}},"agentName":{"type":["string","null"]},"agentPhone":{"type":["string","null"]},"brokerageName":{"description":"The listing brokerage, or the management company for a rental building.","type":["string","null"]},"amenities":{"description":"Further listing facts as label and value pairs, such as HOA dues, a council tax band or an energy rating. Which labels appear varies by source.","type":"object","additionalProperties":{"type":"string"}},"schools":{"type":"array","items":{"$ref":"#/components/schemas/School"}},"priceHistory":{"description":"Past events for the property, such as listings, price changes and sales.","type":"array","items":{"$ref":"#/components/schemas/PriceEvent"}},"listedAt":{"description":"When the property was listed. Usually an ISO 8601 timestamp; some sources pass their own date text through.","type":["string","null"]},"updatedAt":{"description":"When the source last updated the listing. Usually an ISO 8601 timestamp; some sources pass their own date text through.","type":["string","null"]},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","id","url","listingType","status","price","currency","priceQualifier","pricePerArea","address","latitude","longitude","beds","baths","receptions","area","areaUnit","lotArea","lotAreaUnit","propertyType","yearBuilt","description","imageUrls","floorPlanUrls","agentName","agentPhone","brokerageName","amenities","schools","priceHistory","listedAt","updatedAt","fetchedAt"]},"RealEstateAgent":{"title":"RealEstateAgent","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":["string","null"]},"name":{"type":["string","null"]},"url":{"type":["string","null"]},"photoUrl":{"type":["string","null"]},"brokerageName":{"type":["string","null"]},"licenseNumber":{"type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"type":["string","null"]},"languages":{"type":"array","items":{"type":"string"}},"serviceAreas":{"type":"array","items":{"type":"string"}},"rating":{"type":["number","null"]},"reviewCount":{"type":["number","null"]},"salesStats":{"description":"Sales figures the source publishes for the agent, such as deals closed or average days on market. Which figures appear varies by source.","type":"array","items":{"$ref":"#/components/schemas/AgentStat"}},"listings":{"description":"Property listings shown on the agent's profile.","type":"array","items":{"$ref":"#/components/schemas/PropertyListing"}},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","id","name","url","photoUrl","brokerageName","licenseNumber","phone","bio","languages","serviceAreas","rating","reviewCount","salesStats","listings","fetchedAt"]},"School":{"title":"School","type":"object","properties":{"name":{"type":["string","null"]},"rating":{"description":"School rating on a scale of 1 to 10.","type":["number","null"]},"gradeRange":{"type":["string","null"]},"distanceKm":{"type":["number","null"]},"institutionType":{"type":["string","null"]}},"required":["name","rating","gradeRange","distanceKm","institutionType"]},"SearchResultItem":{"title":"SearchResultItem","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"position":{"description":"Rank of the result on the page it was read from, starting at 1, in the order the source served it.","type":["number","null"]},"id":{"description":"The listing id on its platform, such as an Amazon ASIN. Where the source shows no id, this is the result URL, or the title when there is no URL.","type":["string","null"]},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"price":{"description":"Price shown on the result, in `currency`. Where a price range is shown, the lowest price.","type":["number","null"]},"currency":{"description":"ISO 4217 currency code for the amounts in this record, such as USD or EUR.","type":["string","null"]},"listPrice":{"description":"The struck-through reference price shown on the result, when there is one.","type":["number","null"]},"rating":{"description":"Average customer rating, out of 5.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"sellerName":{"type":["string","null"]},"availability":{"description":"Stock status. `unknown` means the listing showed a status that could not be read as one of the other values.","type":["string","null"],"enum":["in_stock","out_of_stock","preorder","discontinued","unknown"]},"badges":{"description":"Labels shown on the result, such as Best Seller or Amazon's Choice.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"True for a paid placement. False only where the source marks a result as not sponsored; a result with no sponsored label is null.","type":["boolean","null"]},"fetchedAt":{"description":"When this record was retrieved, as an ISO 8601 timestamp.","type":"string"}},"required":["platform","position","id","title","url","thumbnailUrl","price","currency","listPrice","rating","reviewCount","sellerName","availability","badges","isSponsored","fetchedAt"]},"Transcript":{"title":"Transcript","type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"postId":{"type":"string"},"url":{"type":["string","null"]},"language":{"description":"The transcript's language as the platform labels it, usually a language code such as `en`.","type":["string","null"]},"isAutoGenerated":{"description":"Whether the platform generated the captions automatically, by speech recognition or machine translation, rather than a person writing them.","type":["boolean","null"]},"text":{"description":"The full transcript as a single block of text.","type":"string"},"cues":{"description":"Timed segments of the transcript.","type":"array","items":{"type":"object","properties":{"start":{"description":"Seconds from the start of the media.","type":"number"},"end":{"description":"Seconds from the start of the media. Null when the platform gives no end time.","type":["number","null"]},"text":{"type":"string"}},"required":["start","end","text"]}},"durationSeconds":{"type":["number","null"]},"source":{"description":"Where the transcript came from. `captions`: the platform's own caption track, whether a person wrote it or the platform generated it (see `isAutoGenerated`). `asr`: produced by speech recognition on the audio. Null when this cannot be told.","type":["string","null"],"enum":["captions","asr"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"}},"required":["platform","postId","url","language","isAutoGenerated","text","cues","durationSeconds","source","fetchedAt"]}}},"security":[{"apiKeyAuth":[]}],"tags":[{"name":"amazon"},{"name":"apple-music"},{"name":"bilibili"},{"name":"bitchute"},{"name":"bluesky"},{"name":"dailymotion"},{"name":"deezer"},{"name":"inference"},{"name":"ebay"},{"name":"facebook"},{"name":"identity"},{"name":"flickr"},{"name":"github"},{"name":"google"},{"name":"hackernews"},{"name":"instagram"},{"name":"kick"},{"name":"komi"},{"name":"kwai"},{"name":"linkbio"},{"name":"linkedin"},{"name":"linkme"},{"name":"linktree"},{"name":"mashable"},{"name":"mastodon"},{"name":"milkshake"},{"name":"mixcloud"},{"name":"odysee"},{"name":"okru"},{"name":"peertube"},{"name":"pillar"},{"name":"pinterest"},{"name":"reddit"},{"name":"redfin"},{"name":"rumble"},{"name":"snapchat"},{"name":"solo"},{"name":"soundcloud"},{"name":"spotify"},{"name":"streamable"},{"name":"substack"},{"name":"taplink"},{"name":"telegram"},{"name":"threads"},{"name":"tiktok"},{"name":"truthsocial"},{"name":"twitch"},{"name":"twitter"},{"name":"vimeo"},{"name":"walmart"},{"name":"youtube"},{"name":"zillow"}],"paths":{"/v1/amazon/offers":{"get":{"summary":"All seller offers for a product","description":"Every offer on an Amazon listing (price, seller, condition, Prime eligibility and shipping), alongside the product itself.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"amazon_offers","tags":["amazon"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"asin","in":"query","required":true,"schema":{"description":"Amazon ASIN, e.g. \"B08N5WRWNW\"","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Marketplace TLD, default \"com\". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Best-effort locale hint (ISO 3166-1 alpha-2).","type":"string"}},{"name":"condition","in":"query","required":false,"schema":{"description":"Filter offers to one condition.","type":"string","enum":["new","used_like_new","used_very_good","used_good","used_acceptable"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"item":{"$ref":"#/components/schemas/Product"},"offers":{"type":"array","items":{"$ref":"#/components/schemas/Offer"}}},"required":["item","offers"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/amazon/product":{"get":{"summary":"Product details","description":"Public details for one Amazon listing: title, brand, price, availability, rating, specifications and an inline review sample.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"amazon_product","tags":["amazon"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"asin","in":"query","required":true,"schema":{"description":"Amazon ASIN, e.g. \"B08N5WRWNW\"","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Marketplace TLD, default \"com\". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Best-effort locale hint (ISO 3166-1 alpha-2).","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Product"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/amazon/search":{"get":{"summary":"Search results","description":"Public Amazon search results for a query: position, price, rating and badges per item.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"amazon_search","tags":["amazon"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms, e.g. \"wireless mouse\"","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Marketplace TLD, default \"com\". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Best-effort locale hint (ISO 3166-1 alpha-2).","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/amazon/shop":{"get":{"summary":"Amazon Shop page","description":"A creator's public Amazon storefront: their name, the product links the page exposes, and the storefront feed of idea lists (with Amazon's own item count), shoppable videos (id, title, thumbnail and attached ASINs) and shoppable photos. The first request needs no pageToken and already returns the videos embedded on the page. Pass `pagination.cursor` back as `pageToken`, unchanged, with the same shop URL for the next page; a page can carry lists, videos, photos or any mix. A continuation page carries the feed ONLY. Amazon serves it as a fragment with no profile markup, so every identity field (display name, bio, avatar) is null on page two onwards. ASINs are the products the storefront shows attached to an item, which for a long idea list is the first screenful rather than the whole list; `itemCount` is the true total.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"amazon_shop","tags":["amazon"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Storefront URL (https://www.amazon.com/shop/<handle>) or just the handle","type":"string"}},{"name":"pageToken","in":"query","required":false,"schema":{"description":"Opaque page token returned by a previous response for the same shop URL. Pass it back unchanged and do not infer the response type from its value.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"storefront":{"type":"object","properties":{"lists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"itemCount":{"type":["number","null"]},"thumbnailUrl":{"type":["string","null"]}},"required":["id","title","url","itemCount","thumbnailUrl"]}},"videos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"asins":{"type":"array","items":{"type":"string"}}},"required":["id","title","url","thumbnailUrl","asins"]}},"photos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"asins":{"type":"array","items":{"type":"string"}}},"required":["id","url","thumbnailUrl","asins"]}}},"required":["lists","videos","photos"]}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt","storefront"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/apple-music/album":{"get":{"summary":"Album details","description":"Public Apple Music album: artist, release date, genre, artwork and total runtime. The track listing and copyright line are in `raw`, behind `include_raw=true`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"appleMusic_album","tags":["apple-music"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Apple Music album id (1708308989) or a music.apple.com album URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Apple Music album id (1708308989) or a music.apple.com album URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/apple-music/artist":{"get":{"summary":"Artist details","description":"Public Apple Music artist page: editorial bio, artist image, banner and genre. Apple publishes no follower or play counts, so those fields are null rather than guessed.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"appleMusic_artist","tags":["apple-music"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Apple Music artist id (159260351) or a music.apple.com artist URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Apple Music artist id (159260351) or a music.apple.com artist URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/apple-music/search":{"get":{"summary":"Search","description":"Search the Apple Music catalogue for tracks, albums or artists. Tracks and albums come back as posts; artists come back as creators.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"appleMusic_search","tags":["apple-music"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"`song` is the same as `track`","default":"track","type":"string","enum":["track","album","artist","song"]}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"country","in":"query","required":false,"schema":{"description":"Two-letter storefront, e.g. us, gb, de","default":"us","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/Post"},{"$ref":"#/components/schemas/Creator"}]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/apple-music/track":{"get":{"summary":"Track details","description":"Public Apple Music track: artist, album, duration, genre, release date and the 30-second preview URL.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"appleMusic_track","tags":["apple-music"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Apple Music track id (1833328840), a /song/ URL, or an album URL with ?i=<track id>","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Apple Music track id (1833328840), a /song/ URL, or an album URL with ?i=<track id>","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bilibili/video":{"get":{"summary":"Video files and details","description":"A public Bilibili video's mp4 address (up to 720p), description, tags, duration and first frame. For a multi-part video, `?p=` in the URL selects the part. The title, the uploader, the counts and the upload date are null. The mp4 address expires 2 hours after it is issued.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bilibili_video","tags":["bilibili"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"BV id (BV1GJ411x7h7) or a bilibili.com/video/BV… URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bitchute/channel":{"get":{"summary":"Channel profile","description":"A public BitChute channel: name, description, subscriber count, video count, total views and creation date.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bitchute_channel","tags":["bitchute"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"channel","in":"query","required":true,"schema":{"description":"Channel id (EhBWKghMUros), the channel name from its URL (nextnewsnetwork), or a bitchute.com/channel/... URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bitchute/channel/videos":{"get":{"summary":"Channel videos","description":"A BitChute channel's public videos, newest first, 50 per page, with view counts. Likes and comment counts are not in the list; `bitchute.video` has likes. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bitchute_channelVideos","tags":["bitchute"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"channel","in":"query","required":true,"schema":{"description":"Channel id (EhBWKghMUros), the channel name from its URL (nextnewsnetwork), or a bitchute.com/channel/... URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bitchute/search":{"get":{"summary":"Search videos","description":"Public BitChute video search, 50 per page, with view counts and the uploading channel.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bitchute_search","tags":["bitchute"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms, at least two characters","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"default":"new","type":"string","enum":["new","old","views"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bitchute/video":{"get":{"summary":"Video details","description":"A public BitChute video: title, description, hashtags, duration, publish date, channel, views and likes. Dislikes are in `raw`. `commentCount` is always null.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bitchute_video","tags":["bitchute"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"BitChute video URL (bitchute.com/video/uIh_YOS_Lm4/) or a bare video id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bluesky/post":{"get":{"summary":"Post","description":"A single public Bluesky post with like, reply, repost and quote counts, plus any attached images or video.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bluesky_post","tags":["bluesky"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (https://bsky.app/profile/<handle>/post/<id>) or an at:// URI","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bluesky/profile":{"get":{"summary":"Profile","description":"Public profile for a Bluesky account: followers, following, post count, bio, avatar, banner, and verification status.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bluesky_profile","tags":["bluesky"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (alice.bsky.social), a did:plc:… identifier, or a bsky.app profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"user_id","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle (alice.bsky.social), a did:plc:… identifier, or a bsky.app profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bluesky/search":{"get":{"summary":"Search posts","description":"Public Bluesky posts matching a keyword, newest first.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bluesky_search","tags":["bluesky"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keyword or phrase to search for","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/bluesky/user/posts":{"get":{"summary":"User posts","description":"Recent public posts from a Bluesky account, newest first. Reposts are excluded by default so the feed reflects what the account actually wrote.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"bluesky_userPosts","tags":["bluesky"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle, did, or bsky.app profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"default":50,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"include_reposts","in":"query","required":false,"schema":{"description":"Include reposts of other accounts. Default false.","type":"boolean"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"user_id","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle, did, or bsky.app profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/dailymotion/channel":{"get":{"summary":"Channel profile","description":"Public profile of a Dailymotion channel: followers, following, video count, lifetime views, verification badge, country and creation date.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"dailymotion_channel","tags":["dailymotion"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel username (wired), user id (x1audmk) or a dailymotion.com/<username> URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/dailymotion/channel/videos":{"get":{"summary":"Channel videos","description":"A Dailymotion channel's public uploads, newest first, 50 per page, all the way back to the first upload. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"dailymotion_channelVideos","tags":["dailymotion"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel username (wired), user id (x1audmk) or a dailymotion.com/<username> URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/dailymotion/search":{"get":{"summary":"Search videos","description":"Public Dailymotion video search, 50 per page. Dailymotion returns at most the first 1,000 results for any query, so paging stops there.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"dailymotion_search","tags":["dailymotion"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"`visited` is most viewed","default":"relevance","type":"string","enum":["relevance","recent","visited"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/dailymotion/video":{"get":{"summary":"Video details","description":"Public metadata for a Dailymotion video: views, likes, duration, tags, upload date and channel. Dailymotion has no public comments, so `commentCount` is null.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"dailymotion_video","tags":["dailymotion"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video id (x9529ik) or a dailymotion.com/video/… or dai.ly/… URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/dailymotion/video/transcript":{"get":{"summary":"Video transcript","description":"A Dailymotion video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. Most are generated automatically by Dailymotion.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"dailymotion_transcript","tags":["dailymotion"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video id (x9529ik) or a dailymotion.com/video/… or dai.ly/… URL","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Language code, e.g. \"en\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/album":{"get":{"summary":"Album details","description":"A Deezer album: title, artist, label, UPC, release date, fans (`likeCount`) and its tracks. Pass `cursor` to page the tracks of a long album.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_album","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer album id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"label":{"type":["string","null"]},"upc":{"description":"Universal Product Code of the release.","type":["string","null"]},"trackCount":{"type":["number","null"]},"items":{"description":"The album's tracks.","type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","label","upc","trackCount","items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/artist":{"get":{"summary":"Artist profile","description":"A Deezer artist: name, fans, album count, picture and link.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_artist","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer artist id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/artist/albums":{"get":{"summary":"Artist albums","description":"An artist's albums, singles and EPs on Deezer. `likeCount` is the release's fans.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_artistAlbums","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer artist id","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/artist/top-tracks":{"get":{"summary":"Artist top tracks","description":"An artist's most popular tracks on Deezer, most popular first.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_artistTopTracks","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer artist id","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/charts":{"get":{"summary":"Charts","description":"Deezer's global top tracks, albums, artists, playlists or podcasts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_charts","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"type","in":"query","required":false,"schema":{"default":"tracks","type":"string","enum":["tracks","albums","artists","playlists","podcasts"]}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/Post"},{"$ref":"#/components/schemas/Creator"},{"type":"object","properties":{"platform":{"const":"deezer"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"coverImageUrl":{"type":["string","null"]},"trackCount":{"type":["number","null"]},"fanCount":{"description":"Deezer users who added the playlist to their favourites.","type":["number","null"]},"durationSeconds":{"type":["number","null"]}},"required":["platform","id","title","url","description","ownerId","ownerName","coverImageUrl","trackCount","fanCount","durationSeconds"]}]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/playlist":{"get":{"summary":"Playlist contents","description":"A public Deezer playlist: title, owner, description, cover, track count, fans and its tracks. Pass `cursor` to page the tracks of a long playlist.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_playlist","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer playlist id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"deezer"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"coverImageUrl":{"type":["string","null"]},"trackCount":{"type":["number","null"]},"fanCount":{"description":"Deezer users who added the playlist to their favourites.","type":["number","null"]},"durationSeconds":{"type":["number","null"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["platform","id","title","url","description","ownerId","ownerName","coverImageUrl","trackCount","fanCount","durationSeconds","items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/podcast":{"get":{"summary":"Podcast details","description":"A Deezer podcast: title, description, artwork and fans. Deezer publishes no episode count, so `postCount` is null.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_podcast","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer podcast id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/podcast/episodes":{"get":{"summary":"Podcast episodes","description":"A Deezer podcast's episodes, newest first.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_podcastEpisodes","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer podcast id","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/search":{"get":{"summary":"Search","description":"Search Deezer's catalogue for tracks, albums, artists, playlists or podcasts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_search","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"default":"track","type":"string","enum":["track","album","artist","playlist","podcast"]}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/Post"},{"$ref":"#/components/schemas/Creator"},{"type":"object","properties":{"platform":{"const":"deezer"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"coverImageUrl":{"type":["string","null"]},"trackCount":{"type":["number","null"]},"fanCount":{"description":"Deezer users who added the playlist to their favourites.","type":["number","null"]},"durationSeconds":{"type":["number","null"]}},"required":["platform","id","title","url","description","ownerId","ownerName","coverImageUrl","trackCount","fanCount","durationSeconds"]}]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/track":{"get":{"summary":"Track details","description":"A Deezer track: title, artist, album artwork, duration, release date, ISRC and tempo.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_track","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer track id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"isrc":{"description":"International Standard Recording Code.","type":["string","null"]},"bpm":{"description":"Tempo in beats per minute. Null when Deezer has not measured it.","type":["number","null"]}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","isrc","bpm"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/deezer/user/playlists":{"get":{"summary":"User playlists","description":"A Deezer user's public playlists.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"deezer_userPlaylists","tags":["deezer"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric Deezer user id","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":25,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"deezer"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"coverImageUrl":{"type":["string","null"]},"trackCount":{"type":["number","null"]},"fanCount":{"description":"Deezer users who added the playlist to their favourites.","type":["number","null"]},"durationSeconds":{"type":["number","null"]}},"required":["platform","id","title","url","description","ownerId","ownerName","coverImageUrl","trackCount","fanCount","durationSeconds"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/detect-age-gender":{"get":{"summary":"Estimate age and gender from an image","description":"Apparent age and gender estimated from a public image URL. This is a model ESTIMATE, not measured platform data, and every response is labelled as such. Requires an inference provider to be configured on the deployment.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"inference_ageGender","tags":["inference"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Public image URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"imageUrl":{"type":"string"},"ageRange":{"type":["string","null"]},"estimatedAge":{"type":["number","null"]},"gender":{"type":["string","null"]},"confidence":{"type":["number","null"]},"isEstimate":{"const":true},"source":{"type":"string"},"fetchedAt":{"type":"string"}},"required":["imageUrl","ageRange","estimatedAge","gender","confidence","isEstimate","source","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/ebay/product":{"get":{"summary":"eBay listing details","description":"Public details for an eBay listing: title, price, condition, seller and an inline sample of reviews.\n**Required:** Pass either `product_id` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"ebay_product","tags":["ebay"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"x-parameter-constraints":["Pass either `product_id` or `url`."],"parameters":[{"name":"product_id","in":"query","required":false,"schema":{"description":"Numeric eBay item id, e.g. 166619046796","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"eBay listing URL, e.g. https://www.ebay.com/itm/166619046796","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"eBay marketplace, default com. One of: com, co.uk, com.au, de, ca, fr, it, es, at, ch, com.sg, com.my, ph, ie, pl, nl","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Product"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/ebay/search":{"get":{"summary":"Search eBay listings","description":"Public eBay search results for a query, with eBay's own filters and sort orders.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"ebay_search","tags":["ebay"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms, e.g. \"iphone 13\"","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"eBay marketplace, default com. One of: com, co.uk, com.au, de, ca, fr, it, es, at, ch, com.sg, com.my, ph, ie, pl, nl","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"number"}},{"name":"items_per_page","in":"query","required":false,"schema":{"type":"number"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["ending_soonest","newly_listed","price_lowest","price_highest","distance_nearest","best_match"]}},{"name":"seller_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"condition","in":"query","required":false,"schema":{"description":"Comma list: new, used, open_box, refurbished, for_parts, not_working","type":"string"}},{"name":"buying_format","in":"query","required":false,"schema":{"description":"Comma list: buy_it_now, auction, accepts_offers","type":"string"}},{"name":"show_only","in":"query","required":false,"schema":{"description":"Comma list: returns_accepted, authorized_seller, completed_items, sold_items, sale_items, listed_as_lots, search_in_description, benefits_charity, authenticity_guarantee","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/ad-library/ad":{"get":{"summary":"Ad details","description":"One ad from the Meta Ad Library by its archive id. Meta does not expose the archive as an addressable node for every ad; pass `page_id` as well and we find it by scanning that advertiser's archive instead.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_ad","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Ad archive id, or an Ad Library URL containing `?id=`","type":"string"}},{"name":"page_id","in":"query","required":false,"schema":{"description":"The advertiser's page id. Enables the archive-scan fallback.","type":"string"}},{"name":"country","in":"query","required":false,"schema":{"description":"Reached country used by the fallback scan","default":"US","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Ad archive id, or an Ad Library URL containing `?id=`","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Ad"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/ad-library/ad-transcript":{"get":{"summary":"Ad video transcript","description":"Retrieves a transcript for a single Facebook Ad Library video ad by ID or URL, read from the caption track Facebook publishes for the ad's video (`source: \"captions\"`). Transcription of ad videos without captions is coming soon; until then those answer `not_configured` (501) and are not charged. Credits are only deducted when a transcript is actually returned.\n**Required:** Pass exactly one of `id` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_adTranscript","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"x-parameter-constraints":["Pass exactly one of `id` or `url`."],"parameters":[{"name":"id","in":"query","required":false,"schema":{"description":"Ad archive id, or an Ad Library URL containing `?id=`","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"An Ad Library URL containing `?id=`","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Preferred caption locale","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/ad-library/advertisers":{"get":{"summary":"Find advertisers running ads","description":"Distinct advertisers whose ads match a search term, with the `page_id` needed by /v1/facebook/ad-library/page-ads. Derived from the ads an Ad Library search returns, ranked by how many of them each advertiser ran.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_adLibraryAdvertisers","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Advertiser name or a term from their ad copy","type":"string"}},{"name":"country","in":"query","required":false,"schema":{"default":"US","type":"string"}},{"name":"status","in":"query","required":false,"schema":{"default":"active","type":"string","enum":["active","inactive","all"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Ads sampled, 1-100. More ads means more advertisers.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/ad-library/page-ads":{"get":{"summary":"All ads for one advertiser","description":"Ads a specific Facebook page is running or has run, from Meta's Ad Library. This is the competitor-monitoring endpoint. `pagination.cursor` is filled only where the deployment reads the Graph Ad Library API; otherwise `pagination.hasMore` says whether more exist.\n**Cost:** 2 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_pageAds","tags":["facebook"],"x-credit-cost":2,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"page_id","in":"query","required":true,"schema":{"description":"Numeric page id, or an Ad Library URL containing `view_all_page_id`","type":"string"}},{"name":"country","in":"query","required":false,"schema":{"description":"ISO-3166 country code(s) the ad reached, comma-separated. Meta requires at least one.","default":"US","type":"string"}},{"name":"status","in":"query","required":false,"schema":{"description":"Delivery status at the time of the query.","default":"active","type":"string","enum":["active","inactive","all"]}},{"name":"ad_type","in":"query","required":false,"schema":{"description":"`political` unlocks Meta's spend, impression and demographic fields.","default":"all","type":"string","enum":["all","political","housing","employment","credit"]}},{"name":"media_type","in":"query","required":false,"schema":{"type":"string","enum":["all","image","meme","video","none"]}},{"name":"platform","in":"query","required":false,"schema":{"description":"Comma-separated: facebook, instagram, messenger, audience_network, threads, whatsapp, oculus","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Comma-separated BCP-47 codes, e.g. \"en,es\"","type":"string"}},{"name":"start_date","in":"query","required":false,"schema":{"description":"Earliest delivery date, YYYY-MM-DD","type":"string"}},{"name":"end_date","in":"query","required":false,"schema":{"description":"Latest delivery date, YYYY-MM-DD","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Ads per page, 1-100. Default 25.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"pageId","in":"query","required":false,"deprecated":true,"schema":{"description":"Numeric page id, or an Ad Library URL containing `view_all_page_id`","type":"string"},"description":"Alias for `page_id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Ad"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/ad-library/search":{"get":{"summary":"Search the Meta Ad Library","description":"Facebook, Instagram, Messenger and Threads ads matching a search term, from Meta's Ad Library, in the Library's own order. Spend and impression ranges are filled for political and issue ads only where the deployment reads the Graph Ad Library API; `pagination.hasMore` says when more results exist.\n**Cost:** 2 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_adLibrarySearch","tags":["facebook"],"x-credit-cost":2,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search term, matched against ad text and advertiser name","type":"string"}},{"name":"search_type","in":"query","required":false,"schema":{"description":"`exact_phrase` matches the words in order","default":"unordered","type":"string","enum":["unordered","exact_phrase"]}},{"name":"country","in":"query","required":false,"schema":{"description":"ISO-3166 country code(s) the ad reached, comma-separated. Meta requires at least one.","default":"US","type":"string"}},{"name":"status","in":"query","required":false,"schema":{"description":"Delivery status at the time of the query.","default":"active","type":"string","enum":["active","inactive","all"]}},{"name":"ad_type","in":"query","required":false,"schema":{"description":"`political` unlocks Meta's spend, impression and demographic fields.","default":"all","type":"string","enum":["all","political","housing","employment","credit"]}},{"name":"media_type","in":"query","required":false,"schema":{"type":"string","enum":["all","image","meme","video","none"]}},{"name":"platform","in":"query","required":false,"schema":{"description":"Comma-separated: facebook, instagram, messenger, audience_network, threads, whatsapp, oculus","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Comma-separated BCP-47 codes, e.g. \"en,es\"","type":"string"}},{"name":"start_date","in":"query","required":false,"schema":{"description":"Earliest delivery date, YYYY-MM-DD","type":"string"}},{"name":"end_date","in":"query","required":false,"schema":{"description":"Latest delivery date, YYYY-MM-DD","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Ads per page, 1-100. Default 25.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Ad"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/city-events":{"get":{"summary":"Get the events of a city","description":"Public events Facebook is suggesting for a city, from its Events Explore feed (e.g. https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547). `time` narrows the window to today, this week, or next week; without it Facebook returns whatever it has queued as upcoming, in whatever order it ranks them. Only the first, server-rendered page: host and description are not exposed on this listing (only on /v1/facebook/event). `pagination.hasMore` says whether Facebook has more; this endpoint returns no cursor to fetch them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_cityEvents","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Explore URL (\"facebook.com/events/explore/<city-slug>/<id>\") or a bare \"<city-slug>/<id>\" pair","type":"string"}},{"name":"time","in":"query","required":false,"schema":{"description":"Narrow to Facebook's own window. Defaults to all upcoming.","type":"string","enum":["today","this_week","next_week"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"startsAt":{"description":"ISO 8601, UTC.","type":["string","null"]},"endsAt":{"description":"ISO 8601, UTC. Null when the event has no end time.","type":["string","null"]},"timeText":{"description":"Facebook's own rendering of the time, e.g. \"Sat, Sep 5 at 3:00 PM MDT\". It carries the event's LOCAL timezone, which the epoch timestamps do not.","type":["string","null"]},"isOnline":{"type":["boolean","null"]},"isCanceled":{"type":["boolean","null"]},"isPast":{"type":["boolean","null"]},"place":{"type":["object","null"],"properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"address":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}},"required":["id","name","address","latitude","longitude"]},"hostId":{"type":["string","null"]},"hostName":{"type":["string","null"]},"hostUrl":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"ticketPriceText":{"type":["string","null"]},"interestedCount":{"description":"People who marked the event Interested or Going. In list results above a thousand, Facebook's rounded figure (\"1.2K\").","type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","startsAt","endsAt","timeText","isOnline","isCanceled","isPast","place","hostId","hostName","hostUrl","thumbnailUrl","ticketPriceText","interestedCount","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/comment-replies":{"get":{"summary":"Replies to a comment","description":"Replies under one comment on a public Facebook post, ten per page. Pass the post URL and the comment id (the `id` of any item from /v1/facebook/post-comments), then `pagination.cursor` for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_commentReplies","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Full post URL the comment sits on","type":"string"}},{"name":"comment_id","in":"query","required":true,"schema":{"description":"Numeric comment id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/event":{"get":{"summary":"Event details","description":"Full details for one public Facebook event: description, start and end time, venue with coordinates, host and ticket price range.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_event","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Event URL or numeric event id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"startsAt":{"description":"ISO 8601, UTC.","type":["string","null"]},"endsAt":{"description":"ISO 8601, UTC. Null when the event has no end time.","type":["string","null"]},"timeText":{"description":"Facebook's own rendering of the time, e.g. \"Sat, Sep 5 at 3:00 PM MDT\". It carries the event's LOCAL timezone, which the epoch timestamps do not.","type":["string","null"]},"isOnline":{"type":["boolean","null"]},"isCanceled":{"type":["boolean","null"]},"isPast":{"type":["boolean","null"]},"place":{"type":["object","null"],"properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"address":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}},"required":["id","name","address","latitude","longitude"]},"hostId":{"type":["string","null"]},"hostName":{"type":["string","null"]},"hostUrl":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"ticketPriceText":{"type":["string","null"]},"interestedCount":{"description":"People who marked the event Interested or Going. In list results above a thousand, Facebook's rounded figure (\"1.2K\").","type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","startsAt","endsAt","timeText","isOnline","isCanceled","isPast","place","hostId","hostName","hostUrl","thumbnailUrl","ticketPriceText","interestedCount","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/events/search":{"get":{"summary":"Search public events","description":"Public Facebook events matching a search term. Results are ranked and biased toward where Facebook places the request, so the same query can return a different set on another call. Treat this as discovery, not as an enumerable list.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_eventsSearch","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"What to search for, e.g. \"jazz festival\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"startsAt":{"description":"ISO 8601, UTC.","type":["string","null"]},"endsAt":{"description":"ISO 8601, UTC. Null when the event has no end time.","type":["string","null"]},"timeText":{"description":"Facebook's own rendering of the time, e.g. \"Sat, Sep 5 at 3:00 PM MDT\". It carries the event's LOCAL timezone, which the epoch timestamps do not.","type":["string","null"]},"isOnline":{"type":["boolean","null"]},"isCanceled":{"type":["boolean","null"]},"isPast":{"type":["boolean","null"]},"place":{"type":["object","null"],"properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"address":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}},"required":["id","name","address","latitude","longitude"]},"hostId":{"type":["string","null"]},"hostName":{"type":["string","null"]},"hostUrl":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"ticketPriceText":{"type":["string","null"]},"interestedCount":{"description":"People who marked the event Interested or Going. In list results above a thousand, Facebook's rounded figure (\"1.2K\").","type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","startsAt","endsAt","timeText","isOnline","isCanceled","isPast","place","hostId","hostName","hostUrl","thumbnailUrl","ticketPriceText","interestedCount","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/group":{"get":{"summary":"Public group info","description":"Name, member count, privacy setting and description for a public Facebook group. Member count lands in `followerCount` (a group's equivalent of an audience size) and the privacy setting in `category`. Facebook rounds that count on large groups (\"12K members\"); `raw.memberCountIsApproximate` says whether the number you got was rounded.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_group","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Group URL, group id, or group slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/group-posts":{"get":{"summary":"Public group posts","description":"Recent posts from a public Facebook group, with reaction, comment and share counts where Facebook renders them. Only the newest few stories render to a logged-out visitor, the same limit /v1/facebook/page-posts has. Private groups return an empty result; their posts are not public and we do not log in.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_groupPosts","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Group URL, group id, or group slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/marketplace/item":{"get":{"summary":"Marketplace listing details","description":"One public Facebook Marketplace listing: title, full description, price, location, delivery options and every photo. Facebook does not render the seller to a logged-out visitor, so seller identity is not returned.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_marketplaceItem","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Marketplace item URL or numeric listing id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"priceText":{"description":"As Facebook formatted it, e.g. \"$150\", carrying the currency symbol.","type":["string","null"]},"priceAmount":{"description":"Numeric amount in the listing's own currency.","type":["number","null"]},"originalPriceText":{"description":"The pre-discount price, when the seller marked one down.","type":["string","null"]},"isSold":{"type":["boolean","null"]},"isPending":{"type":["boolean","null"]},"isLive":{"type":["boolean","null"]},"locationText":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"categoryId":{"type":["string","null"]},"deliveryTypes":{"type":"array","items":{"type":"string"}},"thumbnailUrl":{"type":["string","null"]},"imageUrls":{"description":"Up to ten, the first of which is `thumbnailUrl`.","type":"array","items":{"type":"string"}},"listedAt":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","priceText","priceAmount","originalPriceText","isSold","isPending","isLive","locationText","city","state","categoryId","deliveryTypes","thumbnailUrl","imageUrls","listedAt","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/marketplace/locations":{"get":{"summary":"Find a Marketplace location","description":"Resolve a place name to the Marketplace location ids /v1/facebook/marketplace/search accepts, plus the neighbouring locations Facebook offers around it. Marketplace is city-scoped, so this is how you search a city you are not sitting in.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_marketplaceLocations","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Place name, e.g. \"London\" or \"San Francisco\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"description":"City page id where Facebook gave one, otherwise the resolved slug. Either is valid as `location` on /v1/facebook/marketplace/search.","type":"string"},"name":{"type":"string"},"url":{"type":"string"},"isPrimary":{"description":"True for the place the query resolved to; the rest are its neighbours.","type":"boolean"},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","isPrimary","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/marketplace/search":{"get":{"summary":"Search Marketplace listings","description":"Public Facebook Marketplace listings matching a search term, with price, condition flags, location and photos. `location` takes a city slug or a location id from /v1/facebook/marketplace/locations; without one, Facebook picks the city it places the request in, which you do not control. Pass `location` for results you can repeat.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_marketplaceSearch","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"What to search for, e.g. \"mountain bike\"","type":"string"}},{"name":"location","in":"query","required":false,"schema":{"description":"City slug (\"nyc\", \"london\") or a location id from /v1/facebook/marketplace/locations","type":"string"}},{"name":"min_price","in":"query","required":false,"schema":{"description":"Lowest price, in the location's currency","type":"number"}},{"name":"max_price","in":"query","required":false,"schema":{"description":"Highest price, in the location's currency","type":"number"}},{"name":"days_since_listed","in":"query","required":false,"schema":{"description":"Only listings posted in the last N days","type":"number"}},{"name":"radius_km","in":"query","required":false,"schema":{"description":"Search radius around the location, in kilometres","type":"number"}},{"name":"sort_by","in":"query","required":false,"schema":{"description":"Facebook's own sort keys","type":"string","enum":["best_match","creation_time_descend","price_ascend","price_descend","distance_ascend"]}},{"name":"delivery_method","in":"query","required":false,"schema":{"description":"Restrict to collection-only or shipped listings","type":"string","enum":["local_pick_up","shipping"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"title":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"priceText":{"description":"As Facebook formatted it, e.g. \"$150\", carrying the currency symbol.","type":["string","null"]},"priceAmount":{"description":"Numeric amount in the listing's own currency.","type":["number","null"]},"originalPriceText":{"description":"The pre-discount price, when the seller marked one down.","type":["string","null"]},"isSold":{"type":["boolean","null"]},"isPending":{"type":["boolean","null"]},"isLive":{"type":["boolean","null"]},"locationText":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"categoryId":{"type":["string","null"]},"deliveryTypes":{"type":"array","items":{"type":"string"}},"thumbnailUrl":{"type":["string","null"]},"imageUrls":{"description":"Up to ten, the first of which is `thumbnailUrl`.","type":"array","items":{"type":"string"}},"listedAt":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","priceText","priceAmount","originalPriceText","isSold","isPending","isLive","locationText","city","state","categoryId","deliveryTypes","thumbnailUrl","imageUrls","listedAt","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/page-posts":{"get":{"summary":"Public Page posts","description":"Recent public posts from a Facebook Page, newest first, three per page, with text, reaction, comment and share counts, and the publish timestamp. Pass `pagination.cursor` back for the next three.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_pagePosts","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL, @handle, slug, or numeric page id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/page-reels":{"get":{"summary":"Public Page videos and reels","description":"Public videos and reels from a Facebook Page. Reads the Page's reels tab first, ten per page with `pagination.cursor` for the next ten, and falls back to its video grid, which renders around twenty entries with titles, view counts and durations and has no cursor, so a Page with no reels returns its videos rather than an error. Items are keyed by video id and can be passed straight to /v1/facebook/post or /v1/facebook/post-transcript.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_pageReels","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL, @handle, slug, or numeric page id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/post":{"get":{"summary":"Single post, video, or reel","description":"One public Facebook post, video or reel by URL, with its text and engagement counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_post","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Full post, video, or reel URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/post-comments":{"get":{"summary":"Comments on a post","description":"Top-level comments on a public Facebook post, with author, reaction count and reply count, in Facebook's \"Most relevant\" order. The first page is the head of the thread Facebook renders into the post, usually two comments; pass `pagination.cursor` back for the next ten. The post's full comment total is on /v1/facebook/post. Use /v1/facebook/comment-replies for the replies under one comment. `likeCount` is only as precise as Facebook publishes it: comment reactions ship in abbreviated form (\"2.4K\") with no exact figure anywhere in the payload, so counts above about a thousand are rounded at source.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_postComments","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Full post, video, or reel URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/post-transcript":{"get":{"summary":"Video transcript","description":"Transcript for a public Facebook video or reel, as one text block plus timed cues. Reads the caption track Facebook publishes for the video, auto-generated when the uploader added none (`source: \"captions\"`). Transcription of videos without captions is coming soon; until then such a video answers `not_configured` (501) and is not charged.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_postTranscript","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Full video or reel URL","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Preferred caption locale, e.g. \"en\" or \"en_US\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/profile":{"get":{"summary":"Public Page profile","description":"Name, category, follower and like counts, description, banner and outbound links for a public Facebook Page. `followerCount` is as precise as Facebook renders it: exact on a small Page (\"498 followers\"), rounded on a large one (\"28M followers\", so ±500,000). `raw.followerCountIsApproximate` says which you got, and `raw.likeCount` carries the exact like figure Facebook always prints. Pass `extra_fetch=true` to also fill `createdAt`, the date the Page was created, which lives only on the Page transparency tab: it costs 1 extra credit and one large additional fetch, refunded if that fetch cannot be read.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_profile","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL, @handle, slug, or numeric page id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/profile-events":{"get":{"summary":"Events on a Page","description":"Events hosted by a public Facebook Page, upcoming ones first, with past events where Facebook still lists them, eight per page; pass `pagination.cursor` back for the next eight. Each carries start time, place, host and the cover photo.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_profileEvents","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL, @handle, slug, or numeric page id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"facebook"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"},"description":{"type":["string","null"]},"startsAt":{"description":"ISO 8601, UTC.","type":["string","null"]},"endsAt":{"description":"ISO 8601, UTC. Null when the event has no end time.","type":["string","null"]},"timeText":{"description":"Facebook's own rendering of the time, e.g. \"Sat, Sep 5 at 3:00 PM MDT\". It carries the event's LOCAL timezone, which the epoch timestamps do not.","type":["string","null"]},"isOnline":{"type":["boolean","null"]},"isCanceled":{"type":["boolean","null"]},"isPast":{"type":["boolean","null"]},"place":{"type":["object","null"],"properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"address":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}},"required":["id","name","address","latitude","longitude"]},"hostId":{"type":["string","null"]},"hostName":{"type":["string","null"]},"hostUrl":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"ticketPriceText":{"type":["string","null"]},"interestedCount":{"description":"People who marked the event Interested or Going. In list results above a thousand, Facebook's rounded figure (\"1.2K\").","type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","startsAt","endsAt","timeText","isOnline","isCanceled","isPast","place","hostId","hostName","hostUrl","thumbnailUrl","ticketPriceText","interestedCount","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/facebook/profile-photos":{"get":{"summary":"Photos on a Page","description":"Photos from a public Facebook Page's photo grid, eight per page, newest first; pass `pagination.cursor` back for the next eight. Facebook exposes each photo's accessibility caption rather than the text of the post it came from, so that is what lands in `title`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"facebook_profilePhotos","tags":["facebook"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL, @handle, slug, or numeric page id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/find-social-profiles":{"get":{"summary":"Find a creator's other social profiles","description":"Starts from one public profile and reports the other accounts that profile can be shown to own: profiles it links to directly, profiles reached through a recognised link-in-bio page (Linktree, Komi, Pillar, Lnk.Bio, LinkMe), and same-handle accounts on the other supported platforms that link back to the source or share a website only the owner controls. Covers Instagram, TikTok, YouTube, X and Facebook. A same-handle account with no corroboration is reported under `candidates`, never as a profile: the handle matching is a fact handed over, not a claim. There is no search-engine discovery and no display-name matching; neither is evidence of ownership. Every result carries the evidence type it rests on. Each entry in `failures` carries the inner error’s `code` and `message`, so \"we checked and found nothing\" (`upstream_not_found`, `empty_result`) stays distinguishable from \"we could not check\" (`upstream_unavailable`, `not_configured`); only the second kind sets `partial`. Not covered: any platform outside the five, and links a creator has not published. An X/Twitter source can only be resolved by same-handle probing, because X exposes no bio links at all to a logged-out caller. The 20-second budget stops the composite scheduling new inner fetches; it does not abort one already in flight, so a slow leg is reported as a timeout while its request finishes unread. Link-in-bio expansion is verified against fixtures only, because no channel sampled live from our network published a link-in-bio URL to expand. A `partial: true` answer is cached for the same seven days as a complete one, so pass `cache_max_age=0` to refetch after a transient failure rather than being served the gap for a week. Pricing is per source checked: the 10 credits buy the legs this call runs (the starting profile, each link-in-bio page expanded, and each same-handle probe), and a leg listed in `unchecked` is not charged for, so a partial answer costs `ceil(10 x legs answered / legs attempted)` and never more than 10. **Any response with an empty `profiles` AND an empty `candidates` costs nothing at all**, whatever `unchecked` says: an answer carrying no account has delivered nothing to charge for, and the `unchecked` disclosure ships free. When every leg was checked and none carries another account that free answer is an `empty_result`; when nothing beyond the starting profile could be checked it is an error, because \"no other accounts\" would then be a fact we did not establish.\n**Cost:** 10 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"identity_findSocialProfiles","tags":["identity"],"x-credit-cost":10,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"platform","in":"query","required":true,"schema":{"description":"Platform the handle belongs to. `x` is an alias for `twitter`.","type":"string","enum":["instagram","tiktok","youtube","x","twitter","facebook"]}},{"name":"handle","in":"query","required":true,"schema":{"description":"Bare handle (@nasa). YouTube also accepts a UC… channel id. URLs are rejected.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"source":{"type":"object","properties":{"platform":{"type":"string","enum":["instagram","tiktok","youtube","twitter","facebook"]},"handle":{"type":"string"},"url":{"type":"string"},"displayName":{"type":["string","null"]}},"required":["platform","handle","url","displayName"]},"profiles":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["instagram","tiktok","youtube","twitter","facebook"]},"handle":{"type":"string"},"url":{"type":"string"},"evidence":{"type":"string","enum":["reciprocal_link","source_link","link_in_bio","shared_website"]},"confidence":{"type":"number"}},"required":["platform","handle","url","evidence","confidence"]}},"candidates":{"type":"array","items":{"type":"string"}},"failures":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"code":{"type":"string","enum":["missing_api_key","invalid_api_key","revoked_api_key","account_suspended","endpoint_not_permitted","insufficient_credits","daily_cap_exceeded","rate_limited","invalid_request","not_found","upstream_not_found","upstream_unavailable","upstream_timeout","upstream_schema_drift","empty_result","not_configured","job_not_found","too_many_targets","internal_error"]},"message":{"type":"string"}},"required":["url","code","message"]}},"unchecked":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"code":{"type":"string","enum":["missing_api_key","invalid_api_key","revoked_api_key","account_suspended","endpoint_not_permitted","insufficient_credits","daily_cap_exceeded","rate_limited","invalid_request","not_found","upstream_not_found","upstream_unavailable","upstream_timeout","upstream_schema_drift","empty_result","not_configured","job_not_found","too_many_targets","internal_error"]},"message":{"type":"string"}},"required":["url","code","message"]}},"partial":{"type":"boolean"}},"required":["source","profiles","candidates","failures","unchecked","partial"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/flickr/post":{"get":{"summary":"Photo or video details","description":"A public Flickr photo or video: title, description, owner, views, faves, comments, upload date and media addresses. A video lists one signed MP4 per encode, best first, and those links expire within minutes, so fetch them straight away. A photo lists its largest public size. `durationSeconds` is null because Flickr does not state it.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"flickr_post","tags":["flickr"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Photo or video id (50843625323), a flickr.com/photos/<owner>/<id> URL or a flic.kr/p/… short link","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/repository":{"get":{"summary":"Repository details","description":"Public details for a repository: stars, forks, open issues, topics, language and licence. Stars map to `likeCount`, forks to `shareCount`; open issues and pull requests are `openIssuesCount`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_repository","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"\"owner/repo\" or a github.com repository URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"language":{"description":"The repository's primary language.","type":["string","null"]},"license":{"description":"SPDX identifier of the licence, or its name when it has none; null when no licence is declared.","type":["string","null"]},"openIssuesCount":{"description":"Open issues plus open pull requests.","type":["number","null"]},"isFork":{"type":["boolean","null"]},"isArchived":{"type":["boolean","null"]},"pushedAt":{"description":"When a commit was last pushed to any branch.","type":["string","null"]}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","language","license","openIssuesCount","isFork","isArchived","pushedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/trending/developers":{"get":{"summary":"Trending developers","description":"The public github.com/trending/developers board. Counts are null: the board renders names and popular repositories, not follower numbers.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_trendingDevelopers","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"language","in":"query","required":false,"schema":{"description":"Language slug, e.g. \"rust\"","type":"string"}},{"name":"since","in":"query","required":false,"schema":{"default":"daily","type":"string","enum":["daily","weekly","monthly"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/trending/repositories":{"get":{"summary":"Trending repositories","description":"The public github.com/trending board. `likeCount` is total stars, `shareCount` total forks and `starsInPeriod` the stars gained in the chosen period.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_trendingRepositories","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"language","in":"query","required":false,"schema":{"description":"Language slug, e.g. \"typescript\"","type":"string"}},{"name":"since","in":"query","required":false,"schema":{"default":"daily","type":"string","enum":["daily","weekly","monthly"]}},{"name":"spoken_language_code","in":"query","required":false,"schema":{"description":"Two-letter code, e.g. \"en\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"language":{"description":"The repository's primary language.","type":["string","null"]},"starsInPeriod":{"description":"Stars gained in the chosen period, which the board ranks by.","type":["number","null"]},"builtBy":{"description":"Handles of the top contributors the board shows.","type":"array","items":{"type":"string"}}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","language","starsInPeriod","builtBy"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user":{"get":{"summary":"User or organisation profile","description":"Public profile for a GitHub user or organisation: followers, public repo count, bio, location and links.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_user","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/activity":{"get":{"summary":"Public activity","description":"Public events for a user: pushes, pull requests, issues, stars, forks and releases. GitHub caps this feed at 300 events / 90 days regardless of paging.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_activity","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Page number from the previous response","type":"string"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/contributions":{"get":{"summary":"Contributions calendar","description":"The contribution graph for one calendar year: a per-day count plus GitHub's 0–4 intensity level, and the annual total.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_contributions","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"year","in":"query","required":false,"schema":{"description":"Calendar year, e.g. \"2025\". Defaults to the current year.","type":"string"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"github"},"handle":{"type":"string"},"year":{"type":"number"},"url":{"type":"string"},"totalContributions":{"description":"Null when the heading GitHub renders it in cannot be read.","type":["number","null"]},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"count":{"type":"number"},"level":{"description":"GitHub's own 0–4 intensity bucket for the square.","type":"number"}},"required":["date","count","level"]}},"fetchedAt":{"type":"string"}},"required":["platform","handle","year","url","totalContributions","days","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/followers":{"get":{"summary":"Followers","description":"Accounts following this user, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_followers","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Page number from the previous response","type":"string"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/following":{"get":{"summary":"Following","description":"Accounts this user follows, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_following","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Page number from the previous response","type":"string"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/pull-requests":{"get":{"summary":"Pull requests by a user","description":"Pull requests authored by a user across all public repositories, newest first. `since` / `until` filter on creation date.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_pullRequests","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Username, e.g. \"gaearon\"","type":"string"}},{"name":"since","in":"query","required":false,"schema":{"description":"Only PRs created on or after this date (YYYY-MM-DD)","type":"string"}},{"name":"until","in":"query","required":false,"schema":{"description":"Only PRs created on or before this date (YYYY-MM-DD)","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Page number from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"repository":{"description":"\"owner/repo\" the pull request was opened against.","type":["string","null"]},"state":{"description":"A merged pull request is closed with a `mergedAt`.","type":["string","null"],"enum":["open","closed"]},"draft":{"type":["boolean","null"]},"mergedAt":{"type":["string","null"]}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","repository","state","draft","mergedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/github/user/repositories":{"get":{"summary":"User repositories","description":"Public repositories owned by a user or organisation, 30 per page.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"github_userRepositories","tags":["github"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Username, e.g. \"torvalds\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://github.com/torvalds","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"default":"owner","type":"string","enum":["all","owner","member"]}},{"name":"sort","in":"query","required":false,"schema":{"default":"updated","type":"string","enum":["created","updated","pushed","full_name"]}},{"name":"direction","in":"query","required":false,"schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Page number from the previous response","type":"string"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"language":{"description":"The repository's primary language.","type":["string","null"]},"license":{"description":"SPDX identifier of the licence, or its name when it has none; null when no licence is declared.","type":["string","null"]},"openIssuesCount":{"description":"Open issues plus open pull requests.","type":["number","null"]},"isFork":{"type":["boolean","null"]},"isArchived":{"type":["boolean","null"]},"pushedAt":{"description":"When a commit was last pushed to any branch.","type":["string","null"]}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","language","license","openIssuesCount","isFork","isArchived","pushedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/ad-library/ad":{"get":{"summary":"Ad details","description":"One creative from the Ads Transparency Centre, with every rendering variant and the per-country dates it ran. For a text ad, `headline`, `body` and `linkUrl` come from its rendered preview, and `linkUrl` is the address the ad displays.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_ad","tags":["google"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Creative URL, e.g. https://adstransparency.google.com/advertiser/AR.../creative/CR...?region=US","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Overrides the region in the URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Ad"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/ad-library/advertiser-ads":{"get":{"summary":"Ads run by an advertiser or domain","description":"Creatives in the Ads Transparency Centre for one advertiser id or one verified domain, with first-shown and last-shown dates. Pass the `cursor` from the previous response to page.\n**Required:** Pass either `domain` or `advertiser_id`.\n**Cost:** 2 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_advertiserAds","tags":["google"],"x-credit-cost":2,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `domain` or `advertiser_id`."],"parameters":[{"name":"domain","in":"query","required":false,"schema":{"description":"Verified advertiser domain, e.g. \"nike.com\"","type":"string"}},{"name":"advertiser_id","in":"query","required":false,"schema":{"description":"Advertiser id from /ad-library/advertisers, e.g. \"AR167...\"","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id","default":"US","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Continuation token from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Ad"}},"totalLower":{"description":"Lower bound of the archive estimate of how many ads match, across every page.","type":["number","null"]},"totalUpper":{"description":"Upper bound of that estimate.","type":["number","null"]}},"required":["items","totalLower","totalUpper"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/ad-library/advertisers":{"get":{"summary":"Find advertisers in the Ads Transparency Centre","description":"Advertisers matching a name, with the advertiser id that /v1/google/ad-library/advertiser-ads needs, plus the verified domains Google suggests for the same term in `domains`. Without `region` every region is searched. `postCount` and `adCountUpper` are the lower and upper bounds of the ad-count range the archive publishes, counted within `region` when one is given.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_adLibraryAdvertisers","tags":["google"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Advertiser or brand name, e.g. \"nike\"","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id. Omit to search every region.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"adCountUpper":{"description":"Upper bound of the ad-count range the archive publishes; `postCount` is the lower bound.","type":["number","null"]}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt","adCountUpper"]}},"domains":{"type":"array","items":{"type":"string"}}},"required":["items","domains"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/jobs":{"get":{"summary":"Google Jobs results","description":"Job postings for a query: title, company, location and the board it was syndicated from. Results lean toward an area that can change between calls, so name the place in your query. Slower than most endpoints, often 20 seconds or more. A failed attempt returns `upstream_unavailable` and is not charged.\n**Cost:** 5 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_jobs","tags":["google"],"x-credit-cost":5,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search query","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to \"com\".","default":"com","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Two-letter country code. Sets `gl` when `gl` is not given.","type":"string"}},{"name":"hl","in":"query","required":false,"schema":{"description":"Host language for the results page, e.g. \"en\", \"de\". Defaults to \"en\".","default":"en","type":"string"}},{"name":"gl","in":"query","required":false,"schema":{"description":"Two-letter country code Google should bias results toward.","type":"string"}},{"name":"uule","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/JobPosting"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/maps-search":{"get":{"summary":"Google Maps place search","description":"Business listings near a coordinate: name, address, phone, website, rating and hours, 20 per page. A failed attempt returns `upstream_unavailable` and is not charged.\n**Cost:** 5 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_mapsSearch","tags":["google"],"x-credit-cost":5,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search query","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to \"com\".","default":"com","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Two-letter country code. Sets `gl` when `gl` is not given.","type":"string"}},{"name":"hl","in":"query","required":false,"schema":{"description":"Host language for the results page, e.g. \"en\", \"de\". Defaults to \"en\".","default":"en","type":"string"}},{"name":"gl","in":"query","required":false,"schema":{"description":"Two-letter country code Google should bias results toward.","type":"string"}},{"name":"uule","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"0-based result offset.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"latitude","in":"query","required":true,"schema":{"description":"Latitude of the search centre","type":"number"}},{"name":"longitude","in":"query","required":true,"schema":{"description":"Longitude of the search centre","type":"number"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Place"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/news":{"get":{"summary":"Google News results","description":"News articles for a query: title, source and published time, up to about 100 items. `link` is Google's article link, not the publisher's URL. A failed attempt returns `upstream_unavailable` and is not charged.\n**Cost:** 5 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_news","tags":["google"],"x-credit-cost":5,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search query","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Must be \"com\", its default; any other value returns `invalid_request`. Use `gl` and `hl` for another country.","default":"com","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Two-letter country code. Sets `gl` when `gl` is not given.","type":"string"}},{"name":"hl","in":"query","required":false,"schema":{"description":"Host language for the results page, e.g. \"en\", \"de\". Defaults to \"en\".","default":"en","type":"string"}},{"name":"gl","in":"query","required":false,"schema":{"description":"Two-letter country code Google should bias results toward.","type":"string"}},{"name":"uule","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"0-based result offset.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"tbs","in":"query","required":false,"schema":{"description":"Time filter: hour/day/week/month/year, as Google's own `qdr` code.","type":"string","enum":["h","d","w","m","y"]}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/NewsArticle"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/search":{"get":{"summary":"Web search results","description":"Google web results for a query, 20 per page, up to 6 pages. Ranking can differ from a signed-out search on google.com. A failed attempt returns `upstream_unavailable` and is not charged.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_search","tags":["google"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id","default":"US","type":"string"}},{"name":"date_posted","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string","enum":["hour","day","week","month","year"]}},{"name":"page","in":"query","required":false,"schema":{"description":"1-based page number, up to 6. 20 results per page.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/google/shopping":{"get":{"summary":"Google Shopping results","description":"Shopping listings for a query: title, price, currency and merchant. `url` and `availability` are null because the listing page does not carry them. Slower than most endpoints, often 20 seconds or more. A failed attempt returns `upstream_unavailable` and is not charged.\n**Cost:** 5 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"google_shopping","tags":["google"],"x-credit-cost":5,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search query","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to \"com\".","default":"com","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"description":"Two-letter country code. Sets `gl` when `gl` is not given.","type":"string"}},{"name":"hl","in":"query","required":false,"schema":{"description":"Host language for the results page, e.g. \"en\", \"de\". Defaults to \"en\".","default":"en","type":"string"}},{"name":"gl","in":"query","required":false,"schema":{"description":"Two-letter country code Google should bias results toward.","type":"string"}},{"name":"uule","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"tbs","in":"query","required":false,"schema":{"description":"Not currently supported; any value returns `invalid_request`.","type":"string","enum":["h","d","w","m","y"]}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/hackernews/search":{"get":{"summary":"Search","description":"Hacker News stories and comments matching a search, newest first. Points and comment counts are given for stories; comments come back as plain text with their item page as the URL.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"hackernews_search","tags":["hackernews"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search text","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"`story`, `comment`, or `all` for both","default":"all","type":"string","enum":["story","comment","all"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/audio-reels":{"get":{"summary":"Reels using a sound","description":"Reels built on one audio track, the \"N reels using this audio\" list. Takes the numeric audio id or a /reels/audio/ URL. Falls back to the public audio page, which lists its first grid of reels only once rendered, as links and cover images.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_audioReels","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"audio_id","in":"query","required":true,"schema":{"description":"Numeric audio id, or a /reels/audio/<id>/ URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Reels per page, 1-50. Default 12.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/comment-replies":{"get":{"summary":"Replies under one comment","description":"The full reply thread under a single comment. Take `comment_id` from `data.items[].id` on /v1/instagram/post-comments; the post URL is still required because Instagram addresses replies through the media that carries them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_commentReplies","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post, reel or IGTV URL, or a bare shortcode","type":"string"}},{"name":"comment_id","in":"query","required":true,"schema":{"description":"`data.items[].id` from /v1/instagram/post-comments","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Replies per page, 1-50. Default 24.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/hashtag-posts":{"get":{"summary":"Posts under a hashtag","description":"Posts carrying a hashtag. `tab=top` is Instagram's ranking (one fixed page, no cursor); `tab=recent` is chronological and paginates. Falls back to the server-rendered tag page when the JSON surface declines, which returns the top grid only. Set `extra_fetch=true` to fill each post's publish date, like and comment counts and caption from its own page: 1 credit per item fetched, up to the page size.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_hashtagPosts","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"description":"Hashtag (#nasa or nasa), or an /explore/tags/ URL","type":"string"}},{"name":"tab","in":"query","required":false,"schema":{"description":"Instagram's ranking, or chronological","default":"top","type":"string","enum":["top","recent"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response. `recent` only","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/highlight":{"get":{"summary":"Stories inside a highlight","description":"Every story in one highlight reel, oldest first, with its media URLs. Takes the `id` from /v1/instagram/user-highlights, a bare numeric id, or a /stories/highlights/ URL.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_highlight","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Highlight id (\"highlight:17…\" or the bare number), or a /stories/highlights/ URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/popular-search":{"get":{"summary":"Top posts for a keyword","description":"Top posts for a keyword from Instagram's public Popular page for it, the page at instagram.com/popular/<keyword>/: reels, images and carousels together, in Instagram's order. One page; `hasMore` says whether Instagram holds more than it shows.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_popularSearch","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keyword to search for","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/post":{"get":{"summary":"Post or reel details","description":"One public post, reel or carousel with its caption, media URLs and engagement counts. Falls back to Instagram's public embed payload when the web client's persisted query is unavailable, so a Meta client release degrades this rather than breaking it. Play counts arrive in this same request, so there is no second fetch to skip and no play-count parameter to pass.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_post","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post, reel or IGTV URL, or a bare shortcode","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/post-comments":{"get":{"summary":"Comments on a post or reel","description":"Top-level comments, newest first, about fifteen per page, each with its text, author, like count and date. Follow `pagination.cursor` for older comments. Set `include_replies=true` to also return any replies Instagram shipped inline with their parent. For the full reply thread under one comment, use /v1/instagram/comment-replies.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_postComments","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post, reel or IGTV URL, or a bare shortcode","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Comments to ask for per page, 1-50. Default 24. Instagram serves at most about fifteen.","type":"number"}},{"name":"include_replies","in":"query","required":false,"schema":{"description":"Include replies that arrived inline with their parent comment","type":"boolean"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/profile":{"get":{"summary":"Profile details","description":"Public profile for an Instagram account: followers, following, post count, bio, links and business category. Private accounts return their public shell with `isPrivate: true` rather than an error. That is a real answer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_profile","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/profile-post-count":{"get":{"summary":"Post count for a profile","description":"The total post count on a public Instagram profile, exact wherever Instagram publishes the exact figure. Call this when a fuller profile is not needed. `source` names which of the two dialects Instagram ships a count in carried it (`edge_owner_to_timeline_media.count` or `media_count`). Instagram does not expose this metadata for every profile: when neither is present, `postCount` is null and the request is not charged.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_profilePostCount","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"instagram"},"handle":{"type":"string"},"postCount":{"type":["number","null"]},"source":{"description":"Which dialect carried the count. Null when neither did.","type":["string","null"],"enum":["graphql","api"]},"fetchedAt":{"type":"string"},"reason":{"description":"Present only when `postCount` is null. That response is not charged.","type":"string"}},"required":["platform","handle","postCount","source","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/profile-search":{"get":{"summary":"Search accounts","description":"Accounts matching a query, as unified Creators. The follower counts on a search result are Instagram's own summary and are thinner than /v1/instagram/profile. Fetch that for one account you care about. One page only; this surface has no cursor.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_profileSearch","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Handle or name to search for","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/reels-search":{"get":{"summary":"Search reels by keyword","description":"Reels matching a keyword, from Instagram's own keyword search rather than its hashtag index. The two return genuinely different sets, so this never quietly substitutes one for the other. Results are whatever Instagram ranked for the query at that moment.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_reelsSearch","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keyword to search for","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/search":{"get":{"summary":"Search accounts, hashtags and places","description":"Instagram's blended search, the one behind the search box. Returns three buckets: `users` as unified Creators, plus `hashtags` and `places`, which have no unified equivalent and keep Instagram's own shape. One page only; this surface has no cursor.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_search","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"What to search for","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"Restrict to one kind of result","default":"all","type":"string","enum":["all","users","hashtags","places"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}},"hashtags":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":["string","null"]},"mediaCount":{"type":["number","null"]},"url":{"type":"string"},"thumbnailUrl":{"type":["string","null"]}},"required":["name","id","mediaCount","url","thumbnailUrl"]}},"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"]},"name":{"type":"string"},"slug":{"type":["string","null"]},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"url":{"type":["string","null"]}},"required":["id","name","slug","address","city","latitude","longitude","url"]}}},"required":["users","hashtags","places"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/transcript":{"get":{"summary":"Reel or video transcript","description":"The caption track Instagram published for a reel or video, as one text block plus timed cues. This is Instagram's own track, never a transcription of the audio, so a transcript here is what the platform published rather than what a model guessed. Instagram has published no caption track on any reel checked so far, so most requests return `empty_result`, which is free.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_transcript","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Reel, post or IGTV URL, or a bare shortcode","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/trending-reels":{"get":{"summary":"Reels trending on Explore","description":"Reels off Instagram's public Explore grid. Worth knowing what this is and is not: Explore is region-shaped, so what comes back depends on where the request exits, and it is Instagram's editorial surface rather than a global chart. There is no public trending feed on Instagram; this is the closest one that exists. Set `extra_fetch=true` to fill each reel's publish date, caption and duration from its own page: 1 credit per item fetched, up to the page size.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_trendingReels","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Reels per page, 1-50. Default 24.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/user-embed":{"get":{"summary":"Profile via the public embed card","description":"A profile read off Instagram's public embed card, with the embed HTML in `raw.html` for anyone who wants to render it. Instagram publishes embeds so third parties can display them, which makes this the profile path it has the least reason to gate. The same reasoning puts the post embed on /v1/instagram/post's fallback. It carries fewer fields than /v1/instagram/profile; reach for it when that one is blocked, or when you want the markup.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_userEmbed","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/user-highlights":{"get":{"summary":"Story highlight covers","description":"The highlight reels pinned to a profile: title, cover, and how many stories each holds. Pass an `id` from here to /v1/instagram/highlight for the stories inside one. Highlights are the only Instagram stories that stay public indefinitely: live stories expire in 24 hours and are not served logged-out.\n**Required:** Pass either `handle` or `user_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_userHighlights","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `user_id`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given.","type":"string"}},{"name":"user_id","in":"query","required":false,"schema":{"description":"Numeric user id. Skips a lookup. Take it from `data.items[].authorId`.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaCount":{"type":["number","null"]},"url":{"type":["string","null"]},"ownerId":{"type":["string","null"]},"ownerHandle":{"type":["string","null"]},"createdAt":{"type":["string","null"]}},"required":["id","title","thumbnailUrl","mediaCount","url","ownerId","ownerHandle","createdAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/user-posts":{"get":{"summary":"Posts and reels from a profile","description":"A profile grid, newest first, twelve posts per page, each with its caption, type and owner. Follow `pagination.cursor` for older posts. On the first page, reels also carry like, comment and play counts; other posts, and every post on later pages, have them null, because the grid does not carry them. No page carries a publish date. Fetch /v1/instagram/post for a specific post to get its counts and date, or set `extra_fetch=true` to fill each post's publish date, like and comment counts and caption from its own page in one call: 1 credit per item fetched, up to the page size. `authorHandle` is read per post: a collab or tagged post appears in a profile grid owned by the OTHER account, and this reports the real owner rather than the handle you asked for.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_userPosts","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Posts per page, 1-12. Default 12.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}},{"name":"next_max_id","in":"query","required":false,"deprecated":true,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"},"description":"Alias for `cursor`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/user-reels":{"get":{"summary":"Reels from a profile","description":"A profile's reels, newest first, twelve per page, each with like, comment and play counts. Follow `pagination.cursor` for older reels. The first page also carries captions; later pages do not, so `text` is null there, and a collab reel owned by another account has `authorHandle` null. No page carries a publish date; fetch /v1/instagram/post for one reel's date, or set `extra_fetch=true` to fill each reel's publish date, caption and duration from its own page in one call: 1 credit per item fetched, up to the page size. If the reels tab is unavailable, the first page falls back to the clips in the profile grid, with captions but no counts and no cursor. An account with no public reels is an empty result, and is not charged. `raw.source` says which path answered.\n**Required:** Pass either `handle` or `user_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_userReels","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"x-parameter-constraints":["Pass either `handle` or `user_id`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given.","type":"string"}},{"name":"user_id","in":"query","required":false,"schema":{"description":"Numeric user id. Skips a lookup. Take it from `data.items[].authorId`.","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Reels per page, 1-12. Default 12.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}},{"name":"max_id","in":"query","required":false,"deprecated":true,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"},"description":"Alias for `cursor`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/instagram/user-tagged-posts":{"get":{"summary":"Posts a profile is tagged in","description":"Public posts by other accounts that tagged this user (the \"Tagged\" tab). Note this is other people's content: `authorHandle` is the poster, not the tagged account. Users can hide the tab, which returns `empty_result`.\n**Required:** Pass either `handle` or `user_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"instagram_userTaggedPosts","tags":["instagram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"x-parameter-constraints":["Pass either `handle` or `user_id`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given.","type":"string"}},{"name":"user_id","in":"query","required":false,"schema":{"description":"Numeric user id. Skips a lookup. Take it from `data.items[].authorId`.","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Posts per page, 1-50. Default 12.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/kick/clip":{"get":{"summary":"Clip","description":"A public Kick clip: title, creator, channel, duration, view count, and media URL.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"kick_clip","tags":["kick"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Clip URL (https://kick.com/<channel>/clips/clip_XXXX or https://kick.com/<channel>?clip=clip_XXXX) or a clip id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/komi":{"get":{"summary":"Komi page","description":"Public Komi page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"komi_page","tags":["komi"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://komi.io/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/kwai/post":{"get":{"summary":"Post","description":"A single public Kwai video with its view, like, comment and forward counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"kwai_post","tags":["kwai"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (https://www.kwai.com/@<handle>/video/<photo_id> or /photo/<photo_id>)","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/kwai/profile":{"get":{"summary":"Profile","description":"Public Kwai profile: follower and following counts, public video count, likes received, bio, avatar, and creator category.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"kwai_profile","tags":["kwai"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@carlinhos) or a kwai.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle (@carlinhos) or a kwai.com profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/kwai/user/posts":{"get":{"summary":"User posts","description":"Public videos from a Kwai profile, newest first after any pinned ones, with view, like, comment and forward counts. Pass `pagination.cursor` back as `cursor` for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"kwai_userPosts","tags":["kwai"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@carlinhos) or a kwai.com profile URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle (@carlinhos) or a kwai.com profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkbio":{"get":{"summary":"Lnk.Bio page","description":"Public Lnk.Bio page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkbio_page","tags":["linkbio"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://lnk.bio/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/ad":{"get":{"summary":"Ad details","description":"One ad from LinkedIn's public Ad Library: creative, copy, advertiser, and the paying entity. Ads covered by EU disclosure rules also carry run dates, target countries and impression bands; ads outside those rules do not, and those fields come back null rather than guessed.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_ad","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Ad Library URL (linkedin.com/ad-library/detail/...) or the numeric ad id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Ad"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/ads/search":{"get":{"summary":"Search ads","description":"Search LinkedIn's public Ad Library by advertiser or keyword. Pass `company` (a company page slug or numeric id) to list one advertiser's ads, `keyword` to search copy, or both. Returns the first page LinkedIn server-renders, about 25 ads; the total number of matches is in `raw.totalMatches`.\n**Required:** Pass `company`, `keyword`, or both. The Ad Library will not return an unfiltered archive.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_adsSearch","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass `company`, `keyword`, or both. The Ad Library will not return an unfiltered archive."],"parameters":[{"name":"company","in":"query","required":false,"schema":{"description":"Company page slug (\"microsoft\") or numeric company id (\"1035\")","type":"string"}},{"name":"keyword","in":"query","required":false,"schema":{"description":"Words to match in the ad copy","type":"string"}},{"name":"countries","in":"query","required":false,"schema":{"description":"Comma-separated ISO-3166 country codes the ad reached, e.g. \"US,GB\"","type":"string"}},{"name":"start_date","in":"query","required":false,"schema":{"description":"Earliest run date, YYYY-MM-DD","type":"string"}},{"name":"end_date","in":"query","required":false,"schema":{"description":"Latest run date, YYYY-MM-DD","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Ad"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/company":{"get":{"summary":"Company page","description":"A LinkedIn company page: description, industry, follower count, headquarters, size, type, founding year, specialties, employee count and logo. Also works for school and showcase pages.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_company","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Company URL (linkedin.com/company/...) or the company slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"employeeCount":{"description":"LinkedIn members who list this company as their employer.","type":["number","null"]},"companySize":{"description":"The size band the company chose, such as \"10,001+ employees\".","type":["string","null"]},"headquarters":{"type":["string","null"]},"companyType":{"description":"Such as \"Public Company\" or \"Privately Held\".","type":["string","null"]},"founded":{"description":"Year founded.","type":["number","null"]},"specialties":{"type":"array","items":{"type":"string"}},"slogan":{"type":["string","null"]}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt","employeeCount","companySize","headquarters","companyType","founded","specialties","slogan"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/company/posts":{"get":{"summary":"Company posts","description":"Recent posts from a company page, with reaction and comment counts. Read from the company page itself: LinkedIn's dedicated /posts/ tab is behind the sign-in wall, but the same updates render on the public page. That caps the result at roughly the last ten posts. There is no logged-out pagination, so `hasMore` is always false. Posts by members that the company features carry that member as the author.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_companyPosts","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Company URL (linkedin.com/company/...) or the company slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/post":{"get":{"summary":"Post details","description":"One LinkedIn post: full text, media, author, publication time, reactions and comment count. Top-level comments LinkedIn publishes on the page ride along in `raw.comments`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_post","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (linkedin.com/posts/... or /feed/update/urn:li:activity:...) or the numeric id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/post/transcript":{"get":{"summary":"Post transcript","description":"Captions for a LinkedIn video post, as one text block plus timed cues, read from the caption track LinkedIn publishes with the video, its automatic captions included. A post without video, or a video without a caption track, returns an empty result, which is never charged.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_postTranscript","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL, a urn:li:activity / ugcPost / share urn, or the numeric activity id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/profile":{"get":{"summary":"Person's profile","description":"A LinkedIn member's public profile: name, headline, location, follower count, avatar, current employers and education. LinkedIn masks parts of a logged-out profile with asterisks; masked values are dropped rather than returned as `****`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_profile","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Profile URL (linkedin.com/in/...) or the profile slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkedin/search/posts":{"get":{"summary":"Search posts","description":"Keyword search over LinkedIn posts. LinkedIn gates content search behind sign-in for every logged-out caller (/search/results/content/ redirects to /uas/login regardless of origin IP), and we do not scrape authenticated sessions, so this endpoint reports the gate rather than pretending to be broken. It is shipped so callers get one clear, unbilled answer instead of a 404 on a documented route.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkedin_searchPosts","tags":["linkedin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"date_posted","in":"query","required":false,"schema":{"description":"Restrict to recent posts","type":"string","enum":["past-24h","past-week","past-month"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linkme":{"get":{"summary":"LinkMe page","description":"Public LinkMe page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linkme_page","tags":["linkme"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://link.me/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/linktree":{"get":{"summary":"Linktree page","description":"Public Linktree page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"linktree_page","tags":["linktree"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://linktr.ee/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mashable/video":{"get":{"summary":"Video details","description":"A Mashable video: title, summary, author, tags, duration, thumbnail and the addresses of its video files, best quality first, then the stream. Mashable shows no view, like or comment counts, so those are null. `mediaUrls` is empty, and the call is free, when the file behind an older video is gone.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mashable_video","tags":["mashable"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"A mashable.com/video/… URL, or the slug after /video/","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mastodon/post":{"get":{"summary":"Post","description":"A single public Mastodon post with its favourite, reply and boost counts and attached media.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mastodon_post","tags":["mastodon"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL on the server that hosts it, e.g. https://mastodon.social/@Gargron/117498495330835648","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mastodon/post/replies":{"get":{"summary":"Post replies","description":"Public replies to a Mastodon post, in thread order, from every server the hosting server knows of. Servers return at most about 60 replies to a signed-out reader. Replies from accounts that opted out of search engine indexing are left out.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mastodon_postReplies","tags":["mastodon"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL on the server that hosts it, e.g. https://mastodon.social/@Gargron/117498495330835648","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mastodon/profile":{"get":{"summary":"Profile","description":"A public Mastodon account, read from its own server: follower, following and post counts, bio, avatar, header image and profile links. Accounts that opted out of search engine indexing are refused, free.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mastodon_profile","tags":["mastodon"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle with its server (Gargron@mastodon.social or @Gargron@mastodon.social) or a profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mastodon/user/posts":{"get":{"summary":"User posts","description":"An account's public posts, newest first, with favourite, reply and boost counts. Boosts of other people's posts are left out.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mastodon_userPosts","tags":["mastodon"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle with its server (Gargron@mastodon.social or @Gargron@mastodon.social) or a profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"exclude_replies","in":"query","required":false,"schema":{"description":"Leave out replies to other posts","type":"boolean"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/milkshake":{"get":{"summary":"Milkshake page","description":"Public Milkshake page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"milkshake_page","tags":["milkshake"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://msha.ke/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/profile":{"get":{"summary":"Profile","description":"Public Mixcloud profile: followers, following, upload count, bio, avatar, cover image and location.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_profile","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/search":{"get":{"summary":"Search","description":"Search Mixcloud uploads, users or tags. Results are ranked by Mixcloud and can change between calls.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_search","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search text","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"`cloudcast` for uploads, `user` for accounts, `tag` for tags","default":"cloudcast","type":"string","enum":["cloudcast","user","tag"]}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/Post"},{"$ref":"#/components/schemas/Creator"},{"type":"object","properties":{"platform":{"const":"mixcloud"},"id":{"description":"The tag slug, as used by `mixcloud.tag`.","type":"string"},"name":{"type":"string"},"url":{"type":["string","null"]}},"required":["platform","id","name","url"]}]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/tag":{"get":{"summary":"Popular uploads for a tag","description":"A tag's popular uploads as Mixcloud ranks them, with plays, favourites, reposts and comments.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_tag","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"tag","in":"query","required":true,"schema":{"description":"Tag slug (house, deep-house), or a mixcloud.com/genres/ URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/upload":{"get":{"summary":"Upload details","description":"One Mixcloud upload: plays, favourites, reposts, comments, duration, tags and description. The tracklist, when the uploader published one, is in `raw.sections`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_upload","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"slug","in":"query","required":true,"schema":{"description":"The upload slug: the last part of its URL, e.g. \"cinematic-soundscapes\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/upload/comments":{"get":{"summary":"Upload comments","description":"Public comments on a Mixcloud upload. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_uploadComments","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"slug","in":"query","required":true,"schema":{"description":"The upload slug: the last part of its URL, e.g. \"cinematic-soundscapes\"","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/user/followers":{"get":{"summary":"User followers","description":"A user's followers, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_followers","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/user/following":{"get":{"summary":"Accounts a user follows","description":"Accounts a user follows, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_following","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/mixcloud/user/uploads":{"get":{"summary":"User uploads","description":"A user's public uploads, newest first, with plays, favourites, reposts and comments. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"mixcloud_userUploads","tags":["mixcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Mixcloud username (spartacus), or a mixcloud.com profile URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/odysee/channel":{"get":{"summary":"Channel","description":"Public metadata for an Odysee channel: title, description, avatar, banner, subscriber count, number of videos, website and creation date.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"odysee_channel","tags":["odysee"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel name (@veritasium), name with claim suffix (@veritasium:f), or an odysee.com or lbry:// channel URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/odysee/channel/videos":{"get":{"summary":"Channel videos","description":"An Odysee channel's videos, newest first, 50 per page, with view and like counts. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"odysee_channelVideos","tags":["odysee"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel name (@veritasium), name with claim suffix (@veritasium:f), or an odysee.com or lbry:// channel URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/odysee/search":{"get":{"summary":"Search videos","description":"Odysee videos matching a keyword, in Odysee search order, 20 per page, with view and like counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"odysee_search","tags":["odysee"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keywords to search for","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/odysee/video":{"get":{"summary":"Video details","description":"Public metadata for an Odysee video: title, description, duration, tags, release date, channel, and view, like and comment counts. Dislikes are in `raw.dislikeCount`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"odysee_video","tags":["odysee"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Odysee video URL (odysee.com/@channel:x/video-name:y), lbry:// URL, or 40-character claim id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/odysee/video/comments":{"get":{"summary":"Video comments","description":"Top-level comments on an Odysee video, 50 per page, with like and reply counts. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"odysee_comments","tags":["odysee"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Odysee video URL (odysee.com/@channel:x/video-name:y), lbry:// URL, or 40-character claim id","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/okru/video":{"get":{"summary":"Video details","description":"Public metadata for an OK.ru (Odnoklassniki) video: title, description, channel, duration, views, likes, comments, shares and upload date. `mediaUrls` lists the video files largest first, then the HLS playlist. Those links expire after about a day and answer only requests sent with a Chrome or Edge browser User-Agent.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"okru_video","tags":["okru"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video id (7475662490142) or an ok.ru/video/… link","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/channel":{"get":{"summary":"Channel profile","description":"Public profile of a PeerTube channel, read from the instance that hosts it: followers, following, video count, avatar, banner and creation date.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_channel","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel as name@instance (blender_channel@video.blender.org) or a channel URL on its instance","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/channel/videos":{"get":{"summary":"Channel videos","description":"A PeerTube channel's public videos, newest first, 50 per page. Tags are not included in list items; `peertube.video` returns them. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_channelVideos","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel as name@instance (blender_channel@video.blender.org) or a channel URL on its instance","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/search":{"get":{"summary":"Search videos","description":"Search public videos across PeerTube instances through Sepia Search, the PeerTube project's index, 50 per page. Covers the instances Sepia indexes, not every server.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_search","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/video":{"get":{"summary":"Video details","description":"Public metadata for a PeerTube video: views, likes, comment count, duration, tags, publish date and channel.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_video","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance>","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/video/comments":{"get":{"summary":"Video comments","description":"Top-level comments on a PeerTube video, newest first, 100 per page, including those posted from other fediverse servers. `replyCount` gives each thread's replies; `peertube.commentReplies` returns them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_comments","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance>","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/video/comments/replies":{"get":{"summary":"Comment replies","description":"Every reply under one top-level comment on a PeerTube video, nested replies included, each with `parentId` naming the comment it answers.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_commentReplies","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance>","type":"string"}},{"name":"commentId","in":"query","required":true,"schema":{"description":"`id` of a top-level comment from `peertube.comments`","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/peertube/video/transcript":{"get":{"summary":"Video transcript","description":"A PeerTube video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. `isAutoGenerated` says whether the instance transcribed it automatically.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"peertube_transcript","tags":["peertube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance>","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Language code, e.g. \"en\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/pillar":{"get":{"summary":"Pillar page","description":"Public Pillar page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"pillar_page","tags":["pillar"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://pillar.io/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/pinterest/board":{"get":{"summary":"Board and its pins","description":"Board metadata plus a page of its pins. Pass the `cursor` from the previous response to page through the board.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"pinterest_board","tags":["pinterest"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Board URL, e.g. https://www.pinterest.com/pinterest/spice-up-your-dinner-plans/","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Bookmark from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"board":{"type":"object","properties":{"platform":{"const":"pinterest"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"pinCount":{"type":["number","null"]},"followerCount":{"type":["number","null"]},"sectionCount":{"type":["number","null"]},"ownerHandle":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"isPrivate":{"type":["boolean","null"]},"category":{"type":["string","null"]},"createdAt":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","thumbnailUrl","pinCount","followerCount","sectionCount","ownerHandle","ownerName","isPrivate","category","createdAt","fetchedAt"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["board","items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/pinterest/pin":{"get":{"summary":"Pin details","description":"Public details for a pin: title, description, reactions, comments, shares and full-resolution media. The destination link and save count are in `raw`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"pinterest_pin","tags":["pinterest"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Pin URL, e.g. https://www.pinterest.com/pin/1130122100248990600/","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/pinterest/search":{"get":{"summary":"Search pins","description":"Public Pinterest search results for a query, as unified posts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"pinterest_search","tags":["pinterest"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms, e.g. \"minimalist kitchen\"","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Bookmark from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/pinterest/user/boards":{"get":{"summary":"Boards owned by a user","description":"Public boards on a profile, most recently pinned-to first, with pin and follower counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"pinterest_userBoards","tags":["pinterest"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Username, e.g. \"pinterest\"","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Bookmark from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"pinterest"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"pinCount":{"type":["number","null"]},"followerCount":{"type":["number","null"]},"sectionCount":{"type":["number","null"]},"ownerHandle":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"isPrivate":{"type":["boolean","null"]},"category":{"type":["string","null"]},"createdAt":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","description","thumbnailUrl","pinCount","followerCount","sectionCount","ownerHandle","ownerName","isPrivate","category","createdAt","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/post":{"get":{"summary":"Post details","description":"One Reddit post with its score, comment count, body text and media. Use `reddit.postComments` for the comment tree. They are separate endpoints, so a post with no comments is still a paid, cached result rather than an empty one.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_post","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (reddit.com/r/.../comments/...) or a post id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/post/comment/replies":{"get":{"summary":"Comment replies","description":"The reply thread under a single comment: the continuation behind Reddit's \"load more comments\". Takes a comment permalink, or \"postId:commentId\".\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_commentReplies","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Comment permalink (.../comments/{post}/{slug}/{comment}/) or \"postId:commentId\"","type":"string"}},{"name":"depth","in":"query","required":false,"schema":{"description":"Reply levels below the comment, 1-10. Default 6.","type":"number"}},{"name":"sort","in":"query","required":false,"schema":{"default":"confidence","type":"string","enum":["confidence","top","new","controversial","old","qa"]}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/post/comments":{"get":{"summary":"Post comments","description":"A post's comment tree, flattened into reading order with `parentId` preserved so callers can rebuild it. Returns the comments Reddit shows on the post's first page, with `raw.totalComments` giving the post's full count and `pagination.hasMore` true when more exist; `pagination.cursor` is null. Reddit collapses deep threads behind continuation stubs; fetch those with `reddit.commentReplies`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_postComments","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (reddit.com/r/.../comments/...) or a post id","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Reddit's comment sorts. \"confidence\" is the site default (\"Best\").","default":"confidence","type":"string","enum":["confidence","top","new","controversial","old","qa"]}},{"name":"depth","in":"query","required":false,"schema":{"description":"Reply levels to walk, 1-10. Default 4.","type":"number"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Top-level comments to request, 1-500. Default 100.","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/post/transcript":{"get":{"summary":"Video transcript","description":"Transcript for a Reddit-hosted video, from a direct v.redd.it URL, a post URL, or a post id. Reddit auto-captions much of its hosted video and publishes the result as a WebVTT file beside the video; this returns it as one text block plus timed cues, with the raw WebVTT in `raw.rawVtt`. English is the only caption language observed. Videos with no caption file return an empty result and are not charged. A caption track Reddit advertises only in segmented form, named by the playlist with no flat `.vtt` beside the video, is reported as `upstream_schema_drift` today and is likewise never charged. Covers Reddit-hosted video only. A post linking to YouTube or another site has no Reddit caption file and returns an empty result. A post URL or id is resolved to its video first, so a `v.redd.it` URL is one request quicker.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_postTranscript","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (reddit.com/r/.../comments/...), a post id, or a v.redd.it URL","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Preferred caption language. Reddit has only been observed publishing \"en\".","default":"en","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/search":{"get":{"summary":"Search posts","description":"Reddit post search, site-wide or restricted to one subreddit with `subreddit`, in Reddit's own ranking with scores and comment counts. Reddit returns seven results a page; pass `pagination.cursor` for the next. `raw.posts` names each result's subreddit. Body text comes from Reddit's feed of the same query and is null for a result that feed does not carry. `raw.via` names the surface that answered; on `atom`, scores and comment counts are null.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_search","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms. Reddit's own syntax works, e.g. `flair:\"news\"`.","type":"string"}},{"name":"subreddit","in":"query","required":false,"schema":{"description":"Restrict to one subreddit","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"default":"relevance","type":"string","enum":["relevance","hot","top","new","comments"]}},{"name":"timeframe","in":"query","required":false,"schema":{"description":"Window for the search. Default \"all\".","type":"string","enum":["hour","day","week","month","year","all"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Results per page, 1-100. Default 25.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"after","in":"query","required":false,"deprecated":true,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"},"description":"Alias for `cursor`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/subreddit":{"get":{"summary":"Subreddit posts","description":"Posts from a subreddit, sorted the way Reddit sorts them, with scores and comment counts. `sort=top` and `sort=controversial` accept a `timeframe`. `raw.posts` adds each post's subreddit, flair, post type and upvote ratio. `raw.via` names the surface that answered; when Reddit serves only its Atom feed (`atom`), scores and comment counts are null.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_subreddit","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"description":"Subreddit name (\"aww\", \"r/aww\") or a full reddit.com/r/... URL","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"default":"hot","type":"string","enum":["hot","new","top","rising","controversial"]}},{"name":"timeframe","in":"query","required":false,"schema":{"description":"Window for sort=top / sort=controversial. Default \"day\".","type":"string","enum":["hour","day","week","month","year","all"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Posts per page, 1-100. Default 25.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"after","in":"query","required":false,"deprecated":true,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"},"description":"Alias for `cursor`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/subreddit/details":{"get":{"summary":"Subreddit details","description":"Public metadata for a subreddit: title, description, icon, banner, and where Reddit shows them, subscribers, people online now, creation date and whether it is private or restricted. `raw.via` names the surface: on `shreddit`, subscribers, creation date and privacy are null, and `raw.weeklyVisitors` and `raw.weeklyContributions` carry Reddit's weekly activity figures.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_subredditDetails","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"description":"Subreddit name (\"aww\", \"r/aww\") or a full reddit.com/r/... URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Subreddit name (\"aww\", \"r/aww\") or a full reddit.com/r/... URL","type":"string"},"description":"Alias for `subreddit`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/user":{"get":{"summary":"User profile","description":"A Reddit account's public profile: display name, description, avatar, account age, and karma (returned under `raw.karma`, since the unified schema has no karma field).\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_user","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"username","in":"query","required":true,"schema":{"description":"Username (\"spez\", \"u/spez\") or a reddit.com/user/... URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/reddit/user/posts":{"get":{"summary":"User posts","description":"Posts submitted by a Reddit account, newest first by default. Falls back to the account's Atom feed when the JSON surface is blocked.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"reddit_userPosts","tags":["reddit"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"username","in":"query","required":true,"schema":{"description":"Username (\"spez\", \"u/spez\") or a reddit.com/user/... URL","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"default":"new","type":"string","enum":["new","hot","top"]}},{"name":"timeframe","in":"query","required":false,"schema":{"description":"Window for sort=top. Default \"all\".","type":"string","enum":["hour","day","week","month","year","all"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Posts per page, 1-100. Default 25.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/redfin/agent":{"get":{"summary":"Real estate agent profile","description":"Public profile for a Redfin agent or partner agent: name, brokerage, contact and bio.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"redfin_agent","tags":["redfin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Redfin agent or partner-agent profile URL, e.g. https://www.redfin.com/real-estate-agents/the-home-team","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Redfin marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/RealEstateAgent"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/redfin/for-rent":{"get":{"summary":"For-rent property details","description":"Public details for one Redfin rental: price (or starting price for a multi-unit building), specs, availability and amenities.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"redfin_forRent","tags":["redfin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Redfin rental URL, e.g. https://www.redfin.com/CA/San-Francisco/952-Sutter-St-94109/apartment/1594243","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Redfin marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/PropertyListing"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/redfin/for-sale":{"get":{"summary":"For-sale property details","description":"Public details for one Redfin for-sale listing: price, specs, agent, price history and nearby schools.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"redfin_forSale","tags":["redfin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Redfin for-sale listing URL, e.g. https://www.redfin.com/CA/San-Francisco/2040-Laguna-St-94115/unit-201/home/1642558","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Redfin marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/PropertyListing"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/redfin/search":{"get":{"summary":"Search Redfin listing results","description":"Public results from a Redfin search or listing-results page URL (a city, zip code or filtered search).\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"redfin_search","tags":["redfin"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Redfin search page URL, e.g. https://www.redfin.com/zipcode/94109","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Redfin marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/rumble/channel/videos":{"get":{"summary":"Channel videos","description":"A Rumble channel's public uploads, newest first, 25 per page. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"rumble_channelVideos","tags":["rumble"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel handle (Asmongold), c/Handle, user/Handle, or a full rumble.com URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Channel handle (Asmongold), c/Handle, user/Handle, or a full rumble.com URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/rumble/search":{"get":{"summary":"Search videos","description":"Public Rumble video search results, 25 per page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"rumble_search","tags":["rumble"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"default":"relevance","type":"string","enum":["relevance","views","date"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/rumble/video":{"get":{"summary":"Video details","description":"Public metadata for a Rumble video: exact view count, likes and dislikes, comment count, duration, upload date, channel and follower count.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"rumble_video","tags":["rumble"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/rumble/video/comments":{"get":{"summary":"Video comments","description":"Public comments on a Rumble video, including replies. Rumble hides comments behind a login on some videos; when it does, this returns an unbilled empty result rather than logging in.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"rumble_comments","tags":["rumble"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/rumble/video/transcript":{"get":{"summary":"Video transcript","description":"A Rumble video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the default track.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"rumble_transcript","tags":["rumble"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Language code, e.g. \"en\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/snapchat/profile":{"get":{"summary":"User profile","description":"Public Snapchat profile. Creator and business accounts return subscriber count, bio, website and avatar; personal accounts return the handle, display name and Bitmoji avatar, which is all Snapchat publishes for them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"snapchat_profile","tags":["snapchat"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (teamsnapchat) or a snapchat.com/add/<handle> URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/snapchat/spotlight":{"get":{"summary":"Spotlight by link","description":"A public Snapchat Spotlight video: view, like, comment and share counts, caption and hashtags, duration, creator, thumbnail, media URL, and the auto-generated transcript when Snapchat has one.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"snapchat_spotlight","tags":["snapchat"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Spotlight URL (https://www.snapchat.com/spotlight/<id>)","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/snapchat/spotlight/comments":{"get":{"summary":"Spotlight comments by link","description":"Public comments on a Snapchat Spotlight, ranked the way Snapchat ranks them, with reaction and threaded-reply counts. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"snapchat_spotlightComments","tags":["snapchat"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Spotlight URL (https://www.snapchat.com/spotlight/<id>)","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/solo":{"get":{"summary":"Solo page","description":"Public Solo page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"solo_page","tags":["solo"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://solo.to/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/soundcloud/artist":{"get":{"summary":"Artist profile","description":"Public SoundCloud profile: followers, following, track count, bio, avatar and header image.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"soundcloud_artist","tags":["soundcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (flume), or a full soundcloud.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle (flume), or a full soundcloud.com profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/soundcloud/artist/tracks":{"get":{"summary":"Artist tracks","description":"An artist's public uploads, newest first. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"soundcloud_artistTracks","tags":["soundcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (flume), or a full soundcloud.com profile URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Handle (flume), or a full soundcloud.com profile URL","type":"string"},"description":"Alias for `handle`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/soundcloud/track":{"get":{"summary":"Track details","description":"Public metadata for a SoundCloud track: plays, likes, reposts, comments, duration, genre and publisher metadata (ISRC, label, writers).\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"soundcloud_track","tags":["soundcloud"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Track URL, or \"user/track-slug\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/album":{"get":{"summary":"Album details","description":"Public Spotify album: title, artist, release date, artwork and total runtime. The track listing, release type (album or single) and track count are in `raw`. Add `include_raw=true`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_album","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Spotify album id, spotify:album: URI, or open.spotify.com album URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Spotify album id, spotify:album: URI, or open.spotify.com album URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/artist":{"get":{"summary":"Artist details","description":"Public Spotify artist: name, exact follower count, biography, artwork and external links. Monthly listeners and current top tracks with play counts are in `raw`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_artist","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Spotify artist id, spotify:artist: URI, or open.spotify.com artist URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Spotify artist id, spotify:artist: URI, or open.spotify.com artist URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/playlist":{"get":{"summary":"Playlist contents","description":"Public Spotify playlist: name, owner, description, cover art, total track count and its tracks, 50 per `cursor` page, up to the first 100. On a longer playlist the last page reports `hasMore` true with a null `cursor`: the remaining tracks exist but are not served.\n**Required:** Pass exactly one of `id` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_playlist","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass exactly one of `id` or `url`."],"parameters":[{"name":"id","in":"query","required":false,"schema":{"description":"Spotify playlist id, spotify:playlist: URI, or open.spotify.com playlist URL","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"open.spotify.com playlist URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"Offset into the track list. Pass back `pagination.cursor`","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"spotify"},"id":{"type":"string"},"name":{"type":["string","null"]},"url":{"type":"string"},"ownerName":{"type":["string","null"]},"description":{"type":["string","null"]},"coverImageUrl":{"type":["string","null"]},"trackCount":{"type":["number","null"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["platform","id","name","url","ownerName","description","coverImageUrl","trackCount","items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/podcast":{"get":{"summary":"Podcast details","description":"A Spotify podcast: title, publisher, description, artwork and episode count, with its rating and topics in `raw`. Two fields carry something different here than they do elsewhere: `category` holds the show's publisher, and `postCount` is its episode count. The unified schema has no publisher field, and naming it here is better than leaving you to infer it.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_podcast","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Spotify show id, spotify:show: URI, or open.spotify.com show URL","type":"string"}},{"name":"market","in":"query","required":false,"schema":{"description":"ISO 3166-1 alpha-2 market code","default":"US","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Spotify show id, spotify:show: URI, or open.spotify.com show URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/podcast/episodes":{"get":{"summary":"Podcast episodes","description":"Episodes for a Spotify podcast, newest first. Pass the `cursor` from the previous response to page. `hasMore` true with a null `cursor` means the show has more episodes than this response can page to.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_podcastEpisodes","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Spotify show id, spotify:show: URI, or open.spotify.com show URL","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"market","in":"query","required":false,"schema":{"description":"ISO 3166-1 alpha-2 market code","default":"US","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Spotify show id, spotify:show: URI, or open.spotify.com show URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/search":{"get":{"summary":"Search","description":"Search Spotify's catalogue for tracks, albums, artists, podcasts or episodes. Uses Spotify's official Web API, so this endpoint needs app credentials; everything else on this platform is keyless.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_search","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"default":"track","type":"string","enum":["track","album","artist","show","episode"]}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"market","in":"query","required":false,"schema":{"description":"ISO 3166-1 alpha-2 market code","default":"US","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/Post"},{"$ref":"#/components/schemas/Creator"}]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/spotify/track":{"get":{"summary":"Track details","description":"Public Spotify track: title, artists, artwork, duration, release date and the preview clip URL. `viewCount` is the play count when the track is among its artist's top tracks, and null otherwise. The explicit-content label is in `raw`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"spotify_track","tags":["spotify"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Spotify track id, spotify:track: URI, or open.spotify.com track URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"url","in":"query","required":false,"deprecated":true,"schema":{"description":"Spotify track id, spotify:track: URI, or open.spotify.com track URL","type":"string"},"description":"Alias for `id`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/streamable/video":{"get":{"summary":"Video details and file links","description":"Public details of a Streamable video: title, duration, play count, upload date, thumbnail and its MP4 file links, tallest first. The links are signed and stop working after a few days. Password-protected videos return 404.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"streamable_video","tags":["streamable"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video id (moo) or a streamable.com/<id> URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/substack/comments":{"get":{"summary":"Post comments","description":"Every public comment on a Substack post, replies included, newest first; `parentId` links a reply to its comment. Comments a publication shows only to paid subscribers are not available.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"substack_comments","tags":["substack"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric post id, as returned in `id` by `substack.posts`","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/substack/post":{"get":{"summary":"Post","description":"One Substack post with its text, reactions, comments, restacks and word count. For a subscriber-only post, `text` is the public preview and `truncated` is true.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"substack_post","tags":["substack"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"Numeric post id, as returned in `id` by `substack.posts`","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"audience":{"description":"Who can read the whole post: `everyone`, `only_free` (free subscribers), `only_paid` or `founding`.","type":["string","null"]},"wordCount":{"type":["number","null"]},"truncated":{"description":"True when the post is for subscribers only: `text` is then the public preview, not the whole post.","type":"boolean"}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","audience","wordCount","truncated"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/substack/posts":{"get":{"summary":"Publication posts","description":"A publication's posts, newest first, with reactions, comments, restacks and word count. Substack shows no view counts. Pass the `cursor` from the previous response to page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"substack_posts","tags":["substack"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"publication","in":"query","required":true,"schema":{"description":"The publication: its name on Substack (garymarcus), its host (garymarcus.substack.com or www.lennysnewsletter.com), or any URL on it","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from the previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"type":"string"},"type":{"description":"What kind of post this is. `short` and `reel` are short-form video formats, `live` is a live stream or a recording of one, `carousel` holds several images or videos, `audio` is a music track, `album` is an album, `episode` is a podcast episode, and `unknown` covers anything else.","type":"string","enum":["video","short","image","carousel","text","live","story","reel","audio","album","episode","unknown"]},"url":{"type":["string","null"]},"linkUrl":{"description":"The page this post links to, when it is a link post. Absent on a post with no link.","type":"string"},"title":{"type":["string","null"]},"text":{"description":"The post's text: a caption, a description or the message body.","type":["string","null"]},"authorId":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"mediaUrls":{"type":"array","items":{"type":"string"}},"durationSeconds":{"type":["number","null"]},"viewCount":{"description":"Views. Null means the platform did not expose a count, which is not the same as zero.","type":["number","null"]},"likeCount":{"description":"Likes, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"commentCount":{"description":"Comments. Null means not exposed, not zero.","type":["number","null"]},"shareCount":{"description":"Shares, reposts, or the platform's nearest equivalent. Null means not exposed, not zero.","type":["number","null"]},"hashtags":{"description":"Hashtags or the platform's own topic tags, without the leading #.","type":"array","items":{"type":"string"}},"mentions":{"description":"Handles mentioned in the post text, without the leading @.","type":"array","items":{"type":"string"}},"taggedUsers":{"description":"Usernames tagged in the media itself, as distinct from `mentions`, which come from the caption text. Absent when the platform does not report tags; an empty array means it reports none.","type":"array","items":{"type":"string"}},"isSponsored":{"description":"Whether the platform labels the post as an ad, promoted content or a paid partnership.","type":["boolean","null"]},"publishedAt":{"description":"When the post was published. Usually an ISO 8601 timestamp; some platforms expose only a date or relative text such as \"3 days ago\".","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"audience":{"description":"Who can read the whole post: `everyone`, `only_free` (free subscribers), `only_paid` or `founding`.","type":["string","null"]},"wordCount":{"type":["number","null"]}},"required":["platform","id","type","url","title","text","authorId","authorHandle","authorName","thumbnailUrl","mediaUrls","durationSeconds","viewCount","likeCount","commentCount","shareCount","hashtags","mentions","isSponsored","publishedAt","fetchedAt","audience","wordCount"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/substack/profile":{"get":{"summary":"Profile","description":"A Substack writer's public profile: followers, bio, links, and their main publication. Subscribers appear only as Substack's rounded badge.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"substack_profile","tags":["substack"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Substack handle (lenny), @handle, or a substack.com/@handle URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"subscriberBadge":{"description":"Subscriber count as the rounded badge Substack shows, such as \"1.2M+\". Substack publishes no exact subscriber count.","type":["string","null"]},"publicationHost":{"description":"The host of the writer's main publication, to pass as `publication` to the other Substack endpoints.","type":["string","null"]}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt","subscriberBadge","publicationHost"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/substack/publication":{"get":{"summary":"Publication","description":"A Substack publication: name, description, author, custom domain, whether it sells paid plans, and its rounded subscriber badge. Custom domains are accepted.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"substack_publication","tags":["substack"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"publication","in":"query","required":true,"schema":{"description":"The publication: its name on Substack (garymarcus), its host (garymarcus.substack.com or www.lennysnewsletter.com), or any URL on it","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"type":"string","enum":["youtube","instagram","facebook","twitter","tiktok","linkedin","reddit","threads","bluesky","truthsocial","mastodon","snapchat","kwai","pinterest","rumble","bitchute","odysee","peertube","twitch","kick","spotify","apple-music","soundcloud","deezer","github","google","amazon","walmart","ebay","redfin","zillow","linktree","komi","pillar","linkbio","linkme","telegram","dailymotion","okru","streamable","vimeo","mixcloud","bilibili","flickr","substack","mashable","hackernews"]},"id":{"description":"The platform's own id for the account, such as a channel id or a numeric user id, always as a string.","type":"string"},"handle":{"description":"The account handle without the leading @. Null when the platform has no handles.","type":["string","null"]},"displayName":{"type":["string","null"]},"bio":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"bannerUrl":{"type":["string","null"]},"url":{"type":["string","null"]},"verified":{"description":"Whether the platform shows a verification badge on the account. Null where the platform has no public badge or does not expose it.","type":["boolean","null"]},"followerCount":{"description":"Followers, subscribers, or the platform's nearest equivalent. Null when the account hides the count or the platform does not expose it.","type":["number","null"]},"followingCount":{"type":["number","null"]},"postCount":{"description":"Posts, videos, tracks, repositories, or the platform's nearest equivalent that the account has published.","type":["number","null"]},"viewCount":{"description":"Lifetime views across the account, where the platform exposes a total.","type":["number","null"]},"likeCount":{"description":"Total likes received across all of the creator's posts. Distinct from `viewCount`. Absent when the platform does not expose it.","type":["number","null"]},"isPrivate":{"type":["boolean","null"]},"isBusiness":{"description":"Whether the platform classifies the account as a business or organisation rather than a person or creator. Null where the platform draws no such line or does not expose it. On Facebook every Page counts, including Pages for public figures.","type":["boolean","null"]},"category":{"description":"A label the platform attaches to the account, such as a business category, a genre or an account type. What it holds varies by platform.","type":["string","null"]},"location":{"description":"Location as the platform shows it: a city, a country, a region code or an address, depending on the platform.","type":["string","null"]},"externalLinks":{"description":"Links the account lists on its profile, such as a website or other social accounts.","type":"array","items":{"type":"string"}},"createdAt":{"description":"When the account was created. Usually an ISO 8601 timestamp; some platforms expose only the date as shown on the profile.","type":["string","null"]},"fetchedAt":{"description":"When this record was fetched from the platform, as an ISO 8601 timestamp. A cached response keeps the time of the original fetch.","type":"string"},"host":{"description":"The host the publication is read on: its custom domain, or `<name>.substack.com`.","type":"string"},"customDomain":{"type":["string","null"]},"authorHandle":{"type":["string","null"]},"authorName":{"type":["string","null"]},"hasPaidPlans":{"description":"Whether the publication sells paid subscriptions.","type":["boolean","null"]},"subscriberBadge":{"description":"Subscriber count as the rounded badge Substack shows, such as \"1.2M+\". Substack publishes no exact subscriber count.","type":["string","null"]}},"required":["platform","id","handle","displayName","bio","avatarUrl","bannerUrl","url","verified","followerCount","followingCount","postCount","viewCount","isPrivate","isBusiness","category","location","externalLinks","createdAt","fetchedAt","host","customDomain","authorHandle","authorName","hasPaidPlans","subscriberBadge"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/taplink":{"get":{"summary":"Taplink page","description":"Public Taplink page as a creator profile: display name, bio, avatar, and every outbound link in order.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"taplink_page","tags":["taplink"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Page URL (https://taplink.cc/<username>) or just the username","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/telegram/channel":{"get":{"summary":"Channel","description":"Public Telegram channel or group metadata including its name, description, avatar, verification status, subscriber or member count, and public media counters. The subscriber or member count is exact, read from the channel's t.me page, and falls back to the rounded preview value (\"9.66M\") when that page cannot be read. The media counters in `raw.counters` are Telegram's rounded display text. Uses Telegram's public web preview and does not use a logged-in Telegram account, so private channels, invite-only groups and user accounts are not covered. An old username still resolves to the channel that took it over, so `handle` here is the header username and may differ from the one inside a post id, so join on a post `id`, never on the handle.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"telegram_channel","tags":["telegram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Public channel or group username: @telegram, telegram, or https://t.me/telegram","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/telegram/channel-posts":{"get":{"summary":"Channel posts","description":"One public web-preview page of Telegram posts with text, publish date, views, reactions when exposed, forwards, media (photos and the playable video file), and link previews. Twenty posts per page, newest first. Pass the returned cursor to fetch the previous page. Empty and terminal pages are not charged. `viewCount` is Telegram's own rounded display value (\"1.37M\" → 1370000), not an exact count; the original text is in `raw.messages[].viewsText`. `likeCount` totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when a post shows no reactions. Each reaction, the forward source and the link preview are under `raw`. A post `id` carries the CANONICAL username of the channel, which differs from the one you asked for when an old username still resolves to it. Join on `id`, not on the handle you passed.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"telegram_channelPosts","tags":["telegram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Public channel or group username: @telegram, telegram, or https://t.me/telegram","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/telegram/post":{"get":{"summary":"Post","description":"A single public Telegram post with its text, publish date, views, reactions when exposed, forward source, media (photos and the playable video file), and link preview. `viewCount` is Telegram's own rounded display value (\"1.37M\" → 1370000), not an exact count; the original text is in `raw.viewsText`. `likeCount` totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when the post shows no reactions. Each reaction, the forward source and the link preview are under `raw`. Reads the public post embed and does not use a logged-in Telegram account.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"telegram_post","tags":["telegram"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post link: https://t.me/<handle>/<message id>, for example https://t.me/telegram/441","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/threads/post":{"get":{"summary":"Post","description":"A single public Threads post with like count, reply count, and any attached media.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"threads_post","tags":["threads"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (https://www.threads.com/@handle/post/ABC) or a shortcode","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/threads/profile":{"get":{"summary":"Profile","description":"Public Threads profile: follower count, bio, bio links, avatar, and verification status.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"threads_profile","tags":["threads"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@zuck) or a threads.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/threads/search":{"get":{"summary":"Search posts by keyword","description":"Public Threads posts matching a keyword.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"threads_search","tags":["threads"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keyword to search for","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/threads/search/users":{"get":{"summary":"Search users","description":"Public Threads accounts matching a keyword.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"threads_searchUsers","tags":["threads"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Keyword or partial handle","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/threads/user/posts":{"get":{"summary":"User posts","description":"Public posts from a Threads profile in the order the profile shows them, with like, reply and repost counts. Pass `pagination.cursor` back as `cursor` for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"threads_userPosts","tags":["threads"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@zuck) or a threads.com profile URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/ad-library/ad":{"get":{"summary":"One TikTok ad","description":"One TikTok ad by id or URL. Two public surfaces carry ads and an id alone does not say which: Creative Center Top Ads (ads.tiktok.com) is checked first, then the Commercial Content Library (library.tiktok.com). Pass a URL from either and only that source is queried. Both return the same `Ad` shape; fields a source does not publish are null rather than inferred - Top Ads carries no flight dates or advertiser entity, and the library carries no performance metrics. `countries` here is the ad's own targeting, unlike a search result's, where it is the market that was searched. An id neither source knows is a 404; an id that only one source could be asked about is not, because a source that did not answer has not said no. Reach bands stay in `raw`, not in the impressions fields, because reach is not impressions.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_adLibraryAd","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"ad_id","in":"query","required":true,"schema":{"description":"Numeric ad id, a library.tiktok.com `/ads/detail?ad_id=` URL, or an ads.tiktok.com Top Ads URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Ad"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/ad-library/search":{"get":{"summary":"Search the TikTok Ads Library","description":"Ads in TikTok's public Commercial Content Library, by keyword (`query`) or by advertiser (`advertiser_name`). An advertiser name is resolved through TikTok's own typeahead first, then searched as an entity, so it matches the registered legal name (\"NIKE Retail B.V.\") rather than a brand. Results are NOT global: TikTok publishes this archive per market and refuses a search without one, so `region` is required, validated against the market list the library itself publishes rather than a fixed list here, and every result ran in that market, which is what each ad's `countries` reports. TikTok returns its own relevance ranking; we ask for the most recently shown first, but that is only a tiebreak within it, so results are not ordered by date. Cursor-paginated 12 at a time, each ad carrying its public library.tiktok.com detail URL. Pages are not guaranteed disjoint: the archive re-ranks live, so an ad can repeat across pages. Political and election ads are outside the archive. Reach is published as a band and is not impressions, so it stays in `raw.estimated_audience` rather than the impressions fields.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_adLibrarySearch","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":false,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":false,"schema":{"description":"Keyword, matched against ad text and advertiser name","type":"string"}},{"name":"advertiser_name","in":"query","required":false,"schema":{"description":"Advertiser name, resolved through TikTok's typeahead to one advertiser entity","type":"string"}},{"name":"region","in":"query","required":true,"schema":{"description":"Market to search. TikTok publishes this archive per market; one of AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, TR.","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Ad"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/collection/videos":{"get":{"summary":"Collection videos","description":"Videos in a public TikTok collection, a creator-curated playlist of other people's posts as well as their own.\n**Required:** Pass either `url` or `collection_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_collectionVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"x-parameter-constraints":["Pass either `url` or `collection_id`."],"parameters":[{"name":"url","in":"query","required":false,"schema":{"description":"Collection URL, e.g. https://www.tiktok.com/@nasa/collection/Artemis-7123…","type":"string"}},{"name":"collection_id","in":"query","required":false,"schema":{"description":"Numeric collection id","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 30)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/comment-replies":{"get":{"summary":"Replies to a comment","description":"The reply thread under one TikTok comment. `parentId` on each reply points back at the comment it answers, so nested threads reconstruct cleanly.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_commentReplies","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"comment_id","in":"query","required":true,"schema":{"description":"`id` of the parent comment, from `tiktok.comments`","type":"string"}},{"name":"url","in":"query","required":true,"schema":{"description":"The video the comment is on: URL, share link, or numeric id","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/comments":{"get":{"summary":"Comments on a video","description":"Top-level comments on a TikTok, with like counts, reply counts, pinned status and a flag for the creator's own replies. Use `tiktok.commentReplies` to expand a thread.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_comments","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (preferred), share link, or numeric video id","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/creators/popular":{"get":{"summary":"Popular creators","description":"Creators trending in a market, from TikTok's own Creative Center leaderboard. Filter by country, follower band and category.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_popularCreators","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"period","in":"query","required":false,"schema":{"description":"Trailing window in days: 7, 30 or 120","default":"7","type":"string","enum":["7","30","120"]}},{"name":"follower_band","in":"query","required":false,"schema":{"description":"Restrict to creators in this follower range","type":"string","enum":["1k-10k","10k-100k","100k-1m","1m+"]}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/followers":{"get":{"summary":"Accounts following a creator","description":"The public follower list for a TikTok account, newest first. TikTok caps how deep this list can be walked regardless of paging. Requires a configured TikTok signer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_followers","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full tiktok.com profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 30, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Creator"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/hashtag":{"get":{"summary":"Hashtag details","description":"Stats for a TikTok hashtag: total videos and total views, plus its description and cover. Read straight off the tag page, so it needs no signer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_hashtag","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"description":"Tag without the # (fyp), or a full /tag/ URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"url":{"type":"string"},"coverUrl":{"type":["string","null"]},"videoCount":{"type":["number","null"]},"viewCount":{"type":["number","null"]},"isCommerce":{"type":["boolean","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","description","url","coverUrl","videoCount","viewCount","isCommerce","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/hashtag-videos":{"get":{"summary":"Videos using a hashtag","description":"TikToks carrying a given hashtag, in TikTok's own feed order, with a cursor for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_hashtagVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"description":"Tag without the # (fyp), or a full /tag/ URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 30, max 30)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/live":{"get":{"summary":"Live stream info","description":"Details of a creator's stream while they are live: room id, title, cover, current viewers and start time. A creator who is not live returns `empty_result`, a real answer that costs nothing, so this works as a cheap \"are they live?\" poll. Pass `room_id` (from a previous response's `roomId`) to look the room up directly on TikTok's own webcast surface. No third-party provider is involved. On the `room_id` path `handle` may come back empty if the webcast payload omits the room owner.\n**Required:** Pass either `handle` or `room_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_live","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `room_id`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Handle (@nike), or a full tiktok.com profile URL","type":"string"}},{"name":"room_id","in":"query","required":false,"schema":{"description":"TikTok LIVE room id, e.g. from a previous tiktok.live response's `roomId`","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"tiktok"},"roomId":{"type":"string"},"handle":{"type":"string"},"title":{"type":["string","null"]},"coverUrl":{"type":["string","null"]},"viewerCount":{"type":["number","null"]},"startedAt":{"type":["string","null"]},"url":{"type":"string"},"creator":{"$ref":"#/components/schemas/Creator"},"fetchedAt":{"type":"string"}},"required":["platform","roomId","handle","title","coverUrl","viewerCount","startedAt","url","creator","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/playlist-videos":{"get":{"summary":"Videos in a playlist","description":"The videos inside one TikTok playlist, in the creator's chosen order. Requires a configured TikTok signer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_playlistVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"playlist_id","in":"query","required":true,"schema":{"description":"`id` from `tiktok.playlists`, or a /playlist/ URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 30, max 30)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/playlists":{"get":{"summary":"A creator's playlists","description":"The playlists (TikTok calls them \"mixes\") a creator has organised their videos into. Pair with `tiktok.playlistVideos` to walk one. Requires a configured TikTok signer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_playlists","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full tiktok.com profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 30)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"coverUrl":{"type":["string","null"]},"videoCount":{"type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","name","url","coverUrl","videoCount","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/product":{"get":{"summary":"Product details","description":"A single TikTok Shop product: title, description, images, price and original price, rating, review and sales counts, stock, category and the seller. `price` is the lowest-priced variant; it is null when TikTok hides the digits from logged-out visitors. Catalogues are per market: `region` picks one, default US.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_product","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Product id, or a tiktok.com/shop/pdp/… URL","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"price":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"originalPrice":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"imageUrls":{"type":"array","items":{"type":"string"}},"rating":{"description":"Star rating out of 5. Null on a product with no reviews yet.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"soldCount":{"type":["number","null"]},"inStock":{"type":["boolean","null"]},"sellerId":{"type":["string","null"]},"sellerName":{"type":["string","null"]},"categoryName":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","price","originalPrice","imageUrls","rating","reviewCount","soldCount","inStock","sellerId","sellerName","categoryName","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/profile":{"get":{"summary":"Profile details","description":"Public profile for a TikTok account: followers, following, video count, bio, bio link, verification and account region. Private accounts return their public shell with `isPrivate: true` rather than an error. That is a real answer, not a failure. Total likes received (TikTok's \"hearts\") is in `raw`, since it is a like total rather than the lifetime view count `viewCount` means elsewhere in the schema.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_profile","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full tiktok.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/profile/region":{"get":{"summary":"Creator region","description":"The market TikTok assigns a creator's account. Read from TikTok's own `region` field: on the profile where TikTok publishes one, otherwise from the region stamped on the creator's recent posts. Never inferred from language, timezone or content.\n**Required:** Pass either `handle` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_profileRegion","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `handle` or `url`."],"parameters":[{"name":"handle","in":"query","required":false,"schema":{"description":"Creator handle, e.g. @nasa","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Profile URL, e.g. https://www.tiktok.com/@nasa","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"tiktok"},"handle":{"type":"string"},"userId":{"type":"string"},"region":{"description":"Two-letter market code as TikTok reports it. Never inferred.","type":["string","null"]},"source":{"description":"Where the value came from, so a caller can weigh it.","type":["string","null"],"enum":["profile","posts"]},"agreement":{"description":"From posts: how many sampled posts agreed. A traveller can carry several.","type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"count":{"type":"number"}},"required":["region","count"]}},"fetchedAt":{"type":"string"}},"required":["platform","handle","userId","region","source","agreement","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/search/suggestions":{"get":{"summary":"Search suggestions","description":"TikTok's typeahead completions for a partial query: what the platform thinks people are looking for. Useful for keyword research.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_searchSuggestions","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Partial search term","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"type":{"description":"TikTok's own grouping, when it labels one.","type":["string","null"]}},"required":["text","type"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/shop/product/reviews":{"get":{"summary":"Product reviews","description":"The reviews a TikTok Shop product page shows, with star rating, reviewer, photos and the purchased variant. That is the page's first screen, not every review. `region` picks the market, default US.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_productReviews","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Product id, or a tiktok.com/shop/pdp/… URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"productId":{"type":["string","null"]},"text":{"type":"string"},"rating":{"type":["number","null"]},"authorName":{"type":["string","null"]},"authorAvatarUrl":{"type":["string","null"]},"imageUrls":{"type":"array","items":{"type":"string"}},"variant":{"description":"The variant the reviewer actually bought, when TikTok attaches it.","type":["string","null"]},"publishedAt":{"type":["string","null"]}},"required":["platform","id","productId","text","rating","authorName","authorAvatarUrl","imageUrls","variant","publishedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/shop/products":{"get":{"summary":"Seller's product catalogue","description":"The products a TikTok Shop store lists, page by page, with price, rating, review and sales counts. Pass the store's URL (tiktok.com/shop/store/<name>/<seller_id>). `region` picks the market, default US.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_shopProducts","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"TikTok Shop store URL, e.g. https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"price":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"originalPrice":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"imageUrls":{"type":"array","items":{"type":"string"}},"rating":{"description":"Star rating out of 5. Null on a product with no reviews yet.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"soldCount":{"type":["number","null"]},"inStock":{"type":["boolean","null"]},"sellerId":{"type":["string","null"]},"sellerName":{"type":["string","null"]},"categoryName":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","price","originalPrice","imageUrls","rating","reviewCount","soldCount","inStock","sellerId","sellerName","categoryName","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/shop/search":{"get":{"summary":"Search TikTok Shop","description":"The products TikTok Shop search returns for a query, page by page, with price, rating, review and sales counts. US market.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_shopSearch","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"price":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"originalPrice":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"imageUrls":{"type":"array","items":{"type":"string"}},"rating":{"description":"Star rating out of 5. Null on a product with no reviews yet.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"soldCount":{"type":["number","null"]},"inStock":{"type":["boolean","null"]},"sellerId":{"type":["string","null"]},"sellerName":{"type":["string","null"]},"categoryName":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","price","originalPrice","imageUrls","rating","reviewCount","soldCount","inStock","sellerId","sellerName","categoryName","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/song":{"get":{"summary":"Sound / song details","description":"Details for a TikTok sound: title, artist, album, cover, clip length, and how many videos use it.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_song","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"song","in":"query","required":true,"schema":{"description":"Music id, or a full tiktok.com/music/… URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"authorName":{"type":["string","null"]},"album":{"type":["string","null"]},"url":{"type":"string"},"coverUrl":{"type":["string","null"]},"playUrl":{"type":["string","null"]},"durationSeconds":{"type":["number","null"]},"isOriginalSound":{"description":"True when the sound originated on TikTok rather than a licensed track.","type":["boolean","null"]},"videoCount":{"type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","authorName","album","url","coverUrl","playUrl","durationSeconds","isOriginalSound","videoCount","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/song-videos":{"get":{"summary":"Videos using a sound","description":"TikToks built on a given sound: the endpoint behind \"who is using my track\", with a cursor for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_songVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"song","in":"query","required":true,"schema":{"description":"Music id, or a full tiktok.com/music/… URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 30, max 30)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/songs/popular":{"get":{"summary":"Popular songs","description":"Sounds trending in a market, the endpoint behind music A&R and sync-licensing research. From TikTok's Creative Center.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_popularSongs","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"period","in":"query","required":false,"schema":{"description":"Trailing window in days: 7, 30 or 120","default":"7","type":"string","enum":["7","30","120"]}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"authorName":{"type":["string","null"]},"album":{"type":["string","null"]},"url":{"type":"string"},"coverUrl":{"type":["string","null"]},"playUrl":{"type":["string","null"]},"durationSeconds":{"type":["number","null"]},"isOriginalSound":{"description":"True when the sound originated on TikTok rather than a licensed track.","type":["boolean","null"]},"videoCount":{"type":["number","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","authorName","album","url","coverUrl","playUrl","durationSeconds","isOriginalSound","videoCount","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/transcript":{"get":{"summary":"Video transcript","description":"The spoken transcript of a TikTok, as one text block plus timed cues. Returns the ORIGINAL spoken-language track by default rather than whichever track TikTok lists first, so the text reflects what was actually said. Pass `language` for a specific track. A miss is an error listing what is available, never a silent substitution into another language.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_transcript","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (preferred), share link, or numeric video id","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"BCP-47 or ISO-639 code, e.g. \"en\", \"es\", \"pt-BR\". Omit for the original spoken track.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/trending":{"get":{"summary":"Trending feed","description":"TikTok's logged-out For You feed for a region, showing what the platform is pushing to a brand-new visitor right now. Not a ranking anyone can reproduce: TikTok personalises even the anonymous feed, so two calls a second apart return different videos.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_trending","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter country code, e.g. US, GB, DE","default":"US","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 30, max 30)","type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/user-videos":{"get":{"summary":"Videos posted by a creator","description":"A creator's public posts, newest first, with view/like/comment/share counts. Photo posts are included and typed as `image` or `carousel`. Up to 15 per page, with a cursor for older posts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_userVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@nike), or a full tiktok.com profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 35, max 35)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"max_cursor","in":"query","required":false,"deprecated":true,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"},"description":"Alias for `cursor`, accepted for compatibility. Sending both with different values is rejected."}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/user/showcase":{"get":{"summary":"Creator's product showcase","description":"Products a creator has pinned to their profile showcase. This is what they are actually promoting, as opposed to what they sell. Requires a configured TikTok signer.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_userShowcase","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Creator handle, e.g. @charlidamelio","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"tiktok"},"id":{"type":"string"},"title":{"type":"string"},"url":{"type":["string","null"]},"description":{"type":["string","null"]},"price":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"originalPrice":{"type":"object","properties":{"amount":{"description":"Numeric amount in major units (12.99, not 1299). Null if unparseable.","type":["number","null"]},"currency":{"description":"ISO-4217 where TikTok gives one. Null means we will not guess.","type":["string","null"]},"formatted":{"description":"Exactly what TikTok displayed, e.g. \"$12.99\".","type":["string","null"]}},"required":["amount","currency","formatted"]},"imageUrls":{"type":"array","items":{"type":"string"}},"rating":{"description":"Star rating out of 5. Null on a product with no reviews yet.","type":["number","null"]},"reviewCount":{"type":["number","null"]},"soldCount":{"type":["number","null"]},"inStock":{"type":["boolean","null"]},"sellerId":{"type":["string","null"]},"sellerName":{"type":["string","null"]},"categoryName":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","title","url","description","price","originalPrice","imageUrls","rating","reviewCount","soldCount","inStock","sellerId","sellerName","categoryName","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/video":{"get":{"summary":"Video or photo-post details","description":"Full public metadata for one TikTok: caption, hashtags, mentions, author, sound, duration, and view/like/comment/share counts. Photo posts return every image in `mediaUrls`. Accepts a full URL, a share link (vm.tiktok.com), or a numeric video id.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_video","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL (preferred), share link, or numeric video id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/tiktok/videos/popular":{"get":{"summary":"Popular videos","description":"Videos trending in a market over a trailing window, from TikTok's Creative Center. Distinct from `/v1/tiktok/trending`, which is the personalised For You feed.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"tiktok_popularVideos","tags":["tiktok"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"region","in":"query","required":false,"schema":{"description":"Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market.","type":"string"}},{"name":"period","in":"query","required":false,"schema":{"description":"Trailing window in days: 7, 30 or 120","default":"7","type":"string","enum":["7","30","120"]}},{"name":"count","in":"query","required":false,"schema":{"description":"Items per page (default 20, max 50)","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/truthsocial/post":{"get":{"summary":"Post","description":"A single public Truth with its engagement counts and attached media.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"truthsocial_post","tags":["truthsocial"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (https://truthsocial.com/@handle/posts/<id>) or a bare numeric post id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/truthsocial/profile":{"get":{"summary":"Profile","description":"Public Truth Social profile: follower and following counts, Truth count, bio, avatar, header image, and verification status.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"truthsocial_profile","tags":["truthsocial"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@realDonaldTrump) or a truthsocial.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/truthsocial/user/posts":{"get":{"summary":"User posts","description":"Recent public Truths from an account, newest first, with favourite, reply and ReTruth counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"truthsocial_userPosts","tags":["truthsocial"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle or profile URL","type":"string"}},{"name":"user_id","in":"query","required":false,"schema":{"description":"Numeric account id, if you already have it","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"default":20,"type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response (Mastodon `max_id`)","type":"string"}},{"name":"exclude_replies","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitch/clip":{"get":{"summary":"Clip details","description":"Public metadata for a Twitch clip: views, duration, creator, broadcaster, category, and the offset into the source VOD.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitch_clip","tags":["twitch"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Clip URL (twitch.tv/<channel>/clip/<slug> or clips.twitch.tv/<slug>) or a bare slug","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitch/profile":{"get":{"summary":"Channel profile","description":"Public Twitch channel: followers, partner/affiliate status, bio, avatar, banner, account age, and whether the channel is live right now.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitch_profile","tags":["twitch"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel login (shroud), or a twitch.tv URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitch/user/schedule":{"get":{"summary":"Stream schedule","description":"A channel's published schedule for the current week, plus the next upcoming segment. Segments are returned as posts of type `live` whose `publishedAt` is the scheduled start time.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitch_userSchedule","tags":["twitch"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel login (hasanabi), or a twitch.tv URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitch/user/videos":{"get":{"summary":"Channel videos","description":"A channel's public VODs, highlights or uploads. Returns up to 100 per call, because Twitch gates deeper pages behind a browser integrity challenge and we do not run browser sessions.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitch_userVideos","tags":["twitch"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Channel login (shroud), or a twitch.tv URL","type":"string"}},{"name":"filter_by","in":"query","required":false,"schema":{"description":"archive = past broadcasts, highlight = clipped highlights, upload = uploaded videos","default":"archive","type":"string","enum":["archive","highlight","upload"]}},{"name":"sort_by","in":"query","required":false,"schema":{"default":"time","type":"string","enum":["time","views"]}},{"name":"limit","in":"query","required":false,"schema":{"default":30,"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/community":{"get":{"summary":"Community details","description":"Public details for an X Community: name, description, member count, topic, join policy, banner and the creator's handle. Read from the server-rendered community page, which X still serves to logged-out callers.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_community","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Community URL (x.com/i/communities/...) or the numeric id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/community/tweets":{"get":{"summary":"Community posts","description":"Recent posts in an X Community, with likes, retweets, replies and **view counts**. The community page publishes metrics X's embed CDN does not. One page only: X serves logged-out callers a single rendered batch and no continuation token, so `hasMore` is always false.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_communityTweets","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Community URL (x.com/i/communities/...) or the numeric id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/profile":{"get":{"summary":"Profile details","description":"Public profile for an X account: bio, location, avatar, banner, website, exact follower, following and post counts, join date and verified badge.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_profile","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@jack), or a full x.com profile URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/tweet":{"get":{"summary":"Post details","description":"One public post with its text, media, likes and replies, plus views and retweets where X shows them.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_tweet","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (x.com/user/status/123...) or a bare post id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/tweet/transcript":{"get":{"summary":"Post transcript","description":"Captions for a video post on X, as one text block plus timed cues. Sourced from the caption track in the video's HLS playlist, which is the only transcript X exposes to logged-out callers. Posts whose author never attached captions return an empty result and are not charged.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_tweetTranscript","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (x.com/user/status/123...) or a bare post id","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"BCP-47 code, e.g. \"en\". Defaults to the first track.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/twitter/user-tweets":{"get":{"summary":"Recent posts from an account","description":"An account's public posts with media, likes, replies and retweets: its pinned post and latest few, followed by a selection of older posts chosen by X, newest first. `viewCount` is null on the selection, and it is not a complete history.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"twitter_userTweets","tags":["twitter"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@jack), or a full x.com profile URL","type":"string"}},{"name":"count","in":"query","required":false,"schema":{"description":"Posts to return, 5-100. Defaults to 20 on the official API and to every post available otherwise.","type":"number"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response. Official API only.","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/vimeo/video":{"get":{"summary":"Video details and stream","description":"Public metadata for a Vimeo video: title, description, channel, duration, tags, upload date and, where the owner shows them, plays, likes and comments. `mediaUrls` holds the HLS playlist address, valid for about an hour. It is empty when Vimeo gives no open stream: the video is DRM-protected, or its player is unavailable to a logged-out visitor.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"vimeo_video","tags":["vimeo"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video id (293802639) or a vimeo.com/… or player.vimeo.com/video/… URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/walmart/category":{"get":{"summary":"Browse a Walmart category","description":"Public Walmart category listing: the same shape as `walmart.search`, keyed by category id instead of a query.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"walmart_category","tags":["walmart"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"category","in":"query","required":true,"schema":{"description":"Walmart category id, the last part of a category page's URL, e.g. \"3944_1089430_37807\". The page's URL is also accepted, on the marketplace set by `tld`.","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Walmart marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pages":{"type":["number","null"]}},"required":["page","pages"]}},"required":["items","meta"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/walmart/product":{"get":{"summary":"Walmart product details","description":"Public details for a Walmart listing: title, price, availability, seller, ratings, images and specifications, read from the page's own __NEXT_DATA__ payload.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"walmart_product","tags":["walmart"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"product_id","in":"query","required":true,"schema":{"description":"Numeric Walmart item id, the last path segment of an /ip/ URL, e.g. 18210919718","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Walmart marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Product"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/walmart/reviews":{"get":{"summary":"Walmart product reviews","description":"Paginated customer reviews for a Walmart product, from its dedicated reviews page.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"walmart_reviews","tags":["walmart"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"product_id","in":"query","required":true,"schema":{"description":"Numeric Walmart item id, e.g. 18210919718","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Walmart marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"number"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["relevancy","helpful","submission-desc","submission-asc","rating-desc","rating-asc"]}},{"name":"ratings","in":"query","required":false,"schema":{"description":"Comma list of star ratings to include, e.g. \"5,4\"","type":"string"}},{"name":"verified_purchase","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProductReview"}},"productName":{"type":["string","null"]},"productUrl":{"type":["string","null"]},"rating":{"type":["number","null"]},"reviewCount":{"type":["number","null"]}},"required":["items","productName","productUrl","rating","reviewCount"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/walmart/search":{"get":{"summary":"Search Walmart","description":"Public Walmart search results for a query: position, price, rating and availability per item.\n**Cost:** 3 credits per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"walmart_search","tags":["walmart"],"x-credit-cost":3,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Search terms, e.g. \"laptop\"","type":"string"}},{"name":"tld","in":"query","required":false,"schema":{"description":"Walmart marketplace, default com. One of: com, ca","type":"string"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultItem"}},"meta":{"type":"object","properties":{"page":{"type":"number"},"pages":{"type":["number","null"]}},"required":["page","pages"]}},"required":["items","meta"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel":{"get":{"summary":"Channel details","description":"Public details for a YouTube channel: subscribers, video count, description, links.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channel","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id (UC...), or full URL","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Creator"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel-videos":{"get":{"summary":"Channel videos","description":"Recent public uploads for a channel. Use `tab` to switch between videos and shorts. With `extra_fetch=true`, each item is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channelVideos","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id, or full URL","type":"string"}},{"name":"tab","in":"query","required":false,"schema":{"default":"videos","type":"string","enum":["videos","shorts","streams"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel/community-posts":{"get":{"summary":"Channel community posts","description":"A channel's Posts tab (what YouTube used to call Community). Images, multi-image carousels, shared videos and polls all come back as posts; poll options are under `raw`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channelCommunityPosts","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id (UC…), or full URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel/lives":{"get":{"summary":"Channel live streams","description":"A channel's Live tab: streams that are live now, scheduled, or finished and still on the tab. `viewCount` is concurrent viewers while a stream is live and total views once it ends. YouTube swaps the label, and we surface whichever it gave us.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channelLives","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":3600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id (UC…), or full URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel/playlists":{"get":{"summary":"Channel playlists","description":"Playlists a channel has made public. Pass an `id` from here to /v1/youtube/playlist for the videos in it.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channelPlaylists","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id (UC…), or full URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"platform":{"const":"youtube"},"id":{"type":"string"},"url":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"videoCount":{"type":["number","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"updatedText":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","url","title","description","thumbnailUrl","videoCount","ownerId","ownerName","updatedText","fetchedAt"]}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/channel/shorts":{"get":{"summary":"Channel shorts","description":"A channel's Shorts grid, newest first, about 48 per page. Shorts carry no duration or publish date on this surface, because YouTube does not render either, so both are null rather than guessed. With `extra_fetch=true`, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_channelShorts","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"handle","in":"query","required":true,"schema":{"description":"Handle (@mrbeast), channel id (UC…), or full URL","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/community-post":{"get":{"summary":"Community post details","description":"One community post by id or permalink, with its full text, attachments, like count and exact comment count. Poll questions and options are under `raw`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_communityPost","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Post URL (youtube.com/post/Ugk…) or bare post id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/playlist":{"get":{"summary":"Playlist contents","description":"The videos in a public playlist, in playlist order, 100 per page. Playlist metadata (title, description, owner) comes back alongside the items.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_playlist","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"playlist_id","in":"query","required":true,"schema":{"description":"Playlist id (PL…), or any URL containing `list=`","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"playlist":{"type":"object","properties":{"platform":{"const":"youtube"},"id":{"type":"string"},"url":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"thumbnailUrl":{"type":["string","null"]},"videoCount":{"type":["number","null"]},"ownerId":{"type":["string","null"]},"ownerName":{"type":["string","null"]},"updatedText":{"type":["string","null"]},"fetchedAt":{"type":"string"}},"required":["platform","id","url","title","description","thumbnailUrl","videoCount","ownerId","ownerName","updatedText","fetchedAt"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["playlist","items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/search":{"get":{"summary":"Search videos","description":"Public YouTube search results for a query: videos and Shorts in YouTube’s ranking order, with a cursor for the next page.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_search","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/search/hashtag":{"get":{"summary":"Search by hashtag","description":"Videos or Shorts carrying a hashtag, as YouTube ranks them on the hashtag landing page. `type=shorts` switches to the Shorts tab, which is a different result set rather than a filter over the same one.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_searchHashtag","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"description":"Hashtag, with or without the leading #","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","shorts"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/search/typeahead":{"get":{"summary":"Search typeahead","description":"YouTube's own search suggestions for a partial query, the autocomplete list the search box shows. Useful as a keyword-research signal: these are ranked by what people actually search for.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_searchTypeahead","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"query","in":"query","required":true,"schema":{"description":"Partial search query","type":"string"}},{"name":"region","in":"query","required":false,"schema":{"description":"ISO 3166-1 alpha-2 country code","default":"US","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"Interface language","default":"en","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"query":{"description":"The query as asked, echoed back","type":"string"},"suggestions":{"description":"Deduplicated, in YouTube’s own ranking order","type":"array","items":{"type":"string"}}},"required":["query","suggestions"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/shorts/trending":{"get":{"summary":"Trending shorts","description":"Shorts YouTube is currently surfacing, by region. Note that YouTube retired the global Trending feed (/feed/trending now serves the ordinary home feed), so this reads the ranked Shorts surface instead, which is what still exists. Results differ per request; it is deliberately not subscribable. With `extra_fetch=true`, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_trendingShorts","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"region","in":"query","required":false,"schema":{"description":"ISO 3166-1 alpha-2 country code","default":"US","type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"extra_fetch","in":"query","required":false,"schema":{"description":"When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size.","type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/transcript":{"get":{"summary":"Video transcript","description":"Full transcript for a YouTube video, as one text block plus timed cues. Returns the requested language when available, otherwise the default track.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_transcript","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL or 11-character video id","type":"string"}},{"name":"language","in":"query","required":false,"schema":{"description":"BCP-47 language code, e.g. \"en\", \"es\"","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Transcript"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/video":{"get":{"summary":"Video or Short details","description":"Public metadata for a YouTube video or Short, including view/like counts.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_video","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL or 11-character video id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Post"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/video/comment-replies":{"get":{"summary":"Comment replies","description":"Replies to one comment thread. Takes a `cursor` from the `replyCursors` list on `/v1/youtube/video/comments`, or (as a convenience) a video `url` plus `comment_id`, in which case we locate the thread on the first comment page for you.\n**Required:** Pass either `cursor` (from `replyCursors` on /v1/youtube/video/comments), or both `url` and `comment_id`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_commentReplies","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"x-parameter-constraints":["Pass either `cursor` (from `replyCursors` on /v1/youtube/video/comments), or both `url` and `comment_id`."],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"description":"Reply cursor from `/v1/youtube/video/comments`, or `pagination.cursor` to page deeper","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Video URL or id. Required only when using `comment_id`","type":"string"}},{"name":"comment_id","in":"query","required":false,"schema":{"description":"Top-level comment id (Ugx…) to fetch replies for","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/video/comments":{"get":{"summary":"Video comments","description":"Top-level comments on a video, about 20 per page. Pass `pagination.cursor` back as `cursor` for the next page. Each item that has replies also appears in `replyCursors`; feed that cursor to `/v1/youtube/video/comment-replies`. Use `order=newest` when polling for new comments, since `top` is re-ranked by YouTube and will churn.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_videoComments","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL or 11-character video id","type":"string"}},{"name":"order","in":"query","required":false,"schema":{"default":"top","type":"string","enum":["top","newest"]}},{"name":"cursor","in":"query","required":false,"schema":{"description":"`pagination.cursor` from a previous response","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"replyCursors":{"type":"array","items":{"type":"object","properties":{"commentId":{"type":"string"},"cursor":{"description":"Pass as `cursor` to /v1/youtube/video/comment-replies","type":"string"}},"required":["commentId","cursor"]}}},"required":["items","replyCursors"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/youtube/video/sponsors":{"get":{"summary":"Video sponsors (inferred)","description":"Brands, promo codes and affiliate links inferred from a video's description, plus YouTube's own paid-promotion disclosure. Every signal carries the description line it was read from and a confidence, because this is inference over prose. YouTube publishes no structured sponsor data. Experimental: expect to check `evidence` before acting on `low` confidence.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"youtube_videoSponsors","tags":["youtube"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":604800,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Video URL or 11-character video id","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"postId":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"disclosedPaidPromotion":{"type":"boolean"},"sponsors":{"type":"array","items":{"type":"object","properties":{"name":{"type":["string","null"]},"domain":{"type":["string","null"]},"url":{"type":["string","null"]},"promoCode":{"type":["string","null"]},"discount":{"type":["string","null"]},"kind":{"type":"string","enum":["sponsor","affiliate","gifted"]},"confidence":{"type":"string","enum":["high","medium","low"]},"evidence":{"type":"string"}},"required":["name","domain","url","promoCode","discount","kind","confidence","evidence"]}},"promoCodes":{"type":"array","items":{"type":"string"}},"outboundLinks":{"type":"array","items":{"type":"string"}},"fetchedAt":{"type":"string"}},"required":["postId","url","title","disclosedPaidPromotion","sponsors","promoCodes","outboundLinks","fetchedAt"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/zillow/agent":{"get":{"summary":"Zillow agent profile","description":"Public Zillow agent/team profile: brokerage, license, rating and review count, where published.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"zillow_agent","tags":["zillow"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Zillow agent profile URL, e.g. https://www.zillow.com/profile/<username>","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/RealEstateAgent"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/zillow/property":{"get":{"summary":"Zillow listing details","description":"Public details for a Zillow listing: price, status, beds/baths, area, address and an inline photo set.\n**Required:** Pass either `zpid` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"zillow_property","tags":["zillow"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":true,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":21600,"x-parameter-constraints":["Pass either `zpid` or `url`."],"parameters":[{"name":"zpid","in":"query","required":false,"schema":{"description":"Zillow property id (zpid), e.g. \"120900080\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Zillow listing URL, e.g. https://www.zillow.com/homedetails/<slug>/<zpid>_zpid/","type":"string"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/PropertyListing"},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}},"/v1/zillow/search":{"get":{"summary":"Search Zillow listings by location","description":"Public Zillow search results for a location, as full listing records.\n**Required:** Pass either `location` or `url`.\n**Cost:** 1 credit per live request.\n**Cache hits cost 0 credits.**\nFailed and empty responses are never charged.","operationId":"zillow_search","tags":["zillow"],"x-credit-cost":1,"x-render-credit-multiplier":3,"x-cacheable":true,"x-batchable":true,"x-subscribable":false,"x-min-interval-seconds":3600,"x-suggested-interval-seconds":86400,"x-parameter-constraints":["Pass either `location` or `url`."],"parameters":[{"name":"location","in":"query","required":false,"schema":{"description":"City/state or ZIP, e.g. \"Austin, TX\"","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Zillow search URL, e.g. https://www.zillow.com/austin-tx/","type":"string"}},{"name":"listing_type","in":"query","required":false,"schema":{"default":"sale","type":"string","enum":["sale","rent"]}},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"number"}},{"name":"cache_max_age","in":"query","required":false,"schema":{"type":"string"}},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PropertyListing"}}},"required":["items"]},"pagination":{"type":"object","properties":{"cursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}}},"meta":{"type":"object","properties":{"platform":{"type":"string"},"endpoint":{"type":"string"},"creditsCharged":{"type":"number","description":"Always 0 on a cache hit, an error, or an empty result."},"cached":{"type":"boolean"},"cacheAgeSeconds":{"type":["number","null"]},"durationMs":{"type":"number"},"requestId":{"type":"string"}},"required":["platform","endpoint","creditsCharged","cached","durationMs","requestId"]},"raw":{"description":"The untouched upstream payload. Present only with ?include_raw=true."}},"required":["success","data","meta"]}}}},"400":{"description":"invalid_request. Not charged"},"401":{"description":"missing_api_key / invalid_api_key / revoked_api_key. Never a billing error"},"402":{"description":"insufficient_credits. The key is valid, the balance is not"},"429":{"description":"daily_cap_exceeded or rate_limited (hourly calls to servers you named outside our known list). Not charged"},"501":{"description":"not_configured. This deployment is not set up to serve this endpoint. Not charged."},"502":{"description":"upstream_schema_drift. Not charged"},"503":{"description":"upstream_unavailable. We could not get this from the platform. Not charged"},"504":{"description":"upstream_timeout. Not charged"}}}}}}