{"openapi":"3.1.0","info":{"title":"CreatorCrawl API","description":"Scrape TikTok, Instagram, YouTube, Facebook, Twitter/X, Reddit, and LinkedIn data at scale. Profiles, videos, posts, comments, followers, trending content, ads, and more.","version":"2.0.0"},"servers":[{"url":"https://api.creatorcrawl.com","description":"API server"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from your CreatorCrawl dashboard"}}},"tags":[{"name":"TikTok","description":"Profiles, videos, comments, transcripts, followers, search, trending, songs, and live streams"},{"name":"Instagram","description":"Profiles, posts, reels, comments, transcripts, story highlights, and search"},{"name":"Facebook","description":"Profiles, posts, reels, comments, groups, Marketplace, events, and Ad Library"},{"name":"YouTube","description":"Channels, videos, shorts, comments, transcripts, playlists, and trending"},{"name":"Twitter","description":"Profiles, posts, search, followers, following, mentions, replies, quotes, retweeters, threads, lists, transcripts, and communities"},{"name":"Reddit","description":"Subreddits, posts, comments, and search"},{"name":"LinkedIn","description":"Person profiles, company pages, posts, and ad library"}],"paths":{"/facebook/profile":{"get":{"operationId":"getFacebookProfile","tags":["Facebook"],"summary":"Get Facebook profile","description":"Get public Facebook page details, contact fields, follower counts, and ad status.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook profile URL","schema":{"type":"string"}},{"name":"get_business_hours","in":"query","required":false,"description":"Set true to include business hours","schema":{"type":"string"}},{"name":"include_gated_profile","in":"query","required":false,"description":"Set true to include limited gated profile fields","schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"description":"Upstream cache age: 1d, 3d, 7d, 14d, or 30d","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/profile/reels":{"get":{"operationId":"getFacebookProfileReels","tags":["Facebook"],"summary":"Get Facebook profile reels","description":"Get up to 10 reels from a public Facebook page with pagination.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook page URL","schema":{"type":"string"}},{"name":"next_page_id","in":"query","required":false,"description":"Next page ID from the previous response","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/profile/photos":{"get":{"operationId":"getFacebookProfilePhotos","tags":["Facebook"],"summary":"Get Facebook profile photos","description":"Get photos from a public Facebook page with pagination.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook page URL","schema":{"type":"string"}},{"name":"next_page_id","in":"query","required":false,"description":"Next page ID from the previous response","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/profile/posts":{"get":{"operationId":"getFacebookProfilePosts","tags":["Facebook"],"summary":"Get Facebook profile posts","description":"Get public Facebook page posts by URL or page ID with cursor pagination.","parameters":[{"name":"url","in":"query","required":false,"description":"Facebook profile URL","schema":{"type":"string"}},{"name":"pageId","in":"query","required":false,"description":"Facebook page ID","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/profile/events":{"get":{"operationId":"getFacebookProfileEvents","tags":["Facebook"],"summary":"Get Facebook profile events","description":"Get events published by a public Facebook page.","parameters":[{"name":"url","in":"query","required":true,"description":"Public Facebook page URL","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/post":{"get":{"operationId":"getFacebookPost","tags":["Facebook"],"summary":"Get Facebook post","description":"Get a public Facebook post or reel, its metrics, media, and author.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook post or reel URL","schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"description":"Upstream cache age: 1d, 3d, 7d, 14d, or 30d","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/post/transcript":{"get":{"operationId":"getFacebookPostTranscript","tags":["Facebook"],"summary":"Get Facebook video transcript","description":"Get transcript text from a public Facebook video or reel under two minutes.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook post or reel URL","schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"description":"Upstream cache age: 1d, 3d, 7d, 14d, or 30d","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/post/comments":{"get":{"operationId":"getFacebookPostComments","tags":["Facebook"],"summary":"Get Facebook post comments","description":"Get comments from a Facebook post or reel by URL or feedback ID.","parameters":[{"name":"url","in":"query","required":false,"description":"Facebook post or reel URL","schema":{"type":"string"}},{"name":"feedback_id","in":"query","required":false,"description":"Feedback ID returned by the post endpoint","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/post/comment/replies":{"get":{"operationId":"getFacebookPostCommentReplies","tags":["Facebook"],"summary":"Get Facebook comment replies","description":"Get replies to a Facebook comment with cursor pagination.","parameters":[{"name":"feedback_id","in":"query","required":true,"description":"Comment feedback ID","schema":{"type":"string"}},{"name":"expansion_token","in":"query","required":true,"description":"Comment expansion token","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/group":{"get":{"operationId":"getFacebookGroup","tags":["Facebook"],"summary":"Get Facebook group","description":"Get public Facebook group details by URL or numeric group ID.","parameters":[{"name":"url","in":"query","required":false,"description":"Facebook group URL","schema":{"type":"string"}},{"name":"group_id","in":"query","required":false,"description":"Numeric Facebook group ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/group/posts":{"get":{"operationId":"getFacebookGroupPosts","tags":["Facebook"],"summary":"Get Facebook group posts","description":"Get public group posts with sorting and cursor pagination.","parameters":[{"name":"url","in":"query","required":false,"description":"Facebook group URL","schema":{"type":"string"}},{"name":"group_id","in":"query","required":false,"description":"Numeric Facebook group ID","schema":{"type":"string"}},{"name":"sort_by","in":"query","required":false,"description":"TOP_POSTS, RECENT_ACTIVITY, CHRONOLOGICAL, or CHRONOLOGICAL_LISTINGS","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/marketplace/location/search":{"get":{"operationId":"getFacebookMarketplaceLocationSearch","tags":["Facebook"],"summary":"Search Facebook Marketplace locations","description":"Find Marketplace locations and coordinates for listing search.","parameters":[{"name":"query","in":"query","required":true,"description":"Location search query","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/marketplace/search":{"get":{"operationId":"getFacebookMarketplaceSearch","tags":["Facebook"],"summary":"Search Facebook Marketplace","description":"Search Marketplace listings by keyword and coordinates with filters and pagination.","parameters":[{"name":"query","in":"query","required":true,"description":"Listing search keyword","schema":{"type":"string"}},{"name":"lat","in":"query","required":true,"description":"Search latitude","schema":{"type":"string"}},{"name":"lng","in":"query","required":true,"description":"Search longitude","schema":{"type":"string"}},{"name":"radius_km","in":"query","required":false,"description":"Search radius in kilometres","schema":{"type":"string"}},{"name":"min_price","in":"query","required":false,"description":"Minimum price","schema":{"type":"string"}},{"name":"max_price","in":"query","required":false,"description":"Maximum price","schema":{"type":"string"}},{"name":"count","in":"query","required":false,"description":"Number of listings to return","schema":{"type":"string"}},{"name":"sort_by","in":"query","required":false,"description":"suggested, distance_ascend, creation_time_descend, price_ascend, or price_descend","schema":{"type":"string"}},{"name":"delivery_method","in":"query","required":false,"description":"all, local_pickup, or shipping","schema":{"type":"string"}},{"name":"condition","in":"query","required":false,"description":"new, used_like_new, used_good, or used_fair","schema":{"type":"string"}},{"name":"date_listed","in":"query","required":false,"description":"Listing age filter","schema":{"type":"string"}},{"name":"availability","in":"query","required":false,"description":"available, sold, or all","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/marketplace/item":{"get":{"operationId":"getFacebookMarketplaceItem","tags":["Facebook"],"summary":"Get Facebook Marketplace item","description":"Get Marketplace item details by ID or URL.","parameters":[{"name":"id","in":"query","required":false,"description":"Marketplace item ID","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Marketplace item URL","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/events/search":{"get":{"operationId":"getFacebookEventsSearch","tags":["Facebook"],"summary":"Search Facebook events","description":"Search public Facebook events by name.","parameters":[{"name":"query","in":"query","required":true,"description":"Event search query","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/events":{"get":{"operationId":"getFacebookEvents","tags":["Facebook"],"summary":"Get Facebook city events","description":"Get public events from a Facebook city events page.","parameters":[{"name":"url","in":"query","required":true,"description":"Facebook city events page URL","schema":{"type":"string"}},{"name":"time","in":"query","required":false,"description":"today, this_week, or next_week","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/event/details":{"get":{"operationId":"getFacebookEventDetails","tags":["Facebook"],"summary":"Get Facebook event details","description":"Get a public Facebook event by ID or URL.","parameters":[{"name":"id","in":"query","required":false,"description":"Facebook event ID","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Facebook event URL","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/adLibrary/ad":{"get":{"operationId":"getFacebookAdLibraryAd","tags":["Facebook"],"summary":"Get Facebook Ad Library ad","description":"Get a Meta Ad Library ad, creative assets, delivery data, and status.","parameters":[{"name":"id","in":"query","required":false,"description":"Meta Ad Library ad ID","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Meta Ad Library ad URL","schema":{"type":"string"}},{"name":"trim","in":"query","required":false,"description":"Set true for a smaller response","schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"description":"Upstream cache age: 1d, 3d, 7d, 14d, or 30d","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/adLibrary/ad/transcript":{"get":{"operationId":"getFacebookAdLibraryAdTranscript","tags":["Facebook"],"summary":"Get Facebook ad transcript","description":"Get the transcript of a public Meta Ad Library video ad.","parameters":[{"name":"id","in":"query","required":false,"description":"Meta Ad Library ad ID","schema":{"type":"string"}},{"name":"url","in":"query","required":false,"description":"Meta Ad Library ad URL","schema":{"type":"string"}},{"name":"cache_max_age","in":"query","required":false,"description":"Upstream cache age: 1d, 3d, 7d, 14d, or 30d","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/adLibrary/search/ads":{"get":{"operationId":"getFacebookAdLibrarySearchAds","tags":["Facebook"],"summary":"Search Facebook Ad Library ads","description":"Search Meta Ad Library ads by keyword with filters and pagination.","parameters":[{"name":"query","in":"query","required":true,"description":"Keyword to search for","schema":{"type":"string"}},{"name":"sort_by","in":"query","required":false,"description":"total_impressions or relevancy_monthly_grouped","schema":{"type":"string"}},{"name":"search_type","in":"query","required":false,"description":"keyword_unordered or keyword_exact_phrase","schema":{"type":"string"}},{"name":"ad_type","in":"query","required":false,"description":"all or political_and_issue_ads","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter country code","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Two-letter language code","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"ALL, ACTIVE, or INACTIVE","schema":{"type":"string"}},{"name":"media_type","in":"query","required":false,"description":"ALL, IMAGE, VIDEO, MEME, IMAGE_AND_MEME, or NONE","schema":{"type":"string"}},{"name":"start_date","in":"query","required":false,"description":"Start date in YYYY-MM-DD format","schema":{"type":"string"}},{"name":"end_date","in":"query","required":false,"description":"End date in YYYY-MM-DD format","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}},{"name":"trim","in":"query","required":false,"description":"Set true for a smaller response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}},"post":{"operationId":"postFacebookAdLibrarySearchAds","tags":["Facebook"],"summary":"Search Facebook Ad Library ads with a JSON body","description":"POST variant for large Meta Ad Library pagination cursors.","responses":{"200":{"description":"Facebook ads","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/adLibrary/company/ads":{"get":{"operationId":"getFacebookAdLibraryCompanyAds","tags":["Facebook"],"summary":"Get Facebook company ads","description":"Get ads for a company from the Meta Ad Library with filters and pagination.","parameters":[{"name":"pageId","in":"query","required":false,"description":"Meta Ad Library page ID","schema":{"type":"string"}},{"name":"companyName","in":"query","required":false,"description":"Company name","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter country code","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"ALL, ACTIVE, or INACTIVE","schema":{"type":"string"}},{"name":"media_type","in":"query","required":false,"description":"ALL, IMAGE, VIDEO, MEME, IMAGE_AND_MEME, or NONE","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Two-letter language code","schema":{"type":"string"}},{"name":"sort_by","in":"query","required":false,"description":"total_impressions or relevancy_monthly_grouped","schema":{"type":"string"}},{"name":"start_date","in":"query","required":false,"description":"Start date in YYYY-MM-DD format","schema":{"type":"string"}},{"name":"end_date","in":"query","required":false,"description":"End date in YYYY-MM-DD format","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Cursor from the previous response","schema":{"type":"string"}},{"name":"trim","in":"query","required":false,"description":"Set true for a smaller response","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}},"post":{"operationId":"postFacebookAdLibraryCompanyAds","tags":["Facebook"],"summary":"Get Facebook company ads with a JSON body","description":"POST variant for large Meta Ad Library pagination cursors.","responses":{"200":{"description":"Facebook company ads","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Invalid request body"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/facebook/adLibrary/search/companies":{"get":{"operationId":"getFacebookAdLibrarySearchCompanies","tags":["Facebook"],"summary":"Search Facebook Ad Library companies","description":"Search Meta Ad Library companies and return page IDs.","parameters":[{"name":"query","in":"query","required":true,"description":"Company name to search for","schema":{"type":"string"}}],"responses":{"200":{"description":"Facebook data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing required parameter"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/creator/transcripts":{"get":{"operationId":"getTiktokCreatorTranscripts","tags":["TikTok"],"summary":"Get transcripts for a creator's top videos","description":"Fetches a creator's top videos and pairs each with its transcript. Costs ~11 credits (1 for video list + 10 for transcripts). Returns canonical Post + Transcript objects.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. charlidamelio)"},{"name":"count","in":"query","required":false,"schema":{"type":"string"},"description":"Number of top videos to fetch (1-10, default 10)"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Transcript language (2-letter code, e.g. en)"}],"responses":{"200":{"description":"Creator top video transcripts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"transcript":{"anyOf":[{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},{"type":"null"}],"description":"Normalized transcript. null when the video has no transcript."}},"required":["post","transcript"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/video/comments":{"get":{"operationId":"getTiktokVideoComments","tags":["TikTok"],"summary":"Get TikTok video comments","description":"Returns canonical Comment objects for a TikTok video. snake_case, ISO 8601 dates. Supports cursor pagination.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/user/followers":{"get":{"operationId":"getTiktokUserFollowers","tags":["TikTok"],"summary":"Get TikTok user followers","description":"Returns canonical Creator objects for the followers of a TikTok account. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"User id. Use this for faster response times."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Use page.cursor from the previous response. Takes precedence over min_time."},{"name":"min_time","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."}],"responses":{"200":{"description":"Normalized TikTok followers list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing handle or user_id"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/user/following":{"get":{"operationId":"getTiktokUserFollowing","tags":["TikTok"],"summary":"Get TikTok user following","description":"Returns canonical Creator objects for the accounts a TikTok user follows. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Use page.cursor from the previous response. Takes precedence over min_time."},{"name":"min_time","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."}],"responses":{"200":{"description":"Normalized TikTok following list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/user/live":{"get":{"operationId":"getTiktokUserLive","tags":["TikTok"],"summary":"Get TikTok live stream","description":"Returns the live stream status for a TikTok user including viewer count, room info, and host. Normalized snake_case shape.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. thejustalex)"}],"responses":{"200":{"description":"Normalized TikTok live stream data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"is_live":{"type":"boolean","description":"True when the host is currently live streaming."},"room_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Live room ID, null if no active room."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Live stream title set by the host."},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stream start time as ISO 8601 UTC."},"total_viewers":{"description":"Total unique viewers who have entered the stream.","type":"number"},"current_viewers":{"description":"Current concurrent viewers.","type":"number"},"host":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"platform":{"type":"string","const":"tiktok"}},"required":["is_live","room_id","title","started_at","host","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/creators/popular":{"get":{"operationId":"getTiktokCreatorsPopular","tags":["TikTok"],"summary":"Get popular creators","description":"Returns currently popular TikTok creators with their recent videos. Filter by follower count, country, and sort by engagement, follower count, or average views.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","enum":["engagement","follower","avg_views"]},"description":"Sort creators by engagement, follower count, or average views"},{"name":"followerCount","in":"query","required":false,"schema":{"type":"string","enum":["10K-100K","100K-1M","1M-10M","10M+"]},"description":"Filter by follower count range"},{"name":"creatorCountry","in":"query","required":false,"schema":{"type":"string"},"description":"Country code of the creator (e.g. US, GB)"},{"name":"audienceCountry","in":"query","required":false,"schema":{"type":"string"},"description":"Country code of the audience/follower (e.g. US, GB)"}],"responses":{"200":{"description":"Normalized popular creators","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Platform-internal user ID."},"name":{"type":"string","description":"Display name shown on profile."},"url":{"type":"string","description":"Canonical TikTok profile URL."},"follower_count":{"type":"number"},"total_likes":{"type":"number"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"recent_videos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"view_count":{"type":"number"},"like_count":{"type":"number"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","url","view_count","like_count","created_at"]}},"platform":{"type":"string","const":"tiktok"}},"required":["id","name","url","follower_count","total_likes","region","recent_videos","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/hashtags/popular":{"get":{"operationId":"getTiktokHashtagsPopular","tags":["TikTok"],"summary":"Get popular hashtags","description":"Returns currently popular TikTok hashtags with rank and trend data. Filter by period, country, and industry.","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"number","enum":[7,30,120]},"description":"Time period in days (7, 30, or 120)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB, FR, DE, JP, KR, BR)"},{"name":"newOnBoard","in":"query","required":false,"schema":{"type":"string"},"description":"Show only newly trending hashtags"},{"name":"industry","in":"query","required":false,"schema":{"type":"string"},"description":"Industry filter (e.g. beauty-and-personal-care, food-and-beverage, tech-and-electronics)"}],"responses":{"200":{"description":"Normalized popular hashtags","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Hashtag without # prefix."},"post_count":{"description":"Total posts using this hashtag.","type":"number"},"view_count":{"description":"Total views across posts using this hashtag.","type":"number"},"url":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"rank":{"description":"Current rank within the popular list.","type":"number"},"rank_change":{"description":"Position change since the previous period.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/songs/popular":{"get":{"operationId":"getTiktokSongsPopular","tags":["TikTok"],"summary":"Get popular songs","description":"Returns currently popular TikTok songs with rank and metadata. This endpoint can take up to 30 seconds.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"timePeriod","in":"query","required":false,"schema":{"type":"number","enum":[7,30,130]},"description":"Time period to get popular songs from"},{"name":"rankType","in":"query","required":false,"schema":{"type":"string","enum":["popular","surging"]},"description":"Get popular or surging songs"},{"name":"newOnBoard","in":"query","required":false,"schema":{"type":"boolean"},"description":"New to top 100"},{"name":"commercialMusic","in":"query","required":false,"schema":{"type":"boolean"},"description":"Approved for business use"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB, DE)"}],"responses":{"200":{"description":"Normalized popular songs","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"url":{"type":"string"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"duration_seconds":{"type":"number"},"use_count":{"description":"Number of posts that have used this sound.","type":"number"},"is_original":{"type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"rank":{"description":"Current rank within the popular list.","type":"number"},"rank_change":{"description":"Position change since the previous period.","anyOf":[{"type":"number"},{"type":"null"}]},"region":{"description":"Two-letter country code where the song is trending.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/videos/popular":{"get":{"operationId":"getTiktokVideosPopular","tags":["TikTok"],"summary":"Get popular videos","description":"Returns currently popular TikTok videos. Filter by period, country, and sort by likes, views, comments, or reposts.","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"number","enum":[7,30]},"description":"Time period in days (7 or 30)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string","enum":["like","hot","comment","repost"]},"description":"Sort by likes, views (hot), comments, or reposts"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB)"}],"responses":{"200":{"description":"Normalized popular videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Video ID."},"url":{"type":"string","description":"Canonical TikTok video URL."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Video caption."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Two-letter country code where the video is trending."},"duration_seconds":{"type":"number"},"platform":{"type":"string","const":"tiktok"}},"required":["id","url","text","region","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/profile":{"get":{"operationId":"getTiktokProfile","tags":["TikTok"],"summary":"Get TikTok profile","description":"Returns a canonical Creator with normalized fields plus up to ~30 recent posts. snake_case, ISO 8601 dates, no platform-specific bloat.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"}],"responses":{"200":{"description":"Normalized TikTok creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"recent_posts":{"description":"Up to ~30 recent posts from this profile.","type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/profile/region":{"get":{"operationId":"getTiktokProfileRegion","tags":["TikTok"],"summary":"Get TikTok profile region","description":"Returns the region/country code for a TikTok profile.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"}],"responses":{"200":{"description":"Profile region","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"handle":{"type":"string","description":"TikTok handle queried."},"profile_url":{"type":"string","description":"Full TikTok profile URL."},"region":{"type":"string","description":"ISO 3166-1 alpha-2 country code for the profile."}},"required":["handle","profile_url","region"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/profile/videos":{"get":{"operationId":"getTiktokProfileVideos","tags":["TikTok"],"summary":"Get TikTok profile videos","description":"Returns canonical Post objects for videos from a TikTok profile. snake_case, ISO 8601 dates. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"TikTok user id. Use this for faster responses."},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["latest","popular"]},"description":"What to sort by (latest or popular)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from page.cursor in the previous response. Takes precedence over max_cursor."},{"name":"max_cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region (Country) for the proxy. Defaults to US."}],"responses":{"200":{"description":"Normalized TikTok profile videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/song":{"get":{"operationId":"getTiktokSong","tags":["TikTok"],"summary":"Get song details","description":"Returns a canonical Song object for a TikTok song/clip.","parameters":[{"name":"clipId","in":"query","required":true,"schema":{"type":"string"},"description":"The clip ID (not the song ID)"}],"responses":{"200":{"description":"Normalized TikTok song","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"url":{"type":"string"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"duration_seconds":{"type":"number"},"use_count":{"description":"Number of posts that have used this sound.","type":"number"},"is_original":{"type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","title","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid clipId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/song/videos":{"get":{"operationId":"getTiktokSongVideos","tags":["TikTok"],"summary":"Get TikToks using a song","description":"Returns canonical Post objects for TikTok videos that use a specific song/clip. Cursor pagination.","parameters":[{"name":"clipId","in":"query","required":true,"schema":{"type":"string"},"description":"The clip ID from the song URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok videos using the song","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid clipId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/search/hashtag":{"get":{"operationId":"getTiktokSearchHashtag","tags":["TikTok"],"summary":"Search TikTok by hashtag","description":"Returns canonical Post objects for TikTok videos using a hashtag. Cursor pagination.","parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"type":"string"},"description":"Hashtag to search for (without #)"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region the proxy will be set to (e.g. US)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok hashtag search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing hashtag"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/search/keyword":{"get":{"operationId":"getTiktokSearchKeyword","tags":["TikTok"],"summary":"Search TikTok by keyword","description":"Returns canonical Post objects for TikTok videos matching a keyword. Supports sorting, date and duration filtering, and cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword to search for"},{"name":"date_posted","in":"query","required":false,"schema":{"type":"string","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},"description":"Time frame filter"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["relevance","most-liked","date-posted"]},"description":"Sort by"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region for the proxy (2 letter country code e.g. US, GB)"},{"name":"max_duration_seconds","in":"query","required":false,"schema":{"type":"number","minimum":0,"exclusiveMinimum":true},"description":"Only return videos with a known duration at or below this many seconds"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok keyword search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/search/top":{"get":{"operationId":"getTiktokSearchTop","tags":["TikTok"],"summary":"Top search on TikTok","description":"Returns canonical Post objects for top TikTok search results (videos and photo carousels). Cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword to search for"},{"name":"publish_time","in":"query","required":false,"schema":{"type":"string","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},"description":"Time frame filter"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["relevance","most-liked","date-posted"]},"description":"Sort by"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region for the proxy (2 letter country code e.g. US, GB)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok top search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/search/users":{"get":{"operationId":"getTiktokSearchUsers","tags":["TikTok"],"summary":"Search TikTok users","description":"Returns canonical Creator objects for users matching a search query. Cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query for users"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok user search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/video/transcript":{"get":{"operationId":"getTiktokVideoTranscript","tags":["TikTok"],"summary":"Get TikTok video transcript","description":"Returns a canonical Transcript object for a TikTok video. Optionally specify language and AI fallback.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Language of the transcript. 2 letter language code, e.g. 'en', 'es', 'fr', 'de', 'it', 'ja', 'ko', 'zh'"},{"name":"use_ai_as_fallback","in":"query","required":false,"schema":{"type":"string"},"description":"Set to 'true' to use AI as a fallback if the transcript is not found. Only works for videos under 2 minutes."}],"responses":{"200":{"description":"Normalized TikTok video transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/get-trending-feed":{"get":{"operationId":"getTiktokGetTrendingFeed","tags":["TikTok"],"summary":"Get trending feed","description":"Returns canonical Post objects for the current TikTok trending feed, filtered by region.","parameters":[{"name":"region","in":"query","required":true,"schema":{"type":"string"},"description":"Proxy region. Use 2 letter country codes like US, GB, FR, etc."}],"responses":{"200":{"description":"Normalized TikTok trending feed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid region"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/tiktok/video":{"get":{"operationId":"getTiktokVideo","tags":["TikTok"],"summary":"Get TikTok video info","description":"Returns a canonical Post object for a TikTok video. Pass get_transcript=true to include a normalized Transcript.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"get_transcript","in":"query","required":false,"schema":{"type":"string"},"description":"Set to true to get the transcript of the video"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region of the proxy. Use 2 letter country codes like US, GB, FR, PH, etc."}],"responses":{"200":{"description":"Normalized TikTok video","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"transcript":{"description":"Normalized transcript when get_transcript=true.","anyOf":[{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},{"type":"null"}]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/basic-profile":{"get":{"operationId":"getInstagramBasicProfile","tags":["Instagram"],"summary":"Get Instagram basic profile","description":"Returns a canonical Creator for an Instagram user ID. Use /instagram/profile if you only have a handle.","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram user ID (e.g. 314216)"}],"responses":{"200":{"description":"Normalized Instagram creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid userId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/post/comments":{"get":{"operationId":"getInstagramPostComments","tags":["Instagram"],"summary":"Get Instagram post comments","description":"Returns normalized comments from an Instagram post or reel with cursor pagination.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"The URL of the post or reel to get comments from"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from previous response to get more comments"}],"responses":{"200":{"description":"Normalized Instagram comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/user/embed":{"get":{"operationId":"getInstagramUserEmbed","tags":["Instagram"],"summary":"Get Instagram embed HTML","description":"Returns an HTML embed snippet for an Instagram profile.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. jane)"}],"responses":{"200":{"description":"Instagram embed HTML","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"handle":{"type":"string","description":"Instagram handle without @ prefix."},"url":{"type":"string","description":"Canonical profile URL."},"html":{"type":"string","description":"HTML embed snippet for the profile."}},"required":["handle","url","html"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/user/highlight/detail":{"get":{"operationId":"getInstagramUserHighlightDetail","tags":["Instagram"],"summary":"Get Instagram highlight details","description":"Returns details about a specific Instagram story highlight including all media items.","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"},"description":"The ID of the highlight (e.g. 18067016518767507)"}],"responses":{"200":{"description":"Normalized Instagram highlight","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Highlight ID without prefix."},"title":{"type":"string","description":"Highlight title."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Highlight creation time as ISO 8601 UTC."},"media_count":{"type":"number","description":"Total media items in this highlight."},"is_pinned":{"description":"Whether this highlight is pinned to the profile.","type":"boolean"},"owner":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"description":"Normalized story items as Post entries with type=story."}},"required":["id","title","created_at","media_count","owner","items"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid ID"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/post":{"get":{"operationId":"getInstagramPost","tags":["Instagram"],"summary":"Get Instagram post/reel info","description":"Returns a canonical Post for a public Instagram post or reel. View counts only reflect Instagram views, not combined IG + FB views.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram post or reel URL"}],"responses":{"200":{"description":"Normalized Instagram post","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/user/posts":{"get":{"operationId":"getInstagramUserPosts","tags":["Instagram"],"summary":"Get Instagram user posts","description":"Returns normalized public posts from an Instagram user with cursor pagination. video_view_count for reels is unreliable; use /instagram/user/reels for reel views.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. barstoolsports)"},{"name":"next_max_id","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor to get next page of results"}],"responses":{"200":{"description":"Normalized Instagram posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/profile":{"get":{"operationId":"getInstagramProfile","tags":["Instagram"],"summary":"Get Instagram profile","description":"Returns a canonical Creator with normalized fields plus recent posts when available. snake_case, ISO 8601 dates.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. adrianhorning)"}],"responses":{"200":{"description":"Normalized Instagram creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"recent_posts":{"description":"Recent posts from this profile when included by the upstream.","type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/user/reels":{"get":{"operationId":"getInstagramUserReels","tags":["Instagram"],"summary":"Get Instagram user reels","description":"Returns normalized public reels from a profile with cursor pagination. Use user_id for faster responses. Does not include pinned reels.","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram user ID for faster response times (e.g. 2700692569)"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram handle. Use user_id for faster response times."},{"name":"max_id","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from previous response to get more reels"}],"responses":{"200":{"description":"Normalized Instagram reels","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing user_id or handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/reels/search":{"get":{"operationId":"getInstagramReelsSearch","tags":["Instagram"],"summary":"Search Instagram reels","description":"Returns normalized reels matching a keyword. Uses Google Search to find reels since Instagram puts search behind login.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"The keyword to search for (e.g. dogs)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"The page number to return"}],"responses":{"200":{"description":"Normalized Instagram reels","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/user/highlights":{"get":{"operationId":"getInstagramUserHighlights","tags":["Instagram"],"summary":"Get Instagram story highlights","description":"Returns a list of story highlight summaries for an Instagram user. Use /instagram/user/highlight/detail for media items.","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram user ID for faster response times"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram handle. Use user_id for faster response times."}],"responses":{"200":{"description":"Instagram story highlight summaries","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Highlight ID without prefix."},"title":{"type":"string","description":"Highlight title."},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cover image URL."},"owner":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]}},"required":["id","title","cover_url","owner"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing user_id or handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/instagram/media/transcript":{"get":{"operationId":"getInstagramMediaTranscript","tags":["Instagram"],"summary":"Get Instagram post/reel transcript","description":"Returns the AI-generated transcript of an Instagram post or reel. Carousel items are joined into a single transcript. Works for videos under 2 minutes and may take 10-30 seconds.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram post or reel URL"}],"responses":{"200":{"description":"Normalized Instagram transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/profile":{"get":{"operationId":"getTwitterProfile","tags":["Twitter"],"summary":"Get Twitter/X profile","description":"Returns a canonical Creator for a Twitter/X user. snake_case, ISO 8601 dates, no platform-specific bloat. Verified is collapsed into a single boolean plus optional tier (standard / blue / gov).","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter handle (e.g. elonmusk)"}],"responses":{"200":{"description":"Normalized Twitter creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/videos/search":{"get":{"operationId":"getTwitterVideosSearch","tags":["Twitter"],"summary":"Search Twitter/X videos by keyword","description":"Returns normalized video posts matching a keyword. Supports Latest or Top sorting, duration filtering, and cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword, phrase, or X advanced-search query"},{"name":"query_type","in":"query","required":false,"schema":{"type":"string","enum":["Latest","Top"],"default":"Latest"},"description":"Search result ordering"},{"name":"max_duration_seconds","in":"query","required":false,"schema":{"type":"number","minimum":0,"exclusiveMinimum":true},"description":"Only return videos at or below this duration"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from the previous response"}],"responses":{"200":{"description":"Normalized Twitter/X video search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/user/tweets":{"get":{"operationId":"getTwitterUserTweets","tags":["Twitter"],"summary":"Get Twitter/X user tweets","description":"Returns canonical Post objects for a user.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter handle (e.g. elonmusk)"}],"responses":{"200":{"description":"Normalized Twitter posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet":{"get":{"operationId":"getTwitterTweet","tags":["Twitter"],"summary":"Get Twitter/X tweet","description":"Returns a canonical Post for a single tweet URL with engagement counts, media, and author.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X tweet URL"}],"responses":{"200":{"description":"Normalized Twitter tweet","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet/transcript":{"get":{"operationId":"getTwitterTweetTranscript","tags":["Twitter"],"summary":"Get Twitter/X tweet transcript","description":"Returns a canonical Transcript for the video in a Twitter/X tweet URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X tweet URL containing a video"}],"responses":{"200":{"description":"Normalized Twitter tweet transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/community":{"get":{"operationId":"getTwitterCommunity","tags":["Twitter"],"summary":"Get Twitter/X community","description":"Returns a canonical community object including name, description, member count, and rules.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X community URL"}],"responses":{"200":{"description":"Normalized Twitter community","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_count":{"type":"number"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_nsfw":{"type":"boolean"},"join_policy":{"description":"Community join policy, e.g. \"Open\" or \"Restricted\".","type":"string"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name","description"]}},"platform":{"type":"string","const":"twitter"}},"required":["id","name","url","description","member_count","created_at","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/community/tweets":{"get":{"operationId":"getTwitterCommunityTweets","tags":["Twitter"],"summary":"Get Twitter/X community tweets","description":"Returns canonical Post objects from a community.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X community URL"}],"responses":{"200":{"description":"Normalized Twitter community tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/search/tweets":{"get":{"operationId":"getTwitterSearchTweets","tags":["Twitter"],"summary":"Search Twitter/X posts","description":"Searches public posts with X advanced-search syntax and cursor pagination.","parameters":[{"name":"query","description":"Keyword, phrase, or X advanced-search query","required":true,"schema":{"type":"string"},"in":"query"},{"name":"query_type","description":"Search result ordering","schema":{"type":"string","enum":["Latest","Top"],"default":"Latest"},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Search Twitter/X posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/search/users":{"get":{"operationId":"getTwitterSearchUsers","tags":["Twitter"],"summary":"Search Twitter/X users","description":"Searches public Twitter/X accounts by keyword.","parameters":[{"name":"query","description":"Name, handle, or profile keyword","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Search Twitter/X users","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/user/followers":{"get":{"operationId":"getTwitterUserFollowers","tags":["Twitter"],"summary":"Get Twitter/X user followers","description":"Returns full public profiles for the followers of an account.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"},{"name":"page_size","description":"Profiles per page, from 20 to 200","schema":{"type":"integer","minimum":20,"maximum":200,"default":200},"in":"query","required":false}],"responses":{"200":{"description":"Get Twitter/X user followers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/user/following":{"get":{"operationId":"getTwitterUserFollowing","tags":["Twitter"],"summary":"Get Twitter/X accounts followed by a user","description":"Returns full public profiles for accounts followed by a user.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"},{"name":"page_size","description":"Profiles per page, from 20 to 200","schema":{"type":"integer","minimum":20,"maximum":200,"default":200},"in":"query","required":false}],"responses":{"200":{"description":"Get Twitter/X accounts followed by a user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/user/mentions":{"get":{"operationId":"getTwitterUserMentions","tags":["Twitter"],"summary":"Get posts mentioning a Twitter/X user","description":"Returns recent posts that mention a public account.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"since_time","description":"Include posts at or after this Unix timestamp","schema":{"type":"integer","minimum":0},"in":"query","required":false},{"name":"until_time","description":"Include posts before this Unix timestamp","schema":{"type":"integer","minimum":0},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get posts mentioning a Twitter/X user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet/replies":{"get":{"operationId":"getTwitterTweetReplies","tags":["Twitter"],"summary":"Get Twitter/X tweet replies","description":"Returns replies to a tweet with selectable relevance, recency, or likes sorting.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"query_type","description":"Reply ordering","schema":{"type":"string","enum":["Relevance","Latest","Likes"],"default":"Relevance"},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet replies","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet/quotes":{"get":{"operationId":"getTwitterTweetQuotes","tags":["Twitter"],"summary":"Get Twitter/X quote tweets","description":"Returns posts that quote a tweet, newest first.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X quote tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet/retweeters":{"get":{"operationId":"getTwitterTweetRetweeters","tags":["Twitter"],"summary":"Get Twitter/X tweet retweeters","description":"Returns public profiles that retweeted a tweet.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet retweeters","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/tweet/thread":{"get":{"operationId":"getTwitterTweetThread","tags":["Twitter"],"summary":"Get Twitter/X tweet thread context","description":"Returns the surrounding conversation thread for a tweet.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet thread context","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/twitter/list/tweets":{"get":{"operationId":"getTwitterListTweets","tags":["Twitter"],"summary":"Get Twitter/X list tweets","description":"Returns the timeline for a public Twitter/X list.","parameters":[{"name":"list_id","description":"Twitter/X list ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X list tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/channel":{"get":{"operationId":"getYoutubeChannel","tags":["YouTube"],"summary":"Get YouTube channel","description":"Fetches a YouTube channel by channel ID, handle, or URL.","parameters":[{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle (e.g. @MrBeast)"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel URL"}],"responses":{"200":{"description":"YouTube channel data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel (normalized Creator)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/channel/shorts":{"get":{"operationId":"getYoutubeChannelShorts","tags":["YouTube"],"summary":"Get YouTube channel shorts","description":"Fetches shorts from a YouTube channel. Supports sorting and pagination.","parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle"},{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["newest","popular"]},"description":"Sort order for shorts"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"}],"responses":{"200":{"description":"YouTube channel shorts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel shorts (normalized Post list, type=short)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/channel/videos":{"get":{"operationId":"getYoutubeChannelVideos","tags":["YouTube"],"summary":"Get YouTube channel videos","description":"Fetches videos from a YouTube channel. Supports sorting and pagination.","parameters":[{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["latest","popular"]},"description":"Sort order for videos"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"includeExtras","in":"query","required":false,"schema":{"type":"string"},"description":"Include extra data in response"}],"responses":{"200":{"description":"YouTube channel videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel videos (normalized Post list)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/video/comments":{"get":{"operationId":"getYoutubeVideoComments","tags":["YouTube"],"summary":"Get YouTube video comments","description":"Fetches comments from a YouTube video. Supports pagination and ordering.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["top","newest"]},"description":"Comment sort order"}],"responses":{"200":{"description":"YouTube video comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube video comments (normalized Comment list)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/playlist":{"get":{"operationId":"getYoutubePlaylist","tags":["YouTube"],"summary":"Get YouTube playlist","description":"Fetches a YouTube playlist by playlist ID.","parameters":[{"name":"playlist_id","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube playlist ID"}],"responses":{"200":{"description":"YouTube playlist data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_count":{"type":"number"},"view_count":{"type":"number"},"channel":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"platform":{"type":"string","const":"youtube"}},"required":["id","url","title","description","video_count","channel","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube playlist (normalized)"}}}},"400":{"description":"Missing or invalid playlist ID"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/search":{"get":{"operationId":"getYoutubeSearch","tags":["YouTube"],"summary":"Search YouTube","description":"Searches YouTube for videos, channels, playlists, and shorts.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query"},{"name":"uploadDate","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by upload date"},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string"},"description":"Sort results"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["videos","shorts","channels","playlists"]},"description":"Result type"},{"name":"duration","in":"query","required":false,"schema":{"type":"string","enum":["under_3_min","between_3_and_20_min","over_20_min"]},"description":"Video duration"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Two-letter country code"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"includeExtras","in":"query","required":false,"schema":{"type":"string"},"description":"Include extra data in response"}],"responses":{"200":{"description":"YouTube search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"channels":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"playlists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_count":{"type":"number"},"view_count":{"type":"number"},"channel":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"platform":{"type":"string","const":"youtube"}},"required":["id","url","title","description","video_count","channel","platform"]}},"shorts":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube search results (normalized buckets per type)"}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/search/hashtag":{"get":{"operationId":"getYoutubeSearchHashtag","tags":["YouTube"],"summary":"Search YouTube by hashtag","description":"Searches YouTube for videos by hashtag.","parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"type":"string"},"description":"Hashtag to search for"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["all","shorts"]},"description":"Filter by content type"}],"responses":{"200":{"description":"YouTube hashtag search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube hashtag search results (normalized Post list)"}}}},"400":{"description":"Missing hashtag"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/video/transcript":{"get":{"operationId":"getYoutubeVideoTranscript","tags":["YouTube"],"summary":"Get YouTube video transcript","description":"Fetches the transcript for a YouTube video by URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Two-letter language code for the transcript (e.g. en, es, fr)"}],"responses":{"200":{"description":"YouTube video transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube transcript (normalized)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/shorts/trending":{"get":{"operationId":"getYoutubeShortsTrending","tags":["YouTube"],"summary":"Get trending YouTube shorts","description":"Fetches currently trending YouTube shorts.","responses":{"200":{"description":"Trending YouTube shorts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"Trending YouTube shorts (normalized Post list, type=short)"}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/youtube/video":{"get":{"operationId":"getYoutubeVideo","tags":["YouTube"],"summary":"Get YouTube video details","description":"Fetches details for a YouTube video by URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"}],"responses":{"200":{"description":"YouTube video data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube video or short (normalized Post)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/reddit/post/comments":{"get":{"operationId":"getRedditPostComments","tags":["Reddit"],"summary":"Get post comments","description":"Returns the parent Post and a flat list of normalized Comment objects (replies inlined in display order).","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Reddit post URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized Reddit post and its comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"],"description":"The parent post."},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]},"description":"Comments flattened in display order, replies follow their parent."}},"required":["post","comments"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/reddit/search":{"get":{"operationId":"getRedditSearch","tags":["Reddit"],"summary":"Search Reddit","description":"Searches Reddit for posts matching a query across all subreddits. Returns normalized Post objects.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["relevance","new","top","comment_count"]},"description":"Sort order"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"after","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized Reddit search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/reddit/subreddit/details":{"get":{"operationId":"getRedditSubredditDetails","tags":["Reddit"],"summary":"Get subreddit details","description":"Returns a canonical Subreddit object with normalized fields. snake_case, ISO 8601 dates.","parameters":[{"name":"subreddit","in":"query","required":false,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Subreddit URL"}],"responses":{"200":{"description":"Normalized subreddit details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"Subreddit name without r/ prefix."},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"subscriber_count":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Omitted when Reddit does not publish the member count."},"active_user_count":{"type":"number"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_nsfw":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","const":"reddit"}},"required":["id","name","url","title","description","subscriber_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/reddit/subreddit/posts":{"get":{"operationId":"getRedditSubredditPosts","tags":["Reddit"],"summary":"Get subreddit posts","description":"Returns a list of canonical Post objects from a subreddit with sorting and time filtering. snake_case, ISO 8601 dates.","parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["best","hot","new","top","rising"]},"description":"Sort order"},{"name":"after","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized subreddit posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/reddit/subreddit/search":{"get":{"operationId":"getRedditSubredditSearch","tags":["Reddit"],"summary":"Search within a subreddit","description":"Searches posts and comments within a specific subreddit. Returns normalized Post and Comment objects.","parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"query","in":"query","required":false,"schema":{"type":"string"},"description":"Search query"},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Sort order"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized search results within the subreddit","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"description":"Matching posts in the subreddit."},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]},"description":"Matching comments in the subreddit."}},"required":["posts","comments"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/profile":{"get":{"operationId":"getLinkedinProfile","tags":["LinkedIn"],"summary":"Get LinkedIn person profile","description":"Fetch a public LinkedIn profile by URL. Returns the normalized person record with current role, experiences (with parsed ISO start/end dates), education, and recent posts.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn person profile URL, e.g. https://www.linkedin.com/in/parrsam/"}],"responses":{"200":{"description":"LinkedIn profile data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"current_role":{"anyOf":[{"type":"string"},{"type":"null"}]},"experiences":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"title":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Job location","anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Role description","anyOf":[{"type":"string"},{"type":"null"}]},"start_date":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"end_date":{"description":"End date in ISO 8601 UTC, null if current","anyOf":[{"type":"string"},{"type":"null"}]},"is_current":{"description":"Currently working in this role","anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"type":"null"}]},"education":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"school":{"description":"School name","anyOf":[{"type":"string"},{"type":"null"}]},"degree":{"description":"Degree earned","anyOf":[{"type":"string"},{"type":"null"}]},"field":{"description":"Field of study","anyOf":[{"type":"string"},{"type":"null"}]},"start_year":{"description":"Start year","anyOf":[{"type":"number"},{"type":"null"}]},"end_year":{"description":"End year","anyOf":[{"type":"number"},{"type":"null"}]}}}},{"type":"null"}]},"recent_posts":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},{"type":"null"}]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/company":{"get":{"operationId":"getLinkedinCompany","tags":["LinkedIn"],"summary":"Get LinkedIn company page","description":"Fetch a LinkedIn company page by URL. Returns the normalized company record with industry, employee count, headquarters, specialties, funding summary, and similar companies.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn company page URL, e.g. https://linkedin.com/company/shopify"}],"responses":{"200":{"description":"LinkedIn company page data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tagline":{"description":"Short company slogan.","anyOf":[{"type":"string"},{"type":"null"}]},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"employee_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"description":"Company size band (e.g. \"51-200 employees\").","anyOf":[{"type":"string"},{"type":"null"}]},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"headquarters":{"anyOf":[{"type":"string"},{"type":"null"}]},"founded_year":{"anyOf":[{"type":"number"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"specialties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","const":"linkedin"},"funding":{"anyOf":[{"type":"object","properties":{"rounds_count":{"description":"Total number of funding rounds","anyOf":[{"type":"number"},{"type":"null"}]},"last_round":{"description":"Most recent funding round","anyOf":[{"type":"object","properties":{"round_type":{"description":"Round type, e.g. \"Series C\"","anyOf":[{"type":"string"},{"type":"null"}]},"amount":{"description":"Round amount as displayed","anyOf":[{"type":"string"},{"type":"null"}]},"announced_at":{"description":"Announcement date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]},"investors":{"description":"Known investors","anyOf":[{"type":"array","items":{}},{"type":"null"}]}}},{"type":"null"}]},"similar_companies":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"name":{"description":"Similar company name","anyOf":[{"type":"string"},{"type":"null"}]},"url":{"description":"LinkedIn URL of the similar company","anyOf":[{"type":"string"},{"type":"null"}]},"logo_url":{"description":"Logo URL","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]}},"required":["id","name","url","description","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/company/posts":{"get":{"operationId":"getLinkedinCompanyPosts","tags":["LinkedIn"],"summary":"Get LinkedIn company posts","description":"Fetch normalized public posts from a LinkedIn company page. Use the page query parameter to paginate.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn company page URL, e.g. https://linkedin.com/company/shopify"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"description":"Page number for pagination, starting at 1"}],"responses":{"200":{"description":"LinkedIn company posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/post":{"get":{"operationId":"getLinkedinPost","tags":["LinkedIn"],"summary":"Get LinkedIn post or article","description":"Fetch a single LinkedIn post or pulse article by URL. Returns the normalized post with author, engagement counts, comments, and related articles from the same author.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn post or pulse article URL"}],"responses":{"200":{"description":"LinkedIn post data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"comments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"text":{"description":"Comment body text","anyOf":[{"type":"string"},{"type":"null"}]},"author":{"description":"Comment author","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]},"more_articles":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"url":{"description":"Article URL","anyOf":[{"type":"string"},{"type":"null"}]},"title":{"description":"Article title","anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Short description","anyOf":[{"type":"string"},{"type":"null"}]},"like_count":{"description":"Total reactions on the article","anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"description":"Total comments","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Publish date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/ads/search":{"get":{"operationId":"getLinkedinAdsSearch","tags":["LinkedIn"],"summary":"Search the LinkedIn Ad Library","description":"Search public LinkedIn ads by company, keyword, or company ID. Supports optional country and date filters. Returns normalized ad records with creative, advertiser, targeting, impressions, and run dates.","parameters":[{"name":"company","in":"query","required":false,"schema":{"type":"string"},"description":"Company name to search for, e.g. \"microsoft\""},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"},"description":"Search keyword"},{"name":"companyId","in":"query","required":false,"schema":{"type":"string"},"description":"LinkedIn company ID"},{"name":"countries","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated ISO country codes, e.g. \"US,CA,MX\""},{"name":"startDate","in":"query","required":false,"schema":{"type":"string"},"description":"Start date in YYYY-MM-DD format"},{"name":"endDate","in":"query","required":false,"schema":{"type":"string"},"description":"End date in YYYY-MM-DD format"},{"name":"paginationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination token from a previous response"}],"responses":{"200":{"description":"LinkedIn ad library search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"id":{"description":"Ad ID","anyOf":[{"type":"string"},{"type":"null"}]},"headline":{"description":"Ad headline","anyOf":[{"type":"string"},{"type":"null"}]},"body":{"description":"Ad description body","anyOf":[{"type":"string"},{"type":"null"}]},"ad_type":{"description":"Ad type, e.g. \"Single Image Ad\"","anyOf":[{"type":"string"},{"type":"null"}]},"advertiser":{"description":"Advertiser mini-profile","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"poster_name":{"description":"Poster name","anyOf":[{"type":"string"},{"type":"null"}]},"poster_title":{"description":"Poster title, e.g. \"Promoted\"","anyOf":[{"type":"string"},{"type":"null"}]},"promoted_by":{"description":"Promoted by attribution","anyOf":[{"type":"string"},{"type":"null"}]},"cta":{"description":"Call to action label","anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Ad creative media items","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"landing_page_url":{"description":"Click-through destination URL","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_from":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_to":{"description":"End date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"duration":{"description":"Human-readable run duration","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_bucket":{"description":"Impressions bucket, e.g. \"5k-10k\"","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_by_country":{"description":"Per-country impression breakdown","anyOf":[{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Country name"},"impressions_share":{"type":"string","description":"Impression share string, e.g. \"100%\" or \"less than 1%\""}},"required":["country","impressions_share"]}},{"type":"null"}]},"targeting":{"description":"Targeting summary","anyOf":[{"type":"object","properties":{"language":{"description":"Targeting language","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Targeting location","anyOf":[{"type":"string"},{"type":"null"}]},"audience":{"description":"Audience inclusion or exclusion notes","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company targeting notes","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]}},"required":["platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/linkedin/ad":{"get":{"operationId":"getLinkedinAd","tags":["LinkedIn"],"summary":"Get LinkedIn ad details","description":"Fetch a single LinkedIn ad from the Ad Library by URL. Returns the normalized ad record with creative, advertiser, targeting, impressions, run dates, and country breakdown.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn Ad Library detail URL, e.g. https://www.linkedin.com/ad-library/detail/666281156"}],"responses":{"200":{"description":"LinkedIn ad details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"id":{"description":"Ad ID","anyOf":[{"type":"string"},{"type":"null"}]},"headline":{"description":"Ad headline","anyOf":[{"type":"string"},{"type":"null"}]},"body":{"description":"Ad description body","anyOf":[{"type":"string"},{"type":"null"}]},"ad_type":{"description":"Ad type, e.g. \"Single Image Ad\"","anyOf":[{"type":"string"},{"type":"null"}]},"advertiser":{"description":"Advertiser mini-profile","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"poster_name":{"description":"Poster name","anyOf":[{"type":"string"},{"type":"null"}]},"poster_title":{"description":"Poster title, e.g. \"Promoted\"","anyOf":[{"type":"string"},{"type":"null"}]},"promoted_by":{"description":"Promoted by attribution","anyOf":[{"type":"string"},{"type":"null"}]},"cta":{"description":"Call to action label","anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Ad creative media items","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"landing_page_url":{"description":"Click-through destination URL","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_from":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_to":{"description":"End date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"duration":{"description":"Human-readable run duration","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_bucket":{"description":"Impressions bucket, e.g. \"5k-10k\"","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_by_country":{"description":"Per-country impression breakdown","anyOf":[{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Country name"},"impressions_share":{"type":"string","description":"Impression share string, e.g. \"100%\" or \"less than 1%\""}},"required":["country","impressions_share"]}},{"type":"null"}]},"targeting":{"description":"Targeting summary","anyOf":[{"type":"object","properties":{"language":{"description":"Targeting language","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Targeting location","anyOf":[{"type":"string"},{"type":"null"}]},"audience":{"description":"Audience inclusion or exclusion notes","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company targeting notes","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]}},"required":["platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/creator/transcripts":{"get":{"operationId":"getV2TiktokCreatorTranscripts","tags":["TikTok"],"summary":"Get transcripts for a creator's top videos","description":"Fetches a creator's top videos and pairs each with its transcript. Costs ~11 credits (1 for video list + 10 for transcripts). Returns canonical Post + Transcript objects.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. charlidamelio)"},{"name":"count","in":"query","required":false,"schema":{"type":"string"},"description":"Number of top videos to fetch (1-10, default 10)"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Transcript language (2-letter code, e.g. en)"}],"responses":{"200":{"description":"Creator top video transcripts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"transcript":{"anyOf":[{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},{"type":"null"}],"description":"Normalized transcript. null when the video has no transcript."}},"required":["post","transcript"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/video/comments":{"get":{"operationId":"getV2TiktokVideoComments","tags":["TikTok"],"summary":"Get TikTok video comments","description":"Returns canonical Comment objects for a TikTok video. snake_case, ISO 8601 dates. Supports cursor pagination.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/user/followers":{"get":{"operationId":"getV2TiktokUserFollowers","tags":["TikTok"],"summary":"Get TikTok user followers","description":"Returns canonical Creator objects for the followers of a TikTok account. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"User id. Use this for faster response times."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Use page.cursor from the previous response. Takes precedence over min_time."},{"name":"min_time","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."}],"responses":{"200":{"description":"Normalized TikTok followers list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing handle or user_id"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/user/following":{"get":{"operationId":"getV2TiktokUserFollowing","tags":["TikTok"],"summary":"Get TikTok user following","description":"Returns canonical Creator objects for the accounts a TikTok user follows. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Use page.cursor from the previous response. Takes precedence over min_time."},{"name":"min_time","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."}],"responses":{"200":{"description":"Normalized TikTok following list","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/user/live":{"get":{"operationId":"getV2TiktokUserLive","tags":["TikTok"],"summary":"Get TikTok live stream","description":"Returns the live stream status for a TikTok user including viewer count, room info, and host. Normalized snake_case shape.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. thejustalex)"}],"responses":{"200":{"description":"Normalized TikTok live stream data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"is_live":{"type":"boolean","description":"True when the host is currently live streaming."},"room_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Live room ID, null if no active room."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Live stream title set by the host."},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stream start time as ISO 8601 UTC."},"total_viewers":{"description":"Total unique viewers who have entered the stream.","type":"number"},"current_viewers":{"description":"Current concurrent viewers.","type":"number"},"host":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"platform":{"type":"string","const":"tiktok"}},"required":["is_live","room_id","title","started_at","host","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/creators/popular":{"get":{"operationId":"getV2TiktokCreatorsPopular","tags":["TikTok"],"summary":"Get popular creators","description":"Returns currently popular TikTok creators with their recent videos. Filter by follower count, country, and sort by engagement, follower count, or average views.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","enum":["engagement","follower","avg_views"]},"description":"Sort creators by engagement, follower count, or average views"},{"name":"followerCount","in":"query","required":false,"schema":{"type":"string","enum":["10K-100K","100K-1M","1M-10M","10M+"]},"description":"Filter by follower count range"},{"name":"creatorCountry","in":"query","required":false,"schema":{"type":"string"},"description":"Country code of the creator (e.g. US, GB)"},{"name":"audienceCountry","in":"query","required":false,"schema":{"type":"string"},"description":"Country code of the audience/follower (e.g. US, GB)"}],"responses":{"200":{"description":"Normalized popular creators","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Platform-internal user ID."},"name":{"type":"string","description":"Display name shown on profile."},"url":{"type":"string","description":"Canonical TikTok profile URL."},"follower_count":{"type":"number"},"total_likes":{"type":"number"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"recent_videos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"view_count":{"type":"number"},"like_count":{"type":"number"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","url","view_count","like_count","created_at"]}},"platform":{"type":"string","const":"tiktok"}},"required":["id","name","url","follower_count","total_likes","region","recent_videos","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/hashtags/popular":{"get":{"operationId":"getV2TiktokHashtagsPopular","tags":["TikTok"],"summary":"Get popular hashtags","description":"Returns currently popular TikTok hashtags with rank and trend data. Filter by period, country, and industry.","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"number","enum":[7,30,120]},"description":"Time period in days (7, 30, or 120)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB, FR, DE, JP, KR, BR)"},{"name":"newOnBoard","in":"query","required":false,"schema":{"type":"string"},"description":"Show only newly trending hashtags"},{"name":"industry","in":"query","required":false,"schema":{"type":"string"},"description":"Industry filter (e.g. beauty-and-personal-care, food-and-beverage, tech-and-electronics)"}],"responses":{"200":{"description":"Normalized popular hashtags","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Hashtag without # prefix."},"post_count":{"description":"Total posts using this hashtag.","type":"number"},"view_count":{"description":"Total views across posts using this hashtag.","type":"number"},"url":{"type":"string"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"rank":{"description":"Current rank within the popular list.","type":"number"},"rank_change":{"description":"Position change since the previous period.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/songs/popular":{"get":{"operationId":"getV2TiktokSongsPopular","tags":["TikTok"],"summary":"Get popular songs","description":"Returns currently popular TikTok songs with rank and metadata. This endpoint can take up to 30 seconds.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"timePeriod","in":"query","required":false,"schema":{"type":"number","enum":[7,30,130]},"description":"Time period to get popular songs from"},{"name":"rankType","in":"query","required":false,"schema":{"type":"string","enum":["popular","surging"]},"description":"Get popular or surging songs"},{"name":"newOnBoard","in":"query","required":false,"schema":{"type":"boolean"},"description":"New to top 100"},{"name":"commercialMusic","in":"query","required":false,"schema":{"type":"boolean"},"description":"Approved for business use"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB, DE)"}],"responses":{"200":{"description":"Normalized popular songs","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"url":{"type":"string"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"duration_seconds":{"type":"number"},"use_count":{"description":"Number of posts that have used this sound.","type":"number"},"is_original":{"type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"rank":{"description":"Current rank within the popular list.","type":"number"},"rank_change":{"description":"Position change since the previous period.","anyOf":[{"type":"number"},{"type":"null"}]},"region":{"description":"Two-letter country code where the song is trending.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/videos/popular":{"get":{"operationId":"getV2TiktokVideosPopular","tags":["TikTok"],"summary":"Get popular videos","description":"Returns currently popular TikTok videos. Filter by period, country, and sort by likes, views, comments, or reposts.","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"number","enum":[7,30]},"description":"Time period in days (7 or 30)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Page number"},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string","enum":["like","hot","comment","repost"]},"description":"Sort by likes, views (hot), comments, or reposts"},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"description":"Country code (e.g. US, GB)"}],"responses":{"200":{"description":"Normalized popular videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Video ID."},"url":{"type":"string","description":"Canonical TikTok video URL."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Video caption."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Two-letter country code where the video is trending."},"duration_seconds":{"type":"number"},"platform":{"type":"string","const":"tiktok"}},"required":["id","url","text","region","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/profile":{"get":{"operationId":"getV2TiktokProfile","tags":["TikTok"],"summary":"Get TikTok profile","description":"Returns a canonical Creator with normalized fields plus up to ~30 recent posts. snake_case, ISO 8601 dates, no platform-specific bloat.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"}],"responses":{"200":{"description":"Normalized TikTok creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"recent_posts":{"description":"Up to ~30 recent posts from this profile.","type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/profile/region":{"get":{"operationId":"getV2TiktokProfileRegion","tags":["TikTok"],"summary":"Get TikTok profile region","description":"Returns the region/country code for a TikTok profile.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"}],"responses":{"200":{"description":"Profile region","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"handle":{"type":"string","description":"TikTok handle queried."},"profile_url":{"type":"string","description":"Full TikTok profile URL."},"region":{"type":"string","description":"ISO 3166-1 alpha-2 country code for the profile."}},"required":["handle","profile_url","region"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/profile/videos":{"get":{"operationId":"getV2TiktokProfileVideos","tags":["TikTok"],"summary":"Get TikTok profile videos","description":"Returns canonical Post objects for videos from a TikTok profile. snake_case, ISO 8601 dates. Pass page.cursor as cursor to fetch the next page.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok handle (e.g. stoolpresidente)"},{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"TikTok user id. Use this for faster responses."},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["latest","popular"]},"description":"What to sort by (latest or popular)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from page.cursor in the previous response. Takes precedence over max_cursor."},{"name":"max_cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Compatibility alias for cursor."},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region (Country) for the proxy. Defaults to US."}],"responses":{"200":{"description":"Normalized TikTok profile videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/song":{"get":{"operationId":"getV2TiktokSong","tags":["TikTok"],"summary":"Get song details","description":"Returns a canonical Song object for a TikTok song/clip.","parameters":[{"name":"clipId","in":"query","required":true,"schema":{"type":"string"},"description":"The clip ID (not the song ID)"}],"responses":{"200":{"description":"Normalized TikTok song","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"url":{"type":"string"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"duration_seconds":{"type":"number"},"use_count":{"description":"Number of posts that have used this sound.","type":"number"},"is_original":{"type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","title","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid clipId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/song/videos":{"get":{"operationId":"getV2TiktokSongVideos","tags":["TikTok"],"summary":"Get TikToks using a song","description":"Returns canonical Post objects for TikTok videos that use a specific song/clip. Cursor pagination.","parameters":[{"name":"clipId","in":"query","required":true,"schema":{"type":"string"},"description":"The clip ID from the song URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok videos using the song","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid clipId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/search/hashtag":{"get":{"operationId":"getV2TiktokSearchHashtag","tags":["TikTok"],"summary":"Search TikTok by hashtag","description":"Returns canonical Post objects for TikTok videos using a hashtag. Cursor pagination.","parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"type":"string"},"description":"Hashtag to search for (without #)"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region the proxy will be set to (e.g. US)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok hashtag search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing hashtag"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/search/keyword":{"get":{"operationId":"getV2TiktokSearchKeyword","tags":["TikTok"],"summary":"Search TikTok by keyword","description":"Returns canonical Post objects for TikTok videos matching a keyword. Supports sorting, date and duration filtering, and cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword to search for"},{"name":"date_posted","in":"query","required":false,"schema":{"type":"string","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},"description":"Time frame filter"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["relevance","most-liked","date-posted"]},"description":"Sort by"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region for the proxy (2 letter country code e.g. US, GB)"},{"name":"max_duration_seconds","in":"query","required":false,"schema":{"type":"number","minimum":0,"exclusiveMinimum":true},"description":"Only return videos with a known duration at or below this many seconds"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok keyword search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/search/top":{"get":{"operationId":"getV2TiktokSearchTop","tags":["TikTok"],"summary":"Top search on TikTok","description":"Returns canonical Post objects for top TikTok search results (videos and photo carousels). Cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword to search for"},{"name":"publish_time","in":"query","required":false,"schema":{"type":"string","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},"description":"Time frame filter"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["relevance","most-liked","date-posted"]},"description":"Sort by"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region for the proxy (2 letter country code e.g. US, GB)"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok top search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/search/users":{"get":{"operationId":"getV2TiktokSearchUsers","tags":["TikTok"],"summary":"Search TikTok users","description":"Returns canonical Creator objects for users matching a search query. Cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query for users"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from a previous response to fetch the next page"}],"responses":{"200":{"description":"Normalized TikTok user search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/video/transcript":{"get":{"operationId":"getV2TiktokVideoTranscript","tags":["TikTok"],"summary":"Get TikTok video transcript","description":"Returns a canonical Transcript object for a TikTok video. Optionally specify language and AI fallback.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Language of the transcript. 2 letter language code, e.g. 'en', 'es', 'fr', 'de', 'it', 'ja', 'ko', 'zh'"},{"name":"use_ai_as_fallback","in":"query","required":false,"schema":{"type":"string"},"description":"Set to 'true' to use AI as a fallback if the transcript is not found. Only works for videos under 2 minutes."}],"responses":{"200":{"description":"Normalized TikTok video transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/get-trending-feed":{"get":{"operationId":"getV2TiktokGetTrendingFeed","tags":["TikTok"],"summary":"Get trending feed","description":"Returns canonical Post objects for the current TikTok trending feed, filtered by region.","parameters":[{"name":"region","in":"query","required":true,"schema":{"type":"string"},"description":"Proxy region. Use 2 letter country codes like US, GB, FR, etc."}],"responses":{"200":{"description":"Normalized TikTok trending feed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid region"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/tiktok/video":{"get":{"operationId":"getV2TiktokVideo","tags":["TikTok"],"summary":"Get TikTok video info","description":"Returns a canonical Post object for a TikTok video. Pass get_transcript=true to include a normalized Transcript.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"TikTok video URL"},{"name":"get_transcript","in":"query","required":false,"schema":{"type":"string"},"description":"Set to true to get the transcript of the video"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region of the proxy. Use 2 letter country codes like US, GB, FR, PH, etc."}],"responses":{"200":{"description":"Normalized TikTok video","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"transcript":{"description":"Normalized transcript when get_transcript=true.","anyOf":[{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},{"type":"null"}]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/basic-profile":{"get":{"operationId":"getV2InstagramBasicProfile","tags":["Instagram"],"summary":"Get Instagram basic profile","description":"Returns a canonical Creator for an Instagram user ID. Use /instagram/profile if you only have a handle.","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram user ID (e.g. 314216)"}],"responses":{"200":{"description":"Normalized Instagram creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid userId"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/post/comments":{"get":{"operationId":"getV2InstagramPostComments","tags":["Instagram"],"summary":"Get Instagram post comments","description":"Returns normalized comments from an Instagram post or reel with cursor pagination.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"The URL of the post or reel to get comments from"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from previous response to get more comments"}],"responses":{"200":{"description":"Normalized Instagram comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/user/embed":{"get":{"operationId":"getV2InstagramUserEmbed","tags":["Instagram"],"summary":"Get Instagram embed HTML","description":"Returns an HTML embed snippet for an Instagram profile.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. jane)"}],"responses":{"200":{"description":"Instagram embed HTML","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"handle":{"type":"string","description":"Instagram handle without @ prefix."},"url":{"type":"string","description":"Canonical profile URL."},"html":{"type":"string","description":"HTML embed snippet for the profile."}},"required":["handle","url","html"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/user/highlight/detail":{"get":{"operationId":"getV2InstagramUserHighlightDetail","tags":["Instagram"],"summary":"Get Instagram highlight details","description":"Returns details about a specific Instagram story highlight including all media items.","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"},"description":"The ID of the highlight (e.g. 18067016518767507)"}],"responses":{"200":{"description":"Normalized Instagram highlight","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Highlight ID without prefix."},"title":{"type":"string","description":"Highlight title."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Highlight creation time as ISO 8601 UTC."},"media_count":{"type":"number","description":"Total media items in this highlight."},"is_pinned":{"description":"Whether this highlight is pinned to the profile.","type":"boolean"},"owner":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"description":"Normalized story items as Post entries with type=story."}},"required":["id","title","created_at","media_count","owner","items"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid ID"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/post":{"get":{"operationId":"getV2InstagramPost","tags":["Instagram"],"summary":"Get Instagram post/reel info","description":"Returns a canonical Post for a public Instagram post or reel. View counts only reflect Instagram views, not combined IG + FB views.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram post or reel URL"}],"responses":{"200":{"description":"Normalized Instagram post","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/user/posts":{"get":{"operationId":"getV2InstagramUserPosts","tags":["Instagram"],"summary":"Get Instagram user posts","description":"Returns normalized public posts from an Instagram user with cursor pagination. video_view_count for reels is unreliable; use /instagram/user/reels for reel views.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. barstoolsports)"},{"name":"next_max_id","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor to get next page of results"}],"responses":{"200":{"description":"Normalized Instagram posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/profile":{"get":{"operationId":"getV2InstagramProfile","tags":["Instagram"],"summary":"Get Instagram profile","description":"Returns a canonical Creator with normalized fields plus recent posts when available. snake_case, ISO 8601 dates.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram handle (e.g. adrianhorning)"}],"responses":{"200":{"description":"Normalized Instagram creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"recent_posts":{"description":"Recent posts from this profile when included by the upstream.","type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/user/reels":{"get":{"operationId":"getV2InstagramUserReels","tags":["Instagram"],"summary":"Get Instagram user reels","description":"Returns normalized public reels from a profile with cursor pagination. Use user_id for faster responses. Does not include pinned reels.","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram user ID for faster response times (e.g. 2700692569)"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram handle. Use user_id for faster response times."},{"name":"max_id","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from previous response to get more reels"}],"responses":{"200":{"description":"Normalized Instagram reels","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing user_id or handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/reels/search":{"get":{"operationId":"getV2InstagramReelsSearch","tags":["Instagram"],"summary":"Search Instagram reels","description":"Returns normalized reels matching a keyword. Uses Google Search to find reels since Instagram puts search behind login.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"The keyword to search for (e.g. dogs)"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"The page number to return"}],"responses":{"200":{"description":"Normalized Instagram reels","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/user/highlights":{"get":{"operationId":"getV2InstagramUserHighlights","tags":["Instagram"],"summary":"Get Instagram story highlights","description":"Returns a list of story highlight summaries for an Instagram user. Use /instagram/user/highlight/detail for media items.","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram user ID for faster response times"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"Instagram handle. Use user_id for faster response times."}],"responses":{"200":{"description":"Instagram story highlight summaries","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Highlight ID without prefix."},"title":{"type":"string","description":"Highlight title."},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cover image URL."},"owner":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]}},"required":["id","title","cover_url","owner"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing user_id or handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/instagram/media/transcript":{"get":{"operationId":"getV2InstagramMediaTranscript","tags":["Instagram"],"summary":"Get Instagram post/reel transcript","description":"Returns the AI-generated transcript of an Instagram post or reel. Carousel items are joined into a single transcript. Works for videos under 2 minutes and may take 10-30 seconds.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Instagram post or reel URL"}],"responses":{"200":{"description":"Normalized Instagram transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/profile":{"get":{"operationId":"getV2TwitterProfile","tags":["Twitter"],"summary":"Get Twitter/X profile","description":"Returns a canonical Creator for a Twitter/X user. snake_case, ISO 8601 dates, no platform-specific bloat. Verified is collapsed into a single boolean plus optional tier (standard / blue / gov).","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter handle (e.g. elonmusk)"}],"responses":{"200":{"description":"Normalized Twitter creator","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/videos/search":{"get":{"operationId":"getV2TwitterVideosSearch","tags":["Twitter"],"summary":"Search Twitter/X videos by keyword","description":"Returns normalized video posts matching a keyword. Supports Latest or Top sorting, duration filtering, and cursor pagination.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Keyword, phrase, or X advanced-search query"},{"name":"query_type","in":"query","required":false,"schema":{"type":"string","enum":["Latest","Top"],"default":"Latest"},"description":"Search result ordering"},{"name":"max_duration_seconds","in":"query","required":false,"schema":{"type":"number","minimum":0,"exclusiveMinimum":true},"description":"Only return videos at or below this duration"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Cursor from the previous response"}],"responses":{"200":{"description":"Normalized Twitter/X video search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/user/tweets":{"get":{"operationId":"getV2TwitterUserTweets","tags":["Twitter"],"summary":"Get Twitter/X user tweets","description":"Returns canonical Post objects for a user.","parameters":[{"name":"handle","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter handle (e.g. elonmusk)"}],"responses":{"200":{"description":"Normalized Twitter posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid handle"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet":{"get":{"operationId":"getV2TwitterTweet","tags":["Twitter"],"summary":"Get Twitter/X tweet","description":"Returns a canonical Post for a single tweet URL with engagement counts, media, and author.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X tweet URL"}],"responses":{"200":{"description":"Normalized Twitter tweet","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet/transcript":{"get":{"operationId":"getV2TwitterTweetTranscript","tags":["Twitter"],"summary":"Get Twitter/X tweet transcript","description":"Returns a canonical Transcript for the video in a Twitter/X tweet URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X tweet URL containing a video"}],"responses":{"200":{"description":"Normalized Twitter tweet transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/community":{"get":{"operationId":"getV2TwitterCommunity","tags":["Twitter"],"summary":"Get Twitter/X community","description":"Returns a canonical community object including name, description, member count, and rules.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X community URL"}],"responses":{"200":{"description":"Normalized Twitter community","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_count":{"type":"number"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_nsfw":{"type":"boolean"},"join_policy":{"description":"Community join policy, e.g. \"Open\" or \"Restricted\".","type":"string"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name","description"]}},"platform":{"type":"string","const":"twitter"}},"required":["id","name","url","description","member_count","created_at","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/community/tweets":{"get":{"operationId":"getV2TwitterCommunityTweets","tags":["Twitter"],"summary":"Get Twitter/X community tweets","description":"Returns canonical Post objects from a community.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Twitter/X community URL"}],"responses":{"200":{"description":"Normalized Twitter community tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/search/tweets":{"get":{"operationId":"getV2TwitterSearchTweets","tags":["Twitter"],"summary":"Search Twitter/X posts","description":"Searches public posts with X advanced-search syntax and cursor pagination.","parameters":[{"name":"query","description":"Keyword, phrase, or X advanced-search query","required":true,"schema":{"type":"string"},"in":"query"},{"name":"query_type","description":"Search result ordering","schema":{"type":"string","enum":["Latest","Top"],"default":"Latest"},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Search Twitter/X posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/search/users":{"get":{"operationId":"getV2TwitterSearchUsers","tags":["Twitter"],"summary":"Search Twitter/X users","description":"Searches public Twitter/X accounts by keyword.","parameters":[{"name":"query","description":"Name, handle, or profile keyword","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Search Twitter/X users","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/user/followers":{"get":{"operationId":"getV2TwitterUserFollowers","tags":["Twitter"],"summary":"Get Twitter/X user followers","description":"Returns full public profiles for the followers of an account.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"},{"name":"page_size","description":"Profiles per page, from 20 to 200","schema":{"type":"integer","minimum":20,"maximum":200,"default":200},"in":"query","required":false}],"responses":{"200":{"description":"Get Twitter/X user followers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/user/following":{"get":{"operationId":"getV2TwitterUserFollowing","tags":["Twitter"],"summary":"Get Twitter/X accounts followed by a user","description":"Returns full public profiles for accounts followed by a user.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"},{"name":"page_size","description":"Profiles per page, from 20 to 200","schema":{"type":"integer","minimum":20,"maximum":200,"default":200},"in":"query","required":false}],"responses":{"200":{"description":"Get Twitter/X accounts followed by a user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/user/mentions":{"get":{"operationId":"getV2TwitterUserMentions","tags":["Twitter"],"summary":"Get posts mentioning a Twitter/X user","description":"Returns recent posts that mention a public account.","parameters":[{"name":"handle","description":"Twitter handle without @","required":true,"schema":{"type":"string"},"in":"query"},{"name":"since_time","description":"Include posts at or after this Unix timestamp","schema":{"type":"integer","minimum":0},"in":"query","required":false},{"name":"until_time","description":"Include posts before this Unix timestamp","schema":{"type":"integer","minimum":0},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get posts mentioning a Twitter/X user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet/replies":{"get":{"operationId":"getV2TwitterTweetReplies","tags":["Twitter"],"summary":"Get Twitter/X tweet replies","description":"Returns replies to a tweet with selectable relevance, recency, or likes sorting.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"query_type","description":"Reply ordering","schema":{"type":"string","enum":["Relevance","Latest","Likes"],"default":"Relevance"},"in":"query","required":false},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet replies","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet/quotes":{"get":{"operationId":"getV2TwitterTweetQuotes","tags":["Twitter"],"summary":"Get Twitter/X quote tweets","description":"Returns posts that quote a tweet, newest first.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X quote tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet/retweeters":{"get":{"operationId":"getV2TwitterTweetRetweeters","tags":["Twitter"],"summary":"Get Twitter/X tweet retweeters","description":"Returns public profiles that retweeted a tweet.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet retweeters","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/tweet/thread":{"get":{"operationId":"getV2TwitterTweetThread","tags":["Twitter"],"summary":"Get Twitter/X tweet thread context","description":"Returns the surrounding conversation thread for a tweet.","parameters":[{"name":"tweet_id","description":"Tweet ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X tweet thread context","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/twitter/list/tweets":{"get":{"operationId":"getV2TwitterListTweets","tags":["Twitter"],"summary":"Get Twitter/X list tweets","description":"Returns the timeline for a public Twitter/X list.","parameters":[{"name":"list_id","description":"Twitter/X list ID","required":true,"schema":{"type":"string"},"in":"query"},{"name":"cursor","description":"Opaque cursor from the previous response","required":false,"schema":{"type":"string"},"in":"query"}],"responses":{"200":{"description":"Get Twitter/X list tweets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid query parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/channel":{"get":{"operationId":"getV2YoutubeChannel","tags":["YouTube"],"summary":"Get YouTube channel","description":"Fetches a YouTube channel by channel ID, handle, or URL.","parameters":[{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle (e.g. @MrBeast)"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel URL"}],"responses":{"200":{"description":"YouTube channel data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel (normalized Creator)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/channel/shorts":{"get":{"operationId":"getV2YoutubeChannelShorts","tags":["YouTube"],"summary":"Get YouTube channel shorts","description":"Fetches shorts from a YouTube channel. Supports sorting and pagination.","parameters":[{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle"},{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["newest","popular"]},"description":"Sort order for shorts"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"}],"responses":{"200":{"description":"YouTube channel shorts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel shorts (normalized Post list, type=short)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/channel/videos":{"get":{"operationId":"getV2YoutubeChannelVideos","tags":["YouTube"],"summary":"Get YouTube channel videos","description":"Fetches videos from a YouTube channel. Supports sorting and pagination.","parameters":[{"name":"channelId","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel ID"},{"name":"handle","in":"query","required":false,"schema":{"type":"string"},"description":"YouTube channel handle"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["latest","popular"]},"description":"Sort order for videos"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"includeExtras","in":"query","required":false,"schema":{"type":"string"},"description":"Include extra data in response"}],"responses":{"200":{"description":"YouTube channel videos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube channel videos (normalized Post list)"}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/video/comments":{"get":{"operationId":"getV2YoutubeVideoComments","tags":["YouTube"],"summary":"Get YouTube video comments","description":"Fetches comments from a YouTube video. Supports pagination and ordering.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["top","newest"]},"description":"Comment sort order"}],"responses":{"200":{"description":"YouTube video comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube video comments (normalized Comment list)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/playlist":{"get":{"operationId":"getV2YoutubePlaylist","tags":["YouTube"],"summary":"Get YouTube playlist","description":"Fetches a YouTube playlist by playlist ID.","parameters":[{"name":"playlist_id","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube playlist ID"}],"responses":{"200":{"description":"YouTube playlist data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_count":{"type":"number"},"view_count":{"type":"number"},"channel":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"platform":{"type":"string","const":"youtube"}},"required":["id","url","title","description","video_count","channel","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube playlist (normalized)"}}}},"400":{"description":"Missing or invalid playlist ID"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/search":{"get":{"operationId":"getV2YoutubeSearch","tags":["YouTube"],"summary":"Search YouTube","description":"Searches YouTube for videos, channels, playlists, and shorts.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query"},{"name":"uploadDate","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by upload date"},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string"},"description":"Sort results"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["videos","shorts","channels","playlists"]},"description":"Result type"},{"name":"duration","in":"query","required":false,"schema":{"type":"string","enum":["under_3_min","between_3_and_20_min","over_20_min"]},"description":"Video duration"},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Two-letter country code"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"includeExtras","in":"query","required":false,"schema":{"type":"string"},"description":"Include extra data in response"}],"responses":{"200":{"description":"YouTube search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"channels":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]}},"playlists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"video_count":{"type":"number"},"view_count":{"type":"number"},"channel":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"videos":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"platform":{"type":"string","const":"youtube"}},"required":["id","url","title","description","video_count","channel","platform"]}},"shorts":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}}}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube search results (normalized buckets per type)"}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/search/hashtag":{"get":{"operationId":"getV2YoutubeSearchHashtag","tags":["YouTube"],"summary":"Search YouTube by hashtag","description":"Searches YouTube for videos by hashtag.","parameters":[{"name":"hashtag","in":"query","required":true,"schema":{"type":"string"},"description":"Hashtag to search for"},{"name":"continuationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Token for pagination from previous response"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["all","shorts"]},"description":"Filter by content type"}],"responses":{"200":{"description":"YouTube hashtag search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube hashtag search results (normalized Post list)"}}}},"400":{"description":"Missing hashtag"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/video/transcript":{"get":{"operationId":"getV2YoutubeVideoTranscript","tags":["YouTube"],"summary":"Get YouTube video transcript","description":"Fetches the transcript for a YouTube video by URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"},{"name":"language","in":"query","required":false,"schema":{"type":"string"},"description":"Two-letter language code for the transcript (e.g. en, es, fr)"}],"responses":{"200":{"description":"YouTube video transcript","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"text":{"type":"string","description":"Full transcript as a single string with line breaks."},"segments":{"description":"Timestamped segments when available.","type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"text":{"type":"string"}},"required":["start_seconds","end_seconds","text"]}}},"required":["language","text"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube transcript (normalized)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/shorts/trending":{"get":{"operationId":"getV2YoutubeShortsTrending","tags":["YouTube"],"summary":"Get trending YouTube shorts","description":"Fetches currently trending YouTube shorts.","responses":{"200":{"description":"Trending YouTube shorts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"Trending YouTube shorts (normalized Post list, type=short)"}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/youtube/video":{"get":{"operationId":"getV2YoutubeVideo","tags":["YouTube"],"summary":"Get YouTube video details","description":"Fetches details for a YouTube video by URL.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"YouTube video URL"}],"responses":{"200":{"description":"YouTube video data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"],"description":"YouTube video or short (normalized Post)"}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/reddit/post/comments":{"get":{"operationId":"getV2RedditPostComments","tags":["Reddit"],"summary":"Get post comments","description":"Returns the parent Post and a flat list of normalized Comment objects (replies inlined in display order).","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Reddit post URL"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized Reddit post and its comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"],"description":"The parent post."},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]},"description":"Comments flattened in display order, replies follow their parent."}},"required":["post","comments"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid URL"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/reddit/search":{"get":{"operationId":"getV2RedditSearch","tags":["Reddit"],"summary":"Search Reddit","description":"Searches Reddit for posts matching a query across all subreddits. Returns normalized Post objects.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"},"description":"Search query"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["relevance","new","top","comment_count"]},"description":"Sort order"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"after","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized Reddit search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing query"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/reddit/subreddit/details":{"get":{"operationId":"getV2RedditSubredditDetails","tags":["Reddit"],"summary":"Get subreddit details","description":"Returns a canonical Subreddit object with normalized fields. snake_case, ISO 8601 dates.","parameters":[{"name":"subreddit","in":"query","required":false,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Subreddit URL"}],"responses":{"200":{"description":"Normalized subreddit details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"Subreddit name without r/ prefix."},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"subscriber_count":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Omitted when Reddit does not publish the member count."},"active_user_count":{"type":"number"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_nsfw":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","const":"reddit"}},"required":["id","name","url","title","description","subscriber_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/reddit/subreddit/posts":{"get":{"operationId":"getV2RedditSubredditPosts","tags":["Reddit"],"summary":"Get subreddit posts","description":"Returns a list of canonical Post objects from a subreddit with sorting and time filtering. snake_case, ISO 8601 dates.","parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["best","hot","new","top","rising"]},"description":"Sort order"},{"name":"after","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized subreddit posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/reddit/subreddit/search":{"get":{"operationId":"getV2RedditSubredditSearch","tags":["Reddit"],"summary":"Search within a subreddit","description":"Searches posts and comments within a specific subreddit. Returns normalized Post and Comment objects.","parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"type":"string"},"description":"Subreddit name (e.g. programming)"},{"name":"query","in":"query","required":false,"schema":{"type":"string"},"description":"Search query"},{"name":"sort","in":"query","required":false,"schema":{"type":"string"},"description":"Sort order"},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","enum":["all","day","week","month","year"]},"description":"Time frame filter"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination cursor from previous response"}],"responses":{"200":{"description":"Normalized search results within the subreddit","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"description":"Matching posts in the subreddit."},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"created_at":{"type":"string","description":"Comment time as ISO 8601 UTC."},"like_count":{"type":"number"},"reply_count":{"type":"number"},"author":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},"parent_id":{"description":"ID of parent comment if this is a reply.","anyOf":[{"type":"string"},{"type":"null"}]},"is_pinned":{"type":"boolean"},"is_author_reply":{"description":"Whether this comment was made by the post author.","type":"boolean"},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","text","created_at","like_count","author","platform"]},"description":"Matching comments in the subreddit."}},"required":["posts","comments"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid parameters"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/profile":{"get":{"operationId":"getV2LinkedinProfile","tags":["LinkedIn"],"summary":"Get LinkedIn person profile","description":"Fetch a public LinkedIn profile by URL. Returns the normalized person record with current role, experiences (with parsed ISO start/end dates), education, and recent posts.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn person profile URL, e.g. https://www.linkedin.com/in/parrsam/"}],"responses":{"200":{"description":"LinkedIn profile data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms without stable IDs."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles (e.g. LinkedIn)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Profile bio / about / signature."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verified_tier":{"anyOf":[{"type":"string","enum":["standard","blue","gov","business","creator"],"description":"Tier of verification when verified=true. Absent means unverified or unknown."},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"following_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"post_count":{"description":"Total public posts/videos.","anyOf":[{"type":"number"},{"type":"null"}]},"total_likes":{"description":"Total likes received across all content, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"view_count":{"description":"Total profile view count, if exposed by the platform.","anyOf":[{"type":"number"},{"type":"null"}]},"external_url":{"description":"External website link in the bio.","anyOf":[{"type":"string"},{"type":"null"}]},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"category":{"description":"Self-declared category (creator, business, athlete, etc.).","anyOf":[{"type":"string"},{"type":"null"}]},"language":{"description":"Two-letter language code.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"Two-letter country/region code.","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Free-text location string when the platform provides one (e.g. LinkedIn).","anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"description":"Account creation time as ISO 8601 UTC.","anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"current_role":{"anyOf":[{"type":"string"},{"type":"null"}]},"experiences":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"title":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Job location","anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Role description","anyOf":[{"type":"string"},{"type":"null"}]},"start_date":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"end_date":{"description":"End date in ISO 8601 UTC, null if current","anyOf":[{"type":"string"},{"type":"null"}]},"is_current":{"description":"Currently working in this role","anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"type":"null"}]},"education":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"school":{"description":"School name","anyOf":[{"type":"string"},{"type":"null"}]},"degree":{"description":"Degree earned","anyOf":[{"type":"string"},{"type":"null"}]},"field":{"description":"Field of study","anyOf":[{"type":"string"},{"type":"null"}]},"start_year":{"description":"Start year","anyOf":[{"type":"number"},{"type":"null"}]},"end_year":{"description":"End year","anyOf":[{"type":"number"},{"type":"null"}]}}}},{"type":"null"}]},"recent_posts":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},{"type":"null"}]}},"required":["id","handle","name","bio","url","avatar_url","verified","follower_count","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/company":{"get":{"operationId":"getV2LinkedinCompany","tags":["LinkedIn"],"summary":"Get LinkedIn company page","description":"Fetch a LinkedIn company page by URL. Returns the normalized company record with industry, employee count, headquarters, specialties, funding summary, and similar companies.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn company page URL, e.g. https://linkedin.com/company/shopify"}],"responses":{"200":{"description":"LinkedIn company page data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"tagline":{"description":"Short company slogan.","anyOf":[{"type":"string"},{"type":"null"}]},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"follower_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"employee_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"size":{"description":"Company size band (e.g. \"51-200 employees\").","anyOf":[{"type":"string"},{"type":"null"}]},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"headquarters":{"anyOf":[{"type":"string"},{"type":"null"}]},"founded_year":{"anyOf":[{"type":"number"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"specialties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"type":"string","const":"linkedin"},"funding":{"anyOf":[{"type":"object","properties":{"rounds_count":{"description":"Total number of funding rounds","anyOf":[{"type":"number"},{"type":"null"}]},"last_round":{"description":"Most recent funding round","anyOf":[{"type":"object","properties":{"round_type":{"description":"Round type, e.g. \"Series C\"","anyOf":[{"type":"string"},{"type":"null"}]},"amount":{"description":"Round amount as displayed","anyOf":[{"type":"string"},{"type":"null"}]},"announced_at":{"description":"Announcement date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]},"investors":{"description":"Known investors","anyOf":[{"type":"array","items":{}},{"type":"null"}]}}},{"type":"null"}]},"similar_companies":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"name":{"description":"Similar company name","anyOf":[{"type":"string"},{"type":"null"}]},"url":{"description":"LinkedIn URL of the similar company","anyOf":[{"type":"string"},{"type":"null"}]},"logo_url":{"description":"Logo URL","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]}},"required":["id","name","url","description","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/company/posts":{"get":{"operationId":"getV2LinkedinCompanyPosts","tags":["LinkedIn"],"summary":"Get LinkedIn company posts","description":"Fetch normalized public posts from a LinkedIn company page. Use the page query parameter to paginate.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn company page URL, e.g. https://linkedin.com/company/shopify"},{"name":"page","in":"query","required":false,"schema":{"type":"integer"},"description":"Page number for pagination, starting at 1"}],"responses":{"200":{"description":"LinkedIn company posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/post":{"get":{"operationId":"getV2LinkedinPost","tags":["LinkedIn"],"summary":"Get LinkedIn post or article","description":"Fetch a single LinkedIn post or pulse article by URL. Returns the normalized post with author, engagement counts, comments, and related articles from the same author.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn post or pulse article URL"}],"responses":{"200":{"description":"LinkedIn post data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal post/video ID."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical post URL on the platform."},"type":{"type":"string","enum":["video","image","carousel","text","reel","short","live","story"],"description":"Content format."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Publish time as ISO 8601 UTC."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Caption / title / body text."},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Media attachments. Empty array or null for text-only posts.","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"view_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"like_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"share_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"save_count":{"anyOf":[{"type":"number"},{"type":"null"}]},"author":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"hashtags":{"description":"Hashtags found in the post text, without # prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"mentions":{"description":"Handles mentioned in the post, without @ prefix.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"is_pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ad":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_sponsored":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"is_ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"duration_seconds":{"description":"Duration in seconds for video content.","anyOf":[{"type":"number"},{"type":"null"}]},"music":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"author":{"type":"string"},"is_original":{"type":"boolean"}},"required":["id","title","author"]},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]},"comments":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"text":{"description":"Comment body text","anyOf":[{"type":"string"},{"type":"null"}]},"author":{"description":"Comment author","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]},"more_articles":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"url":{"description":"Article URL","anyOf":[{"type":"string"},{"type":"null"}]},"title":{"description":"Article title","anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Short description","anyOf":[{"type":"string"},{"type":"null"}]},"like_count":{"description":"Total reactions on the article","anyOf":[{"type":"number"},{"type":"null"}]},"comment_count":{"description":"Total comments","anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"description":"Publish date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["platform"]}},{"type":"null"}]}},"required":["id","url","type","created_at","text","like_count","comment_count","author","platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/ads/search":{"get":{"operationId":"getV2LinkedinAdsSearch","tags":["LinkedIn"],"summary":"Search the LinkedIn Ad Library","description":"Search public LinkedIn ads by company, keyword, or company ID. Supports optional country and date filters. Returns normalized ad records with creative, advertiser, targeting, impressions, and run dates.","parameters":[{"name":"company","in":"query","required":false,"schema":{"type":"string"},"description":"Company name to search for, e.g. \"microsoft\""},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"},"description":"Search keyword"},{"name":"companyId","in":"query","required":false,"schema":{"type":"string"},"description":"LinkedIn company ID"},{"name":"countries","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated ISO country codes, e.g. \"US,CA,MX\""},{"name":"startDate","in":"query","required":false,"schema":{"type":"string"},"description":"Start date in YYYY-MM-DD format"},{"name":"endDate","in":"query","required":false,"schema":{"type":"string"},"description":"End date in YYYY-MM-DD format"},{"name":"paginationToken","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination token from a previous response"}],"responses":{"200":{"description":"LinkedIn ad library search results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"id":{"description":"Ad ID","anyOf":[{"type":"string"},{"type":"null"}]},"headline":{"description":"Ad headline","anyOf":[{"type":"string"},{"type":"null"}]},"body":{"description":"Ad description body","anyOf":[{"type":"string"},{"type":"null"}]},"ad_type":{"description":"Ad type, e.g. \"Single Image Ad\"","anyOf":[{"type":"string"},{"type":"null"}]},"advertiser":{"description":"Advertiser mini-profile","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"poster_name":{"description":"Poster name","anyOf":[{"type":"string"},{"type":"null"}]},"poster_title":{"description":"Poster title, e.g. \"Promoted\"","anyOf":[{"type":"string"},{"type":"null"}]},"promoted_by":{"description":"Promoted by attribution","anyOf":[{"type":"string"},{"type":"null"}]},"cta":{"description":"Call to action label","anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Ad creative media items","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"landing_page_url":{"description":"Click-through destination URL","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_from":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_to":{"description":"End date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"duration":{"description":"Human-readable run duration","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_bucket":{"description":"Impressions bucket, e.g. \"5k-10k\"","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_by_country":{"description":"Per-country impression breakdown","anyOf":[{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Country name"},"impressions_share":{"type":"string","description":"Impression share string, e.g. \"100%\" or \"less than 1%\""}},"required":["country","impressions_share"]}},{"type":"null"}]},"targeting":{"description":"Targeting summary","anyOf":[{"type":"object","properties":{"language":{"description":"Targeting language","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Targeting location","anyOf":[{"type":"string"},{"type":"null"}]},"audience":{"description":"Audience inclusion or exclusion notes","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company targeting notes","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]}},"required":["platform"]}},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}},"/v2/linkedin/ad":{"get":{"operationId":"getV2LinkedinAd","tags":["LinkedIn"],"summary":"Get LinkedIn ad details","description":"Fetch a single LinkedIn ad from the Ad Library by URL. Returns the normalized ad record with creative, advertiser, targeting, impressions, run dates, and country breakdown.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"LinkedIn Ad Library detail URL, e.g. https://www.linkedin.com/ad-library/detail/666281156"}],"responses":{"200":{"description":"LinkedIn ad details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"platform":{"type":"string","const":"linkedin"},"id":{"description":"Ad ID","anyOf":[{"type":"string"},{"type":"null"}]},"headline":{"description":"Ad headline","anyOf":[{"type":"string"},{"type":"null"}]},"body":{"description":"Ad description body","anyOf":[{"type":"string"},{"type":"null"}]},"ad_type":{"description":"Ad type, e.g. \"Single Image Ad\"","anyOf":[{"type":"string"},{"type":"null"}]},"advertiser":{"description":"Advertiser mini-profile","anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Platform-internal user ID. Nullable for platforms that lack stable IDs (e.g., LinkedIn search results)."},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username without any @ prefix. Nullable for platforms that lack handles."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Display name shown on profile."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Canonical profile URL on the platform."},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"]}},"required":["id","handle","name","url","platform"]},{"type":"null"}]},"poster_name":{"description":"Poster name","anyOf":[{"type":"string"},{"type":"null"}]},"poster_title":{"description":"Poster title, e.g. \"Promoted\"","anyOf":[{"type":"string"},{"type":"null"}]},"promoted_by":{"description":"Promoted by attribution","anyOf":[{"type":"string"},{"type":"null"}]},"cta":{"description":"Call to action label","anyOf":[{"type":"string"},{"type":"null"}]},"media":{"description":"Ad creative media items","anyOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif"],"description":"Kind of media attachment."},"url":{"type":"string","description":"CDN URL to the media file."},"thumbnail_url":{"description":"CDN URL to a still thumbnail for the media.","type":"string"},"width":{"type":"number"},"height":{"type":"number"},"duration_seconds":{"description":"Duration of video/gif in seconds.","type":"number"}},"required":["type","url"]}},{"type":"null"}]},"landing_page_url":{"description":"Click-through destination URL","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_from":{"description":"Start date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"ran_at_to":{"description":"End date in ISO 8601 UTC","anyOf":[{"type":"string"},{"type":"null"}]},"duration":{"description":"Human-readable run duration","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_bucket":{"description":"Impressions bucket, e.g. \"5k-10k\"","anyOf":[{"type":"string"},{"type":"null"}]},"impressions_by_country":{"description":"Per-country impression breakdown","anyOf":[{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","description":"Country name"},"impressions_share":{"type":"string","description":"Impression share string, e.g. \"100%\" or \"less than 1%\""}},"required":["country","impressions_share"]}},{"type":"null"}]},"targeting":{"description":"Targeting summary","anyOf":[{"type":"object","properties":{"language":{"description":"Targeting language","anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"Targeting location","anyOf":[{"type":"string"},{"type":"null"}]},"audience":{"description":"Audience inclusion or exclusion notes","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company targeting notes","anyOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]}},"required":["platform"]},"page":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor for the next page. null when no more pages."},"has_more":{"type":"boolean"},"total":{"description":"Total available items when the upstream exposes it. Often absent on streaming feeds.","type":"number"}},"required":["cursor","has_more"]},"meta":{"type":"object","properties":{"platform":{"type":"string","enum":["tiktok","instagram","twitter","youtube","reddit","linkedin","facebook"],"description":"Platform the data was sourced from."},"fetched_at":{"type":"string","description":"Time the upstream was queried, ISO 8601 UTC."}},"required":["platform","fetched_at"]}},"required":["data","meta"]}}}},"400":{"description":"Missing or invalid url"},"401":{"description":"Unauthorized"},"503":{"description":"Upstream API error"}}}}}}