HushLink API and MCP server

API & MCP server

A paywall in one call. From your code, your agent, or Claude.

Send a piece of content, get three ready-made paywalls back, publish the one you like as a paid link. Buyers pay once, you get paid out through Stripe. 0% on your first $100 in sales, then 9%.

Read the quickstart

Generate paywalls

One piece of text, a file name or an image in. Three variants out: direct, curiosity, premium. Each with a title, teaser, price and button.

Publish paid links

Create a live hushlink.me/unlock link for a text piece in a single request. Moderated automatically, non-adult only.

Works as an MCP server

Plug the same endpoint into Claude Desktop, Claude Code or any MCP client and let the model build the paywall for you.

1. Get a key

Sign in, open Settings and create a key under API & MCP. The key starts with hl_live_ and is shown once. Send it as a bearer token on every request.

Authorization: Bearer hl_live_...

Base URL: https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1

2. Generate three paywalls

Pass the content itself. Up to about 6,000 characters are read. Optional: a title, a file name, a public image URL, and a content type (text, document, video, audio, image).

curl -X POST https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/paywalls \
  -H "Authorization: Bearer hl_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Cold email templates that got replies",
    "content_text": "Template 1: ...\n\nTemplate 2: ...",
    "content_type": "text"
  }'

Response:

{
  "unsuitable": false,
  "reason": null,
  "variants": [
    {
      "style": "direct",
      "title": "12 cold email templates with real reply rates",
      "teaser": "The exact emails, subject lines and follow-ups. Copy, adapt, send.",
      "price": 9,
      "price_reason": "Short, practical, ready to use",
      "cta_text": "unlock",
      "button_color": "sky"
    },
    { "style": "curiosity", ... },
    { "style": "premium", ... }
  ],
  "model": "claude-opus-5-5"
}

3. Publish the paid link

Take the variant you like and create the link. content_text is what the buyer unlocks: plain text (blank line between paragraphs) or HTML. Text content only through the API for now; files go through the app.

curl -X POST https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/links \
  -H "Authorization: Bearer hl_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "12 cold email templates with real reply rates",
    "teaser": "The exact emails, subject lines and follow-ups. Copy, adapt, send.",
    "price": 9,
    "content_text": "Template 1: ...\n\nTemplate 2: ...",
    "cta_text": "unlock",
    "button_color": "sky",
    "paywall_style": "direct"
  }'

Response (201):

{
  "id": "…",
  "url": "https://hushlink.me/unlock/…",
  "title": "12 cold email templates with real reply rates",
  "teaser": "…",
  "price": 9,
  "currency": "usd",
  "content_type": "text",
  "views": 0,
  "unlocks": 0,
  "revenue": 0,
  "moderation_status": "approved",
  "created_at": "2026-10-28T…",
  "payouts_ready": false,
  "payout_setup_url": "https://hushlink.me/app/wallet",
  "note": "The link is live, but buyers cannot pay until payout setup is finished at payout_setup_url."
}

Content is screened automatically. Adult or explicit content is rejected with a 422 and the link is not published.

4. Check the account and list links

# payouts_ready, payout_setup_url, fees
curl https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/me -H "Authorization: Bearer hl_live_..."

# your links with views, unlocks and revenue (limit up to 200)
curl "https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/links?limit=50" -H "Authorization: Bearer hl_live_..."

Use it as an MCP server

The same endpoint speaks the Model Context Protocol (Streamable HTTP, stateless). Point your MCP client at it with your key as the bearer token and the model gets four tools: generate_paywalls, create_paid_link, list_links and get_account.

Claude Code

claude mcp add --transport http hushlink https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/mcp \
  --header "Authorization: Bearer hl_live_..."

Claude Desktop, Cursor and other clients (JSON config)

{
  "mcpServers": {
    "hushlink": {
      "type": "http",
      "url": "https://oqsxzfynpckxsamvkwnk.supabase.co/functions/v1/api-v1/mcp",
      "headers": { "Authorization": "Bearer hl_live_..." }
    }
  }
}

Then ask: “Turn this post into a paid link, show me the three options first.” The model calls generate_paywalls, you pick one, it calls create_paid_link and hands you the URL.

Reference

EndpointWhat it does
GET /Index and auth hint. No key needed.
GET /meAccount: payouts_ready, payout_setup_url, fees.
POST /paywallsThree paywall variants for a piece of content.
POST /linksPublish a paid link (text content). Returns 201 with the URL.
GET /links?limit=50Your links with views, unlocks, revenue.
POST /mcpMCP Streamable HTTP endpoint (JSON-RPC 2.0).

Limits

  • title: 120 characters, teaser: 300 characters
  • price: USD, minimum 0.99
  • content_text: up to 200,000 characters
  • Up to 10 active keys per account, revoke any time in Settings

Errors

  • 401: missing, unknown or revoked key
  • 400: validation (the message says which field)
  • 422: content rejected by moderation
  • 429: generator busy, retry in a moment

Fees: 0% on your first $100 in sales, then 9%, plus standard Stripe card processing (~2.9% + $0.30 per sale). No subscriptions. See the help center for the full terms.

Ready to build?

Create a free account, grab a key in Settings, and publish your first paid link in a minute.