API & MCP server
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%.
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.
Create a live hushlink.me/unlock link for a text piece in a single request. Moderated automatically, non-adult only.
Plug the same endpoint into Claude Desktop, Claude Code or any MCP client and let the model build the paywall for you.
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
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"
}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.
# 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_..."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.
| Endpoint | What it does |
|---|---|
| GET / | Index and auth hint. No key needed. |
| GET /me | Account: payouts_ready, payout_setup_url, fees. |
| POST /paywalls | Three paywall variants for a piece of content. |
| POST /links | Publish a paid link (text content). Returns 201 with the URL. |
| GET /links?limit=50 | Your links with views, unlocks, revenue. |
| POST /mcp | MCP Streamable HTTP endpoint (JSON-RPC 2.0). |
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.
Create a free account, grab a key in Settings, and publish your first paid link in a minute.