Stop building a token-management product.
Launch provider authorization from one connection flow and keep credentials behind the publishing boundary.
Social publishing API · REST + MCP
One API key. One publishing contract. One receipt per eligible connected destination. We handle provider OAuth, token refresh, media paths, retries, and normalized outcomes—so your app or agent can ship the feature.
First Free key: 7 days across every currently available publishing destination, up to 300 publishes. Then 2 platform types and 100 attempts monthly. No auto-charge.
The solved problem
Every provider has its own authorization, media rules, error shapes, rate limits, and review process. We turn that integration tax into one bounded contract.
Launch provider authorization from one connection flow and keep credentials behind the publishing boundary.
Fan out to as many as 20 connected targets while preserving provider-specific detail where it matters.
Every target returns its own success or failure result. Durable jobs, posts, logs, and provider receipts stay visible.
The local MCP gateway exposes health, connections, providers, publishing, and receipt lookup through an API-key boundary.
Five-minute proof
The guided setup gives you an API key, walks through provider connections, and lets you verify the exact request before a live post.
dryRun true for the first check.
dryRun and keep the idempotency key.
# after connecting Bluesky and X
curl https://socialfanout.com/v1/publish \
-H "x-api-key: $SOCIAL_FANOUT_KEY" \
-H "content-type: application/json" \
-H "idempotency-key: launch-check-001" \
-d '{
"text": "Shipping today.",
"targets": ["bluesky", "twitter"],
"dryRun": true
}'
Bare target names resolve through stored connections. You can also pass target objects to pin an account, Page, Board, subreddit, or provider-specific setting. A fan-out call accepts up to 20 targets.
Launch the local stdio MCP server with your Social Fanout key. It calls the hosted REST API underneath; it is not a hosted remote MCP endpoint.
fanout_health
fanout_list_providers
fanout_list_connections
fanout_publish_post
fanout_get_job
Publishing V1 truth
This is a publishing matrix. Comments, replies, and messages are separate provider scopes and are never used to make a publishing destination look more complete than it is.
| Destination | Publishing V1 | Current boundary |
|---|---|---|
| X | Available | 100 text-only X posts per API key monthly; link-bearing posts use prepaid Link Packs. |
| Limited | Member and Page publishing remain non-sellable until the app migration, Standard Tier approval, and an ordinary-customer receipt are verified. | |
| TikTok | Available | Content Posting is approved; comments are a separate review lane. |
| Facebook Pages | Available | Page publishing is approved; comments and messages are separate scopes. |
| Bluesky | Available | Native publishing through a connected account. |
| Available | Publishing is bounded by the authorized account and target community. | |
| Discord | Available | Publishing through a configured, authorized destination. |
| Available | Email delivery is exposed as a destination in the same publishing contract. | |
| In review | Standalone Instagram Publishing remains provider-review gated. | |
| Threads | In review | Unlocks only after provider approval and production verification. |
| Sandbox | Trial writes create creator-visible Sandbox Pins; Standard access is pending. | |
| YouTube | Limited | Upload code and quota exist; OAuth configuration, verification, and an external-account smoke test remain. |
Availability depends on provider approval, requested scopes, account permissions, and upstream API health. Pending destinations do not enter the live publishing lane until approval and production verification are complete.
Receipts, not promises
A request being accepted is not the same as a provider publishing it. Social Fanout keeps those states distinct.
Idempotency collapses a client retry into the first response instead of quietly duplicating the request.
One failed provider does not erase the truth about the targets that succeeded. Each result remains explicit.
Jobs, posts, logs, and provider receipts give your team or agent somewhere concrete to inspect and recover.
Prove it before you buy it
No cold-sales loop and no card wall. Build the proof, inspect the receipts, then decide whether the working lane belongs in production.
$0 no card
No automatic charge. Keep the Free key after the trial.
$5.99 / month
Founder price stays locked while the subscription remains active. X link-bearing posts use separate Link Pack credits.
Developer FAQ
Yes. POST /v1/publish accepts up to 20 targets and
returns a result for every target plus requested, succeeded, and
failed counts. Each target must be connected and available for
publishing.
Yes. The REST API and MCP tools are the product contract. The dashboard agenda and Post Flight Deck are optional reference clients for review, scheduling, receipts, and recovery.
No. It is a local stdio gateway launched by your agent client. It uses your Social Fanout API key to call the hosted REST API.
No. In review, Sandbox, and Limited are distinct statuses. Pending destinations unlock only after provider approval and a production verification pass.
Each API key includes 100 text-only X posts per UTC month. X posts containing links use prepaid Link Packs: 10 linked posts for $10. Failed provider calls do not consume the allowance or a credit.
Ship the proof
Start free, connect two destinations, and validate the exact contract your app or agent will use. If it saves the months we think it will, keep Builder for $5.99 a month while your Ride or Die subscription stays active.