> ## Documentation Index
> Fetch the complete documentation index at: https://docs.influship.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What's New

> Recent changes and updates to the Influship API

<Update label="October 2026" tags={["Improvement"]}>
  ## Runnable creator discovery examples

  The [cookbook](/cookbook) now includes a complete [Next.js creator search app](/cookbook/creator-search-nextjs), [campaign comparison](/cookbook/compare-creators), and [CSV export](/cookbook/export-shortlist-csv). The shortlist, lookalike and existing-list scoring recipes include complete bounded CLI workflows, expected output, costs and recovery guidance.

  The [creator research app](/cookbook/creator-research-app) adds evidence review and saved API shortlists with no dependency installation. Download its [v1.1.0 source archive](https://github.com/Influship/influship-examples/releases/tag/v1.1.0).

  Fork the MIT example code from [Influship examples](https://github.com/Influship/influship-examples) or download the reviewed [v1.0.0 source archives](https://github.com/Influship/influship-examples/releases/tag/v1.0.0). Each recipe links its source, the [TypeScript SDK guide](/sdks), relevant API contracts and related workflows.
</Update>

<Update label="September 2026" tags={["Improvement"]}>
  ## Durable media URLs from GET /v1/posts

  `GET /v1/posts` now returns durable hosted image URLs for `media.url`, `media.thumbnail_url`, and `carousel_items[].thumbnail_url` whenever a hosted copy is available. Previously these were platform links that expire within days. When no hosted copy exists, you still get the platform URL, which expires, so download it promptly. The response shape is unchanged.

  Live and raw endpoints under `/v1/raw/` are unchanged: they return fresh platform URLs on each request.
</Update>

<Update label="September 2026" tags={["Fix"]}>
  ## Live-data errors and ingest quota updates

  Live and raw Instagram, YouTube, and TikTok endpoints now return `503 service_unavailable` in the standard error envelope whenever live data is temporarily unavailable. Previously some of these cases surfaced as a generic `500 internal_error` or a non-standard body. Retry `503` responses with bounded backoff, honoring `Retry-After` when present; you are not charged for them. See [Error Handling](/guides/error-handling).

  `POST /v1/creators/ingest` no longer consumes your daily ingest quota when the handle does not exist (`404`) or cannot be validated right now (`503`). A slot is only used once the request is accepted. See [Ingest Creators On Demand](/guides/ingest-creators-on-demand).
</Update>

<Update label="September 2026" tags={["Improvement"]}>
  ## Breaking raw Instagram profile contract update

  `GET /v1/raw/instagram/profile/{username}` no longer returns `highlight_reel_count`, `is_business`, or `is_professional`. Remove reads of these properties from your integration.

  `media_count` is required but nullable. Handle `null` as an unavailable lifetime total; `0` means an observed empty profile. Do not substitute the number of returned posts for the lifetime total. Cached Instagram profiles and TikTok responses are unchanged.

  This changes the existing `/v1` response contract. Update response validators and null handling before consuming the new response. See [SDK guidance](/sdks) for client examples.
</Update>

<Update label="August 2026" tags={["Feature"]}>
  ## YouTube discovery, pagination, and video details

  YouTube search now supports upload-date, popularity, content-type, duration, country, and language filters. Responses include an opaque `next_cursor`; pass it back as `cursor` to fetch another page. Search costs 0.5 credits per fetched page, independent of the number of results returned.

  Two new endpoints expand topic discovery and validation:

  * `GET /v1/raw/youtube/typeahead` returns localized query suggestions
  * `GET /v1/raw/youtube/video/{video_id}` returns fresh views, likes, comments, duration, tags, and exact publication data when available

  Channel lookup now accepts handles, channel IDs, and full channel URLs. The same six YouTube workflows are available as MCP tools. See [YouTube Live Data](/guides/youtube-live-data) for examples and pricing.
</Update>

<Update label="July 2026" tags={["Fix"]}>
  ## Search evidence fields in TypeScript

  Generated TypeScript types now include the documented `confidence`, `low_confidence`, and structured `evidence` fields on search matches. Structured evidence stays in the same order as the plain-text `reasons` list.
</Update>

<Update label="July 2026" tags={["Fix"]}>
  ## Automatic recovery for raw Instagram requests

  Raw Instagram profile, post, and transcript requests now recover automatically from temporary source-platform interruptions. Confirmed missing posts, missing profiles, and private profiles continue to return their documented errors.

  Batch post and transcript requests now stop when your request expires or disconnects. Batch results remain in the same order as the requested shortcodes.
</Update>

<Update label="July 2026" tags={["Fix"]}>
  ## Raw Instagram post & transcript reliability

  Fixed errors affecting Instagram post lookups and video transcripts after a source-platform change. Individual post lookup, batch post lookup, and transcript endpoints now return consistent response shapes across the REST API, MCP tools, and no-code actors.

  Temporary source-platform failures now return retryable `429`/`503` responses with `Retry-After` instead of a generic `500`. Use the same backoff as other live-data requests — see [Error Handling](/guides/error-handling).

  Affected endpoints:

  * `GET /v1/raw/instagram/post/{shortcode}`
  * `POST /v1/raw/instagram/posts`
  * `GET /v1/raw/instagram/transcript/{shortcode}`
  * `POST /v1/raw/instagram/transcripts`
</Update>

<Update label="May 2026" tags={["Feature"]}>
  ## Raw Instagram post lookup and transcripts

  You can now look up an individual Instagram post by shortcode and fetch video transcripts directly from the raw API. These endpoints return fresh raw post data, including fields that are not guaranteed on cached post-list responses, such as coauthors, paid partnership flags, tagged users, product mentions, display resources, video versions, music attribution, and location data.

  Available endpoints:

  * `GET /v1/raw/instagram/post/{shortcode}` for one post
  * `POST /v1/raw/instagram/posts` for up to 20 posts in one request
  * `GET /v1/raw/instagram/transcript/{shortcode}` for one video post transcript
  * `POST /v1/raw/instagram/transcripts` for up to 10 video post transcripts in one request

  Transcript responses include the post lookup payload on cache misses. Cached transcript responses omit `post`; call the post lookup endpoint separately when you need post metadata alongside a cached transcript.

  We've also added two Apify actors for no-code and workflow use cases:

  * Instagram Post Lookup
  * Instagram Post Transcripts

  Both actors use your Influship API key and mirror the raw API response shapes.
</Update>

<Update label="May 2026" tags={["Feature"]}>
  ## MCP Server

  The Influship MCP server launched at `mcp.influship.com/mcp` with eight typed tools. Connect any [Model Context Protocol](https://modelcontextprotocol.io)-compatible client, including Claude Desktop, Claude Code, Cursor, Windsurf, ChatGPT Connectors, and VS Code. The [MCP Server guide](/guides/mcp-server) lists the current tools for each endpoint.

  ```bash theme={null}
  claude mcp add influship --transport http https://mcp.influship.com/mcp --header "X-API-Key: YOUR_KEY"
  ```

  Or paste the JSON config into your client's MCP settings panel:

  ```json theme={null}
  {
    "mcpServers": {
      "influship": {
        "url": "https://mcp.influship.com/mcp",
        "headers": { "X-API-Key": "YOUR_KEY" }
      }
    }
  }
  ```

  Auth, billing, and rate limits are all the same as the REST API — same key, same tier, same dashboard. There's no separate "MCP plan" to set up.

  See the [MCP Server guide](/guides/mcp-server) for the full setup walkthrough and the [tool reference](/api-reference) (each REST endpoint with an MCP equivalent now shows the corresponding tool name).
</Update>

<Update label="May 2026" tags={["Feature"]}>
  ## Pay per request with x402 (no API key needed)

  Anonymous AI agents can now call supported paid Influship endpoints via the [x402 payment protocol](https://www.x402.org). The agent makes a request without an `X-API-Key`, gets a `402 Payment Required` response with a USDC-on-Base price, signs a payment, and retries without signup or billing setup.

  ```typescript theme={null}
  import { x402Client, wrapFetchWithPayment } from '@x402/fetch';
  import { registerExactEvmScheme } from '@x402/evm/exact/client';
  import { privateKeyToAccount } from 'viem/accounts';

  const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
  const client = new x402Client();
  registerExactEvmScheme(client, { signer });

  const fetchWithPayment = wrapFetchWithPayment(fetch, client);
  const response = await fetchWithPayment('https://api.influship.com/v1/search', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: 'fitness creators in NYC', limit: 25 }),
  });
  ```

  Influship endpoints are listed in the [x402 Bazaar](https://docs.cdp.coinbase.com/x402/bazaar) for programmatic discovery. See the [x402 guide](/guides/x402) for pricing and quickstart with [AgentCash](https://agentcash.dev) or the Coinbase SDK.
</Update>

<Update label="May 2026" tags={["Feature"]}>
  ## Pay with MPP (Stripe cards or USDC on Tempo)

  The [Machine Payments Protocol](https://mpp.dev/overview) — Stripe and Tempo's open standard for HTTP-native machine-to-machine payments — coexists with x402 on the same endpoints. Pay per request via Stripe SPT (Shared Payment Tokens, USD via card) or USDC on Tempo. Pick whichever rail your client supports; the API accepts both.

  ```typescript theme={null}
  import { Mppx, tempo } from 'mppx/client';
  import { privateKeyToAccount } from 'viem/accounts';

  const account = privateKeyToAccount(process.env.TEMPO_PRIVATE_KEY as `0x${string}`);

  const mppx = Mppx.create({
    methods: [tempo({ account })],
  });

  const response = await mppx.fetch('https://api.influship.com/v1/search', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: 'fitness creators in NYC', limit: 25 }),
  });
  ```

  See the [MPP guide](/guides/mpp) for both rails. Same pricing as x402.
</Update>

<Update label="March 2026" tags={["Feature"]}>
  ## Weighted lookalike seeds

  Lookalike search now accepts up to 10 seeds with individual weights (0-1). Higher weights make the API lean more heavily on that seed's characteristics when ranking results.

  This is particularly useful when you have campaign performance data — weight your best performers higher and the API finds more creators who skew toward that profile.

  ```json theme={null}
  {
    "seeds": [
      { "platform": "instagram", "username": "top_performer", "weight": 1.0 },
      { "platform": "instagram", "username": "decent_creator", "weight": 0.5 }
    ],
    "limit": 25
  }
  ```

  See [Lookalikes](/concepts/lookalikes) for weighting strategies.
</Update>

<Update label="March 2026" tags={["Improvement"]}>
  ## Search fees and usage headers

  Search billing separates the base fee from the per-creator delivery fee. Response headers report credit usage and remaining rate-limit budgets.
</Update>

<Update label="February 2026" tags={["Feature"]}>
  ## Campaign match endpoint

  `POST /v1/creators/match` scores creators against a campaign brief. Each result includes a decision (`good`, `neutral`, or `avoid`), a numeric score, and human-readable reasoning.

  The `intent.query` field (500 chars) describes the campaign. The optional `intent.context` field (2,000 chars) adds background — target demographics, content format preferences, brand guidelines.

  See [Match Reasons](/concepts/match-reasons) for how to interpret the output.
</Update>

<Update label="February 2026" tags={["Improvement"]}>
  ## Credit-based rate limiting with trust tiers

  Rate limits are now enforced using credit budgets instead of simple request counts. Heavier endpoints consume more budget than lighter ones. Trust tiers increase your limits based on lifetime spend — and never downgrade.

  See [Rate Limits & Tiers](/concepts/quotas-and-limits) for the full tier table.
</Update>

<Update label="February 2026" tags={["Feature"]}>
  ## TypeScript SDK

  The official TypeScript SDK is available on npm. It provides typed methods, request/response models, and error classes like `RateLimitError` and `APIError`.

  ```bash theme={null}
  npm install influship
  ```

  See the [SDK guide](/sdks) for setup and common operations.
</Update>

<Update label="January 2026" tags={["Feature"]}>
  ## Stripe usage billing

  API usage is now billed through Stripe with automatic invoice generation. Credits accumulate until your trust tier's billing threshold is reached, then an invoice is created. Payment upgrades your tier and increases rate limits.

  See [Pricing](/concepts/pricing) for credit costs and [Rate Limits & Tiers](/concepts/quotas-and-limits) for threshold details.
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.