Ship from your code. Same flow, programmatic.
Every dashboard action is a REST endpoint. Publishing, scheduling, accounts, analytics, webhooks. A first-party TypeScript SDK. An MCP server for Claude Desktop, Cursor, and ChatGPT. Scoped API keys per workspace so nothing leaks.
Three lines of code. Three platforms scheduled.
Real shape of a publish call: pick a workspace, pass a caption and platforms, get back a post id and per-platform delivery status. Same call from TypeScript, PHP, or curl.
/v1/postsimport { FoPost } from '@owlstackapp/sdk';
const client = new FoPost({ apiKey: process.env.OWLSTACK_API_KEY });
const accounts = await client.accounts.list({ workspaceId });
const post = await client.posts.create({
workspaceId,
status: 'scheduled',
scheduleAt: '2026-09-01T09:00:00Z',
content: [{ text: 'Stop launching on Tuesday.', position: 0 }],
accounts: accounts.map((a) => ({ id: a.id })),
});pst_01H7K3MRGB8YZ4QVWYou wrote the Twitter integration. Then LinkedIn changed everything.
You shipped Twitter publishing in a weekend. Then LinkedIn took three days, the OAuth flow took a week, Instagram has the worst API in the world, and you have not even started TikTok.
Every platform breaks differently on the same day. Bluesky's rate limit changes. Threads adds a media-type restriction. Hashnode switches GraphQL versions. Your integration is on fire and you are shipping product.
You hand-rolled OAuth for 5 platforms. You store refresh tokens in your DB. Now you are responsible for token refresh, encrypted storage, and SOC 2-style key handling. Not the business you wanted to be in.
Is the API for you?
For you if
- You're building a product that needs to publish to social on behalf of your users
- You run a content-ops pipeline that fires from CI, a CRM, or your own backend
- You want to wire FoPost into Claude Desktop, Cursor, or ChatGPT via MCP and let the agent publish for you
- You're an agency tool builder who wants to expose social publishing to your own clients without managing 30 platform integrations
Not for you if
- You only post by hand from the dashboard. The API is overkill, the composer is the right surface.
- You need full white-label API hosting (your-brand.api.com). Talk to us about an enterprise arrangement.
One API. 29 platforms. We own the breakage.
You write to one schema. We fan it out to 29 platforms, refresh the tokens, handle the rate limits, deliver the post, and surface the errors. You ship the feature.
Clean, predictable REST
Predictable resources (posts, accounts, workspaces, deliveries, webhooks). One consistent request and response shape across every endpoint, versioned under /v1.
TypeScript SDK, plus a standalone PHP library
TypeScript (npm install @owlstackapp/sdk) wraps this REST API. PHP (composer require owlstack/owlstack-core, MIT-licensed) is standalone: it publishes direct to 11 platforms with your own credentials, no FoPost account.
MCP server for AI assistants
npx -y @owlstackapp/mcp connects your FoPost workspace to Claude Desktop, Cursor, ChatGPT, and any MCP-compatible agent. 14 tools available: publish, schedule, analytics, account management. Auth via API key.
Scoped keys per workspace
Per-workspace keys with action scopes: posts, accounts, workspaces, labels, publish, deliveries, webhooks, analytics, automations. JWT for UI, API keys for code. No agency-wide super-key.
Outgoing webhooks for every event
Subscribe to publish.success, publish.failed, account.disconnected, account.reconnected, automation.triggered, and more. Every payload is signed so you can verify it came from us, and failed deliveries retry with exponential backoff.
Rate limits sized for real work
The limit sits well above what a publishing integration needs on every plan, and Business gets a higher ceiling for teams automating at agency volume. Go over it and you get a clean 429 with a Retry-After to back off on, not a silent drop or a suspended key.
Generate. Install. Publish.
Generate an API key
In the workspace you want to publish from, create an API key with the scopes you need (posts and accounts is enough to start). Copy it once. Treat it like a secret.
Install the SDK
npm install @owlstackapp/sdk. Or skip the SDK and hit the REST endpoints directly. Or skip both and use the MCP server from Claude.
Make the call
Three lines: import, instantiate, create. The publish call returns a post id and per-platform delivery status. The post lands in your dashboard's queue, ships at the scheduled time.
Subscribe to webhooks (optional)
Add a webhook URL in workspace settings. Subscribe to publish.success and publish.failed. Your endpoint gets a signed POST when each delivery lands or fails. Now your system stays in sync.
Why this beats hand-rolling 30 platform integrations.
Three ways developers approach multi-platform publishing today. Only one of them is a real API with SDKs, an MCP server, and someone else owning the breakage.
DIY: 30 platform APIs yourself
What technical founders attempt
- OAuth flow per platform. Token storage. Token refresh. Encrypted secret handling.
- Different rate limit, different error shape, different media constraints per platform.
- When LinkedIn changes its API, you change your code. Same for Bluesky, Threads, Hashnode.
- You stop adding platforms after Twitter and LinkedIn. The other 29 stay on the wishlist.
Buffer or Hootsuite API
What incumbents ship
- Public API exists but feels like an afterthought. SDKs are community-maintained, sometimes.
- No MCP server. Hooking it into Claude or Cursor is a custom integration.
- Per-seat pricing makes the API a cost center for agencies.
FoPost API + SDKs + MCP
What you actually want
- One REST schema covers 29 platforms, and the browser extension covers Substack, which has no write API.
- TypeScript SDK maintained by us, plus an MIT PHP library.
- MCP server ships today: npx -y @owlstackapp/mcp into Claude Desktop, Cursor, ChatGPT.
- Per-workspace scoped keys, signed webhooks, retries built in. We own the breakage.
Publishes to all major networks
Frequently asked questions
Is the API available on every plan?
Where is the API reference?
Are the SDKs paid?
What about MCP for Claude, Cursor, and ChatGPT?
How do API key scopes work?
What rate limits should I plan for?
Do you sign webhook payloads?
Ready to try rest api & sdks?
7-day free trial. 30 platforms. Unlimited posts on every plan.