# Social Fetch > Social Fetch is a REST API for normalized Instagram, TikTok, and X/Twitter data. This file is generated from the same OpenAPI document as the public API and the on-site docs — use it as a machine-readable map for LLMs, coding agents, and documentation tools. Use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need a structured inventory instead of prose. ## API base URL and authentication - **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev` - **Authentication:** send `x-api-key: sfk_...` on `/v1/**` routes unless the operation is explicitly anonymous (see per-operation notes below). - **OpenAPI JSON:** [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) ## Recommended docs entrypoints (this site) - [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown). - [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope. - [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`. - [SDK reference](https://www.socialfetch.dev/docs/sdk-reference.mdx) — exhaustive SDK method inventory and route mapping for agents, tooling, and power users. - [Choose the right endpoint](https://www.socialfetch.dev/docs/choose-endpoint.mdx) — task-oriented route selection for smoke tests, profiles, list endpoints, and single-item lookups. - [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — fast comparison of identifiers, pagination, outcomes, media download, and SDK coverage. - [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping. - [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages. - [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance. - [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs. - Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract. ## Markdown docs convention - Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`). - Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`). ## HTTP operations (auto-generated) Each row is derived from the bundled OpenAPI `paths`, the internal docs URL map, and the documented SDK surface. **Markdown** links point at the `.mdx` export for that operation page. | Method | Path | Summary | Auth | SDK | Markdown docs | | --- | --- | --- | --- | --- | --- | | GET | `/v1/tiktok/profiles/{handle}` | Get TikTok profile | `x-api-key` | `client.tiktok.getProfile({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/get.mdx) | | GET | `/v1/tiktok/profiles/{handle}/videos` | List TikTok profile videos | `x-api-key` | `client.tiktok.getProfileVideos({ handle, cursor? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/videos/get.mdx) | | GET | `/v1/tiktok/videos` | Get TikTok video | `x-api-key` | `client.tiktok.getVideo({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/get.mdx) | | GET | `/v1/tiktok/videos/comments` | List TikTok video comments | `x-api-key` | `client.tiktok.getVideoComments({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/comments/get.mdx) | | GET | `/v1/tiktok/videos/transcript` | Get TikTok video transcript | `x-api-key` | `client.tiktok.getVideoTranscript({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/transcript/get.mdx) | | GET | `/v1/tiktok/profiles/{handle}/live` | Get TikTok live stream | `x-api-key` | `client.tiktok.getProfileLive({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/live/get.mdx) | | GET | `/v1/tiktok/shop/products/search` | Search TikTok Shop products | `x-api-key` | `client.tiktok.searchShopProducts({ query })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/search/get.mdx) | | GET | `/v1/tiktok/shop/products` | List TikTok Shop store products | `x-api-key` | `client.tiktok.listShopProducts({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/get.mdx) | | GET | `/v1/tiktok/products` | Get TikTok Shop product | `x-api-key` | `client.tiktok.getProduct({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/products/get.mdx) | | GET | `/v1/tiktok/products/reviews` | List TikTok Shop product reviews | `x-api-key` | `client.tiktok.getProductReviews({ url: 'https://www.tiktok.com/shop/pdp/...' })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/products/reviews/get.mdx) | | GET | `/v1/tiktok/profiles/{handle}/showcase-products` | List TikTok profile showcase products | `x-api-key` | `client.tiktok.getProfileShowcaseProducts({ handle, cursor? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/showcase-products/get.mdx) | | GET | `/v1/facebook/profiles` | Get Facebook profile | `x-api-key` | `client.facebook.getProfile({ url, includeBusinessHours? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/get.mdx) | | GET | `/v1/facebook/profiles/posts` | List Facebook profile posts | `x-api-key` | `client.facebook.getProfilePosts({ url?, pageId?, cursor? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/posts/get.mdx) | | GET | `/v1/facebook/profiles/reels` | List Facebook profile reels | `x-api-key` | `client.facebook.getProfileReels({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/reels/get.mdx) | | GET | `/v1/facebook/profiles/photos` | List Facebook profile photos | `x-api-key` | `client.facebook.getProfilePhotos({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/photos/get.mdx) | | GET | `/v1/facebook/posts` | Get Facebook post or reel | `x-api-key` | `client.facebook.getPost({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/get.mdx) | | GET | `/v1/facebook/posts/comments` | List Facebook post or reel comments | `x-api-key` | `client.facebook.getPostComments({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/comments/get.mdx) | | GET | `/v1/facebook/posts/transcript` | Get Facebook post transcript | `x-api-key` | `client.facebook.getPostTranscript({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/transcript/get.mdx) | | GET | `/v1/facebook/groups/posts` | List Facebook group posts | `x-api-key` | `client.facebook.listGroupPosts({ url, sortBy?, cursor? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/facebook/groups/posts/get.mdx) | | GET | `/v1/instagram/profiles/{handle}` | Get Instagram profile | `x-api-key` | `client.instagram.getProfile({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/get.mdx) | | GET | `/v1/instagram/profiles/{handle}/posts` | List Instagram profile posts | `x-api-key` | `client.instagram.getProfilePosts({ handle, cursor? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/posts/get.mdx) | | GET | `/v1/instagram/posts` | Get Instagram post or reel | `x-api-key` | `client.instagram.getPost({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/instagram/posts/get.mdx) | | GET | `/v1/instagram/posts/comments` | List Instagram post or reel comments | `x-api-key` | `client.instagram.getPostComments({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/instagram/posts/comments/get.mdx) | | GET | `/v1/linkedin/profiles` | Get LinkedIn profile | `x-api-key` | `client.linkedin.getProfile({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/get.mdx) | | GET | `/v1/linkedin/companies` | Get LinkedIn company page | `x-api-key` | `client.linkedin.getCompany({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/get.mdx) | | GET | `/v1/linkedin/companies/posts` | List LinkedIn company posts | `x-api-key` | `client.linkedin.listCompanyPosts({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/posts/get.mdx) | | GET | `/v1/linkedin/posts` | Get LinkedIn post or article | `x-api-key` | `client.linkedin.getPost({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/posts/get.mdx) | | GET | `/v1/youtube/channel` | Get YouTube channel | `x-api-key` | `client.youtube.getChannel({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channel/get.mdx) | | GET | `/v1/youtube/channels/videos` | List YouTube channel videos | `x-api-key` | `client.youtube.getChannelVideos({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channels/videos/get.mdx) | | GET | `/v1/youtube/channels/shorts` | List YouTube channel shorts | `x-api-key` | `client.youtube.getChannelShorts({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channels/shorts/get.mdx) | | GET | `/v1/youtube/videos` | Get YouTube video | `x-api-key` | `client.youtube.getVideo({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/youtube/videos/get.mdx) | | GET | `/v1/youtube/videos/transcript` | Get YouTube video transcript | `x-api-key` | `client.youtube.getVideoTranscript({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/youtube/videos/transcript/get.mdx) | | GET | `/v1/twitter/profiles/{handle}` | Get Twitter profile | `x-api-key` | `client.twitter.getProfile({ handle })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/get.mdx) | | GET | `/v1/twitter/profiles/{handle}/tweets` | List Twitter profile tweets | `x-api-key` | `client.twitter.getProfileTweets({ handle, trim? })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/tweets/get.mdx) | | GET | `/v1/twitter/search` | Search Twitter posts | `x-api-key` | `client.twitter.search({ query })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/search/get.mdx) | | GET | `/v1/twitter/tweets` | Get Twitter tweet | `x-api-key` | `client.twitter.getTweet({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/get.mdx) | | GET | `/v1/twitter/communities` | Get Twitter community | `x-api-key` | `client.twitter.getCommunity({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/communities/get.mdx) | | GET | `/v1/twitter/communities/tweets` | List Twitter community tweets | `x-api-key` | `client.twitter.getCommunityTweets({ url })` | [mdx](https://www.socialfetch.dev/docs/api/v1/twitter/communities/tweets/get.mdx) | | GET | `/v1/whoami` | Whoami | `x-api-key` | `client.auth.whoami()` | [mdx](https://www.socialfetch.dev/docs/api/v1/whoami.mdx) | | GET | `/v1/balance` | Get account balance | `x-api-key` | `client.billing.getBalance()` | [mdx](https://www.socialfetch.dev/docs/api/v1/balance.mdx) | | GET | `/health` | Health check | none | `client.health()` | [mdx](https://www.socialfetch.dev/docs/api/health/get.mdx) | ### TikTok - **GET `/v1/tiktok/profiles/{handle}`** — Get TikTok profile - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/tiktok/profiles/handle/get](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/get) - **Markdown docs:** [/docs/api/v1/tiktok/profiles/handle/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/get.mdx) - **SDK:** `client.tiktok.getProfile({ handle })` - **Parameters:** `handle` - **Accepted identifiers:** handle (path) - **Outcome field:** `data.lookupStatus` with values `found`, `private`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/profiles/{handle}` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.profile.get` - **GET `/v1/tiktok/profiles/{handle}/videos`** — List TikTok profile videos - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/tiktok/profiles/handle/videos/get](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/videos/get) - **Markdown docs:** [/docs/api/v1/tiktok/profiles/handle/videos/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/videos/get.mdx) - **SDK:** `client.tiktok.getProfileVideos({ handle, sortBy?, cursor?, userId?, region?, trim? })` - **Parameters:** `handle`, `sortBy`, `cursor`, `userId`, `region`, `trim` - **Accepted identifiers:** handle (path), userId (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Ordering:** Supported sort options: latest, popular. - **Empty results:** An empty `data.videos` array can mean no videos in the selected sort window, a private profile, or other cases—there is no `lookupStatus` field on this route. - **Disambiguation:** Call `GET /v1/tiktok/profiles/{handle}` when you need explicit `lookupStatus` including `private` or `not_found` before interpreting an empty video list. - **OpenAPI:** match `GET /v1/tiktok/profiles/{handle}/videos` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.profile.videos.list` - **GET `/v1/tiktok/videos`** — Get TikTok video - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base; +10 when `downloadMedia=true` (up to 11 credits on success). See `meta.creditsCharged`. Normalization failures are charged 1 credit. - **Human docs:** [/docs/api/v1/tiktok/videos/get](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/get) - **Markdown docs:** [/docs/api/v1/tiktok/videos/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/get.mdx) - **SDK:** `client.tiktok.getVideo({ url, region?, trim?, downloadMedia? })` - **Parameters:** `url`, `region`, `trim`, `downloadMedia`, `getTranscript` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **Media download:** supported via `downloadMedia=true` - **OpenAPI:** match `GET /v1/tiktok/videos` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.video.get` - **GET `/v1/tiktok/videos/comments`** — List TikTok video comments - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/tiktok/videos/comments/get](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/comments/get) - **Markdown docs:** [/docs/api/v1/tiktok/videos/comments/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/comments/get.mdx) - **SDK:** `client.tiktok.getVideoComments({ url, cursor?, trim? })` - **Parameters:** `url`, `cursor`, `trim` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/videos/comments` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.video.comments.list` - **GET `/v1/tiktok/videos/transcript`** — Get TikTok video transcript - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base; +10 when `useAiFallback=true` (up to 11 credits on success). See `meta.creditsCharged`. Normalization failures are charged 1 credit. - **Human docs:** [/docs/api/v1/tiktok/videos/transcript/get](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/transcript/get) - **Markdown docs:** [/docs/api/v1/tiktok/videos/transcript/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/videos/transcript/get.mdx) - **SDK:** `client.tiktok.getVideoTranscript({ url, language?, useAiFallback? })` - **Parameters:** `url`, `language`, `useAiFallback` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/videos/transcript` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.video.transcript.get` - **GET `/v1/tiktok/profiles/{handle}/live`** — Get TikTok live stream - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/tiktok/profiles/handle/live/get](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/live/get) - **Markdown docs:** [/docs/api/v1/tiktok/profiles/handle/live/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/live/get.mdx) - **SDK:** `client.tiktok.getProfileLive({ handle })` - **Parameters:** `handle` - **Accepted identifiers:** handle (path) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/profiles/{handle}/live` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.profile.live.check` - **GET `/v1/tiktok/shop/products/search`** — Search TikTok Shop products - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/tiktok/shop/products/search/get](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/search/get) - **Markdown docs:** [/docs/api/v1/tiktok/shop/products/search/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/search/get.mdx) - **SDK:** `client.tiktok.searchShopProducts({ query, page?, region? })` - **Parameters:** `query`, `page`, `region` - **Accepted identifiers:** none documented - **OpenAPI:** match `GET /v1/tiktok/shop/products/search` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.shop.products.search` - **GET `/v1/tiktok/shop/products`** — List TikTok Shop store products - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/tiktok/shop/products/get](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/get) - **Markdown docs:** [/docs/api/v1/tiktok/shop/products/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/shop/products/get.mdx) - **SDK:** `client.tiktok.listShopProducts({ url, cursor?, region? })` - **Parameters:** `url`, `cursor`, `region` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/shop/products` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.shop.products.list` - **GET `/v1/tiktok/products`** — Get TikTok Shop product - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/tiktok/products/get](https://www.socialfetch.dev/docs/api/v1/tiktok/products/get) - **Markdown docs:** [/docs/api/v1/tiktok/products/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/products/get.mdx) - **SDK:** `client.tiktok.getProduct({ url, region? })` - **Parameters:** `url`, `region` - **Accepted identifiers:** url (query) - **OpenAPI:** match `GET /v1/tiktok/products` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.product.get` - **GET `/v1/tiktok/products/reviews`** — List TikTok Shop product reviews - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/tiktok/products/reviews/get](https://www.socialfetch.dev/docs/api/v1/tiktok/products/reviews/get) - **Markdown docs:** [/docs/api/v1/tiktok/products/reviews/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/products/reviews/get.mdx) - **SDK:** `client.tiktok.getProductReviews({ url?, productId?, region?, page? })` - **Parameters:** `url`, `productId`, `region`, `page` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/tiktok/products/reviews` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.product.reviews.list` - **GET `/v1/tiktok/profiles/{handle}/showcase-products`** — List TikTok profile showcase products - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/tiktok/profiles/handle/showcase-products/get](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/showcase-products/get) - **Markdown docs:** [/docs/api/v1/tiktok/profiles/handle/showcase-products/get.mdx](https://www.socialfetch.dev/docs/api/v1/tiktok/profiles/handle/showcase-products/get.mdx) - **SDK:** `client.tiktok.getProfileShowcaseProducts({ handle, cursor?, region? })` - **Parameters:** `handle`, `cursor`, `region` - **Accepted identifiers:** handle (path) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Empty results:** An empty `data.products` array can mean no showcased products, a private profile, or other cases—there is no `lookupStatus` field on this route. - **Disambiguation:** Call `GET /v1/tiktok/profiles/{handle}` when you need explicit profile lookup status before interpreting an empty showcase list. - **OpenAPI:** match `GET /v1/tiktok/profiles/{handle}/showcase-products` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `tiktok.profile.showcaseProducts.list` ### Facebook - **GET `/v1/facebook/profiles`** — Get Facebook profile - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/facebook/profiles/get](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/get) - **Markdown docs:** [/docs/api/v1/facebook/profiles/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/get.mdx) - **SDK:** `client.facebook.getProfile({ url, includeBusinessHours? })` - **Parameters:** `url`, `includeBusinessHours` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `private`, `not_found` - **OpenAPI:** match `GET /v1/facebook/profiles` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.profile.get` - **GET `/v1/facebook/profiles/posts`** — List Facebook profile posts - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/facebook/profiles/posts/get](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/posts/get) - **Markdown docs:** [/docs/api/v1/facebook/profiles/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/posts/get.mdx) - **SDK:** `client.facebook.getProfilePosts({ url?, pageId?, cursor? })` - **Parameters:** `url`, `pageId`, `cursor` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Empty results:** An empty `data.posts` page with `hasMore: false` can represent no public posts, restricted visibility, or an unresolvable URL or id—there is no `lookupStatus` field on this route. - **Disambiguation:** Call `GET /v1/facebook/profiles` first when you need `found` / `private` / `not_found` before interpreting an empty posts page. - **OpenAPI:** match `GET /v1/facebook/profiles/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.profile.posts.list` - **GET `/v1/facebook/profiles/reels`** — List Facebook profile reels - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/facebook/profiles/reels/get](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/reels/get) - **Markdown docs:** [/docs/api/v1/facebook/profiles/reels/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/reels/get.mdx) - **SDK:** `client.facebook.getProfileReels({ url, cursor? })` - **Parameters:** `url`, `cursor` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/facebook/profiles/reels` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.profile.reels.list` - **GET `/v1/facebook/profiles/photos`** — List Facebook profile photos - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/facebook/profiles/photos/get](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/photos/get) - **Markdown docs:** [/docs/api/v1/facebook/profiles/photos/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/profiles/photos/get.mdx) - **SDK:** `client.facebook.getProfilePhotos({ url, cursor? })` - **Parameters:** `url`, `cursor` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/facebook/profiles/photos` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.profile.photos.list` - **GET `/v1/facebook/posts`** — Get Facebook post or reel - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/facebook/posts/get](https://www.socialfetch.dev/docs/api/v1/facebook/posts/get) - **Markdown docs:** [/docs/api/v1/facebook/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/get.mdx) - **SDK:** `client.facebook.getPost({ url, includeComments?, includeTranscript? })` - **Parameters:** `url`, `includeComments`, `includeTranscript` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/facebook/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.post.get` - **GET `/v1/facebook/posts/comments`** — List Facebook post or reel comments - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/facebook/posts/comments/get](https://www.socialfetch.dev/docs/api/v1/facebook/posts/comments/get) - **Markdown docs:** [/docs/api/v1/facebook/posts/comments/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/comments/get.mdx) - **SDK:** `client.facebook.getPostComments({ url?, cursor?, feedbackId? })` - **Parameters:** `url`, `cursor`, `feedbackId` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/facebook/posts/comments` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.post.comments.list` - **GET `/v1/facebook/posts/transcript`** — Get Facebook post transcript - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/facebook/posts/transcript/get](https://www.socialfetch.dev/docs/api/v1/facebook/posts/transcript/get) - **Markdown docs:** [/docs/api/v1/facebook/posts/transcript/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/posts/transcript/get.mdx) - **SDK:** `client.facebook.getPostTranscript({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found`, `lookup_failed` - **OpenAPI:** match `GET /v1/facebook/posts/transcript` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.post.transcript.get` - **GET `/v1/facebook/groups/posts`** — List Facebook group posts - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/facebook/groups/posts/get](https://www.socialfetch.dev/docs/api/v1/facebook/groups/posts/get) - **Markdown docs:** [/docs/api/v1/facebook/groups/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/facebook/groups/posts/get.mdx) - **SDK:** `client.facebook.listGroupPosts({ url, sortBy?, cursor? })` - **Parameters:** `url`, `sortBy`, `cursor` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Ordering:** Supported sort options: top, recentActivity, chronological, chronologicalListings. - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/facebook/groups/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `facebook.group.posts.list` ### Instagram - **GET `/v1/instagram/profiles/{handle}`** — Get Instagram profile - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/instagram/profiles/handle/get](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/get) - **Markdown docs:** [/docs/api/v1/instagram/profiles/handle/get.mdx](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/get.mdx) - **SDK:** `client.instagram.getProfile({ handle })` - **Parameters:** `handle` - **Accepted identifiers:** handle (path) - **Outcome field:** `data.lookupStatus` with values `found`, `private`, `not_found` - **OpenAPI:** match `GET /v1/instagram/profiles/{handle}` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `instagram.profile.get` - **GET `/v1/instagram/profiles/{handle}/posts`** — List Instagram profile posts - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/instagram/profiles/handle/posts/get](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/posts/get) - **Markdown docs:** [/docs/api/v1/instagram/profiles/handle/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/instagram/profiles/handle/posts/get.mdx) - **SDK:** `client.instagram.getProfilePosts({ handle, cursor? })` - **Parameters:** `handle`, `cursor` - **Accepted identifiers:** handle (path) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Empty results:** An empty `data.posts` page with `hasMore: false` can represent a private account, a missing handle, no public posts, or similar—there is no `lookupStatus` field on this route. - **Disambiguation:** Call `GET /v1/instagram/profiles/{handle}` first when you need `found` / `private` / `not_found` before interpreting an empty posts page. - **OpenAPI:** match `GET /v1/instagram/profiles/{handle}/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `instagram.profile.posts.list` - **GET `/v1/instagram/posts`** — Get Instagram post or reel - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base; +10 when `downloadMedia=true` (up to 11 credits on success). See `meta.creditsCharged`. Normalization failures are charged 1 credit. - **Human docs:** [/docs/api/v1/instagram/posts/get](https://www.socialfetch.dev/docs/api/v1/instagram/posts/get) - **Markdown docs:** [/docs/api/v1/instagram/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/instagram/posts/get.mdx) - **SDK:** `client.instagram.getPost({ url, region?, trim?, downloadMedia? })` - **Parameters:** `url`, `region`, `trim`, `downloadMedia` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **Media download:** supported via `downloadMedia=true` - **OpenAPI:** match `GET /v1/instagram/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `instagram.post.get` - **GET `/v1/instagram/posts/comments`** — List Instagram post or reel comments - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/instagram/posts/comments/get](https://www.socialfetch.dev/docs/api/v1/instagram/posts/comments/get) - **Markdown docs:** [/docs/api/v1/instagram/posts/comments/get.mdx](https://www.socialfetch.dev/docs/api/v1/instagram/posts/comments/get.mdx) - **SDK:** `client.instagram.getPostComments({ url, cursor? })` - **Parameters:** `url`, `cursor` - **Accepted identifiers:** url (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/instagram/posts/comments` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `instagram.post.comments.list` ### LinkedIn - **GET `/v1/linkedin/profiles`** — Get LinkedIn profile - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/linkedin/profiles/get](https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/get) - **Markdown docs:** [/docs/api/v1/linkedin/profiles/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/profiles/get.mdx) - **SDK:** `client.linkedin.getProfile({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/linkedin/profiles` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `linkedin.profile.get` - **GET `/v1/linkedin/companies`** — Get LinkedIn company page - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/linkedin/companies/get](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/get) - **Markdown docs:** [/docs/api/v1/linkedin/companies/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/get.mdx) - **SDK:** `client.linkedin.getCompany({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/linkedin/companies` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `linkedin.company.get` - **GET `/v1/linkedin/companies/posts`** — List LinkedIn company posts - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/linkedin/companies/posts/get](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/posts/get) - **Markdown docs:** [/docs/api/v1/linkedin/companies/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/companies/posts/get.mdx) - **SDK:** `client.linkedin.listCompanyPosts({ url, page? })` - **Parameters:** `url`, `page` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/linkedin/companies/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `linkedin.company.posts.list` - **GET `/v1/linkedin/posts`** — Get LinkedIn post or article - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/linkedin/posts/get](https://www.socialfetch.dev/docs/api/v1/linkedin/posts/get) - **Markdown docs:** [/docs/api/v1/linkedin/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/linkedin/posts/get.mdx) - **SDK:** `client.linkedin.getPost({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/linkedin/posts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `linkedin.post.get` ### YouTube - **GET `/v1/youtube/channel`** — Get YouTube channel - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/youtube/channel/get](https://www.socialfetch.dev/docs/api/v1/youtube/channel/get) - **Markdown docs:** [/docs/api/v1/youtube/channel/get.mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channel/get.mdx) - **SDK:** `client.youtube.getChannel({ channelId?, handle?, url? })` - **Parameters:** `channelId`, `handle`, `url` - **Accepted identifiers:** handle (query), url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/youtube/channel` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `youtube.channel.get` - **GET `/v1/youtube/channels/videos`** — List YouTube channel videos - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/youtube/channels/videos/get](https://www.socialfetch.dev/docs/api/v1/youtube/channels/videos/get) - **Markdown docs:** [/docs/api/v1/youtube/channels/videos/get.mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channels/videos/get.mdx) - **SDK:** `client.youtube.getChannelVideos({ channelId?, handle?, sortBy?, cursor?, includeExtras? })` - **Parameters:** `channelId`, `handle`, `sortBy`, `cursor`, `includeExtras` - **Accepted identifiers:** handle (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Ordering:** Supported sort options: latest, popular. - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **Empty results:** An empty `data.videos` array can still mean `data.lookupStatus: "found"` when the channel resolves but the returned page has no videos. - **Disambiguation:** Use `data.lookupStatus` to distinguish a resolved empty result from `not_found`. - **OpenAPI:** match `GET /v1/youtube/channels/videos` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `youtube.channel.videos.list` - **GET `/v1/youtube/channels/shorts`** — List YouTube channel shorts - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/youtube/channels/shorts/get](https://www.socialfetch.dev/docs/api/v1/youtube/channels/shorts/get) - **Markdown docs:** [/docs/api/v1/youtube/channels/shorts/get.mdx](https://www.socialfetch.dev/docs/api/v1/youtube/channels/shorts/get.mdx) - **SDK:** `client.youtube.getChannelShorts({ channelId?, handle?, sortBy?, cursor? })` - **Parameters:** `channelId`, `handle`, `sortBy`, `cursor` - **Accepted identifiers:** handle (query) - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **Ordering:** Supported sort options: latest, popular. - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **Empty results:** An empty `data.shorts` array can still mean `data.lookupStatus: "found"` when the channel resolves but the returned page has no Shorts. - **Disambiguation:** Use `data.lookupStatus` to distinguish a resolved empty result from `not_found`. - **OpenAPI:** match `GET /v1/youtube/channels/shorts` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `youtube.channel.shorts.list` - **GET `/v1/youtube/videos`** — Get YouTube video - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/youtube/videos/get](https://www.socialfetch.dev/docs/api/v1/youtube/videos/get) - **Markdown docs:** [/docs/api/v1/youtube/videos/get.mdx](https://www.socialfetch.dev/docs/api/v1/youtube/videos/get.mdx) - **SDK:** `client.youtube.getVideo({ url, language? })` - **Parameters:** `url`, `language` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/youtube/videos` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `youtube.video.get` - **GET `/v1/youtube/videos/transcript`** — Get YouTube video transcript - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/youtube/videos/transcript/get](https://www.socialfetch.dev/docs/api/v1/youtube/videos/transcript/get) - **Markdown docs:** [/docs/api/v1/youtube/videos/transcript/get.mdx](https://www.socialfetch.dev/docs/api/v1/youtube/videos/transcript/get.mdx) - **SDK:** `client.youtube.getVideoTranscript({ url, language? })` - **Parameters:** `url`, `language` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found`, `lookup_failed` - **OpenAPI:** match `GET /v1/youtube/videos/transcript` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `youtube.video.transcript.get` ### Twitter - **GET `/v1/twitter/profiles/{handle}`** — Get Twitter profile - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/twitter/profiles/handle/get](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/get) - **Markdown docs:** [/docs/api/v1/twitter/profiles/handle/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/get.mdx) - **SDK:** `client.twitter.getProfile({ handle })` - **Parameters:** `handle` - **Accepted identifiers:** handle (path) - **Outcome field:** `data.lookupStatus` with values `found`, `private`, `not_found` - **OpenAPI:** match `GET /v1/twitter/profiles/{handle}` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.profile.get` - **GET `/v1/twitter/profiles/{handle}/tweets`** — List Twitter profile tweets - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/twitter/profiles/handle/tweets/get](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/tweets/get) - **Markdown docs:** [/docs/api/v1/twitter/profiles/handle/tweets/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/tweets/get.mdx) - **SDK:** `client.twitter.getProfileTweets({ handle, trim? })` - **Parameters:** `handle`, `trim` - **Accepted identifiers:** handle (path) - **Ordering:** Default list behavior returns popular results. - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **Empty results:** An empty `data.tweets` array can occur with `lookupStatus: "found"` (no popular public tweets in this window) or `lookupStatus: "not_found"` (handle did not resolve). - **Disambiguation:** Call `GET /v1/twitter/profiles/{handle}` when you must distinguish `private` from `not_found` before interpreting an empty tweet list. - **OpenAPI:** match `GET /v1/twitter/profiles/{handle}/tweets` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.profile.tweets.list` - **GET `/v1/twitter/search`** — Search Twitter posts - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 2 credit base (up to 2 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/twitter/search/get](https://www.socialfetch.dev/docs/api/v1/twitter/search/get) - **Markdown docs:** [/docs/api/v1/twitter/search/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/search/get.mdx) - **SDK:** `client.twitter.search({ query, section?, minRetweets?, minLikes?, minReplies?, limit?, startDate?, endDate?, language?, cursor? })` - **Parameters:** `query`, `section`, `minRetweets`, `minLikes`, `minReplies`, `limit`, `startDate`, `endDate`, `language`, `cursor` - **Accepted identifiers:** none documented - **Pagination:** cursor via `cursor`, next cursor: `data.page.nextCursor`, has more: `data.page.hasMore` - **OpenAPI:** match `GET /v1/twitter/search` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.search.list` - **GET `/v1/twitter/tweets`** — Get Twitter tweet - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/twitter/tweets/get](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/get) - **Markdown docs:** [/docs/api/v1/twitter/tweets/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/get.mdx) - **SDK:** `client.twitter.getTweet({ url, trim? })` - **Parameters:** `url`, `trim` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/twitter/tweets` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.tweet.get` - **GET `/v1/twitter/communities`** — Get Twitter community - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/twitter/communities/get](https://www.socialfetch.dev/docs/api/v1/twitter/communities/get) - **Markdown docs:** [/docs/api/v1/twitter/communities/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/communities/get.mdx) - **SDK:** `client.twitter.getCommunity({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/twitter/communities` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.community.get` - **GET `/v1/twitter/communities/tweets`** — List Twitter community tweets - **Auth:** requires `x-api-key` - **Credits (from OpenAPI extension):** 1 credit base (up to 1 credits on success). See `meta.creditsCharged`. - **Human docs:** [/docs/api/v1/twitter/communities/tweets/get](https://www.socialfetch.dev/docs/api/v1/twitter/communities/tweets/get) - **Markdown docs:** [/docs/api/v1/twitter/communities/tweets/get.mdx](https://www.socialfetch.dev/docs/api/v1/twitter/communities/tweets/get.mdx) - **SDK:** `client.twitter.getCommunityTweets({ url })` - **Parameters:** `url` - **Accepted identifiers:** url (query) - **Outcome field:** `data.lookupStatus` with values `found`, `not_found` - **OpenAPI:** match `GET /v1/twitter/communities/tweets` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `twitter.community.tweets.list` ### Auth - **GET `/v1/whoami`** — Whoami - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/whoami](https://www.socialfetch.dev/docs/api/v1/whoami) - **Markdown docs:** [/docs/api/v1/whoami.mdx](https://www.socialfetch.dev/docs/api/v1/whoami.mdx) - **SDK:** `client.auth.whoami()` - **Accepted identifiers:** none documented - **OpenAPI:** match `GET /v1/whoami` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `auth.whoami` - **GET `/v1/balance`** — Get account balance - **Auth:** requires `x-api-key` - **Human docs:** [/docs/api/v1/balance](https://www.socialfetch.dev/docs/api/v1/balance) - **Markdown docs:** [/docs/api/v1/balance.mdx](https://www.socialfetch.dev/docs/api/v1/balance.mdx) - **SDK:** `client.billing.getBalance()` - **Accepted identifiers:** none documented - **OpenAPI:** match `GET /v1/balance` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `billing.balance.get` ### System - **GET `/health`** — Health check - **Auth:** no API key required - **Human docs:** [/docs/api/health/get](https://www.socialfetch.dev/docs/api/health/get) - **Markdown docs:** [/docs/api/health/get.mdx](https://www.socialfetch.dev/docs/api/health/get.mdx) - **SDK:** `client.health()` - **Accepted identifiers:** none documented - **OpenAPI:** match `GET /health` in [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json) - **operationId:** `system.health` ## Operation count - **Documented operations with on-site reference pages:** 41 - **Operations with typed SDK wrappers:** 41 - **HTTP-only documented operations:** 0