One key · every network

You don't need a scheduler.
You need connections.

Connect each account once. After that, a single POST fans your video out to all of them — with per-platform receipts, retries, and scheduling built in.

REST + MCP Idempotent retries Webhooks on every result
POST /v1/publish
launch.mp4
0:08 / 0:24
"Shipping day 🚀 — watch the demo"
6 published · 1.4s
Xposting240ms
LinkedInposting310ms
Instagramposting420ms
YouTubeposting510ms
TikTokposting390ms
Blueskyposting180ms
What works right now
Publishing is the product. The rest opens lane by lane.

Available means the publishing connector is open for an eligible connected account. Comments and messages are shown separately, so a pending review never makes a live publishing lane look unfinished.

Platform Publishing · V1 Comments & replies Messages
X / Twitter Available V2 V2
LinkedIn AvailableReconnect when the provider token expires. V2 V2
TikTok AvailableContent Posting approved. Pending setup V2
Facebook Pages AvailablePage publishing approved. In review In review
Instagram In review In review In review
Threads In review V2 Not offered
Pinterest SandboxStandard access pending; immediate publishing only. Not offered Not offered
YouTube LimitedPublic-upload audit and quota need re-verification. V2 Not offered
Bluesky Available V2 Not offered
Reddit Available V2 V2
Discord Available V2 V2
Email Available V2 V2
Available: open for eligible connected accounts Limited: sandbox, audit, quota, or provider constraint In review: built, awaiting provider approval and production smoke V2: later product lane, not part of the V1 publishing promise
Three kinds of builders, one publishing backend.
⚙️
Indie builders & vibe coders
Ship it this afternoon — not next quarter.

Skip the twelve OAuth reviews, token storage, and per-network publish contracts. One key, one call, done.

🤝
AI agents & automations
One safe gateway. Zero raw tokens.

Give an agent auditable posting over MCP or REST instead of raw platform credentials. Every action logged and reversible at the key.

🏢
Agencies & operator teams
Connect once. Publish everywhere.

Onboard a client's accounts in minutes, publish across every available channel, and keep receipts, logs, and limits in one place.

Use our agenda. Or build the one you actually want.

The dashboard is a ready-to-use reference client over the same durable scheduling, receipt, REST, webhook, and MCP contracts your own product can call.

Use ours

A lightweight agenda is included.

Publish now, schedule in local time, watch provider acceptance become a terminal receipt, and recover the work that actually needs attention.

Now Launch recap · X Published
Next Product demo · LinkedIn 9:00 AM
Attention Reconnect a destination Action
Build yours

The primitive stays yours.

Put Social Fanout behind your own calendar, agent, approval flow, or customer-facing product. REST and MCP return the same durable job and provider receipts as the included agenda.

# REST or fanout_publish_post over MCP
{
  "platform": "linkedin",
  "accountId": "connection_…",
  "text": "Ship from your workflow.",
  "scheduledAt": "2026-08-03T19:00:00Z"
}
# → scheduled job → terminal receipt
The people who ship with it.
★★★★★
Two lines and a POST and I'm live on a dozen networks from my own app — no SDKs, no token storage, no OAuth babysitting. I wired it in in an afternoon.
MM Mark M.
Developer
★★★★★
I got my afternoons back. The same post goes out to six networks in one call — no exporting, no re-uploading, no five-tab juggling.
SB Sarah B.
Designer
★★★★★
We launch a campaign and it's live everywhere from one call — no more copy-paste across five dashboards. The per-network receipts mean I finally know exactly what shipped.
RC Ryan C.
Marketing

From the team building and dogfooding Social Fanout, shown by role — customer stories land here as the beta grows.

The problem
Every platform is a different API.
That's the whole problem.

Shipping "post to social" sounds like a weekend feature. Then you meet twelve OAuth reviews, twelve token stores, twelve media-upload quirks, and twelve ways to fail in production.

Separate OAuth app review per platform Token storage & refresh, forever Different media/upload flow each Per-network rate limits & errors Rewrites every time an API changes
From zero to fanned-out in three steps.
1

Get your API key

Sign up free, no credit card. Your dashboard key works against the REST API and the local MCP server immediately.

$ export KEY=spk_live_…
2

Connect an account once

One redirect per platform. We store and refresh tokens server-side — your code never touches raw platform credentials.

GET /v1/connect/x → ✓ linked
3

Publish everywhere

One POST /v1/publish with one payload shape fans out to every connected target and returns per-platform receipts.

POST /v1/publish → 4/4 ✓
One payload. Every target. Real receipts.
publish.js
// One key. Every platform. One call.
const res = await fetch('https://socialfanout.com/v1/publish', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    text: 'Shipping something great today.',
    targets: ['x', 'linkedin', 'bluesky', 'instagram']
  })
});

const { results, summary } = await res.json();
// summary → { requested: 4, succeeded: 4, failed: 0 }
One request fans out. Every target reports back.

Send one POST /v1/publish with a targets array — up to 20 — and get a per-target receipt plus a roll-up summary. No loops, no five-tab juggling.

POST /v1/publish
{
  "text": "Shipping today 🚀",
  "targets": [
    "x", "linkedin",
    "bluesky", "instagram",
    "threads", "discord"
  ]
}
x.com queuing…✓ posted
linkedin queuing…✓ posted
bluesky queuing…✓ posted
instagram queuing…✓ posted
threads queuing…✓ posted
discord queuing…✓ posted
summary0/6 succeeded · 0 failed · one receipt per target
The boring, hard parts — already solved.
One contract

Write the publish once. Hit anything.

POST /v1/publish takes one payload shape — text, images, or video — the same request whether you target one network or all twelve. No platform SDK maze, no per-network rewrites.

POST /v1/publish x linkedin bluesky instagram
Receipts

Know exactly what landed.

Every publish returns a jobId and a receipt per target — so a failure tells you which network and why.

x.com 210ms
linkedin 340ms
tiktok retry
Auth

OAuth + tokens, handled.

One redirect to connect. Tokens stored and refreshed server-side — your code never holds raw credentials.

connect 🔒 stored ♻ refreshed
Agents

Agent-ready over MCP.

Point Claude or any agent at the MCP server — same key, gateway, and audit log. Zero raw tokens in the agent.

publish connect status providers
Reach

12 destination types.

One contract across every network your audience actually uses.

Instagram & Threads in review · Pinterest Trial · LinkedIn reconnect required on expiry · SMS soon
Embed it

Build it into your product — host it, or we will.

Drop the publish API and MCP server into your own app or agent and ship it as your own — no sales call, no closed waitlist. Run it on your infra or let us host it, same code, same contract.

embed-ready self-host or hosted one license GET /health → 200
Pricing
Start free. Pay when you publish for real.

Every plan includes the REST API and local MCP access. Keys provision automatically and enforce platform-type and monthly publish limits. Platform availability depends on provider approval and account permissions. X has an additional provider-cost allowance: 100 text-only X posts per UTC month are included; linked X posts use prepaid Link Packs (10 for $10).

Free
$0/mo
For testing the API.
  • 2 platform types
  • 100 publishes/month
  • REST API + local MCP
  • Dashboard logs
Get your free key
Builder
$19/mo
For vibe coders, agents & indie apps.
  • All current destination types
  • 3,000 publishes/month
  • Scheduled posts & brand labels
  • REST API + local MCP
Start with Builder
Pro
$49/mo
For apps and small teams.
  • All current destination types
  • 10,000 publishes/month
  • In-place upgrades + 7-day grace
  • Priority support
Go Pro
Scale
Custom
For platforms, agencies & high-volume agents.
  • Custom publish volume
  • Dedicated usage limits
  • Security review
  • Guided onboarding
Talk to us

Facebook and Instagram count as separate platform types. A publish is one attempted post to one destination platform. Plan-wide publish limits still apply. X is additionally limited to 100 included text-only posts per API key per UTC month; an X post containing a link uses one prepaid Link Pack credit (10 linked posts for $10). Failed provider attempts do not consume an X allowance or credit. Platform availability depends on provider approval, account permissions, app review status, and upstream API health.

The questions developers actually ask.
Do I have to hand over platform passwords or tokens?

No. You connect each account with a standard OAuth redirect. Tokens are stored encrypted and refreshed server-side. Your app and your agents never touch raw platform credentials — they only ever use your Social Fanout API key.

Can I see and control exactly what gets posted?

Yes. Nothing posts without an explicit POST /v1/publish call. Every publish returns a jobId and a per-platform receipt, and the dashboard logs every attempt with its status and provider error.

Which platforms are actually live right now?

We support twelve destination types on one contract: Instagram, X, LinkedIn, TikTok, YouTube, Facebook, Pinterest, Bluesky, Threads, Reddit, Discord, and Email (SMS via Twilio is shipping soon). We don't claim all twelve are publishing for everyone today — each goes live for your account as that provider's approval and your account's permissions allow. Facebook Page and TikTok publishing are approved, and Meta Tech Provider verification is complete. Instagram and Threads publishing are implemented and their separate provider reviews are in progress. Facebook Comments and Facebook Messages remain in independent least-privilege review lanes. The dedicated TikTok Comments app is rejected, and its Accounts API application/video still need a corrected submission. Pinterest Trial can create creator-visible Sandbox Pins, while public production Pins await Standard access. YouTube upload code and quota exist, but its OAuth scopes and branding still require configuration, verification, and an external-account upload smoke test. The dashboard shows conservative provider-level readiness; each account's scopes still need a live connection check.

REST or MCP — and can I self-host?

Both, on the same key and the same logs. Call /v1/publish from your app, or wire the local MCP server into agent clients. Production is hosted on Railway with CI deploys and a public health check, and you can run your own instance.

What counts as a "publish"?

One attempted post to one destination platform. Plans cap your monthly publish attempts and how many platform types you can target. Facebook and Instagram count as separate platform types.

Stop wiring 12 social APIs.
Ship one.

Grab a free key, connect an account, and fan your first post out to every network your audience lives on — in the next two minutes.

Free tier, no credit card Live in 2 minutes Self-hostable

Get the useful pings, not the noise.

New providers, approval milestones, AI-agent examples, and early customer notes. The list for people building on socialfanout.com as the surface expands.

Product updates only. Unsubscribe any time using the link in an email or by contacting hello@socialfanout.com.