The social media API for products and AI agents.One request, twenty networks.
Breakreach is a social media API to publish and schedule posts on Instagram, TikTok, X, LinkedIn, YouTube and 15 more networks, with a hosted MCP server for AI agents, billed from $5 a month per connected account.
northbeam.coffee
northbeam.coffee Meet Morning Light, our new blend. Out tomorrow.
Post to every network with one API callThree steps, about five minutes.
- app.breakreach.com/northbeam/settings?tab=apiSettingsGeneralAccountsScheduleTeamBillingAPI & MCPAPI & MCP
Connect AI agents and automations to Breakreach. Included on every plan.
API keysCreate keyCopy this key now: it won't be shown again.
br_7c1e9a40d25f83b6e0a4c917d2b85f3e61a09c4d7e2b58f1br_7c1e9a40d...Never used
Connect AI agents and automations to Breakreach. Included on every plan.
Copy this key now: it won't be shown again.
br_7c1e9a40d25f83b6e0a4c917d2b85f3e61a09c4d7e2b58f1br_7c1e9a40d...Never usedEvery request carries your key as Authorization: Bearer br_…. A key belongs to your user, so it reaches every workspace you are a member of: pass workspace with a slug to pick one, or leave it out to use your first workspace. Keys don't expire; you revoke one by deleting it in the same settings tab.
Call the API from a server or a script. The key is a secret, and the API doesn't answer browser requests from other websites. Success responses are JSON with status 200, errors are { "error": "…" } with a 4xx or 5xx status.
SDKs and a command lineTyped, and safe to retry.
npm install breakreach gives TypeScript and Node a typed method per endpoint, and the breakreach command to post from a terminal, a CI job or an agent's shell. Both are generated from the OpenAPI spec, and retry timeouts and restarts with one Idempotency-Key per call, so a retry never posts twice.
What the API supports on each networkChecked against the publishing code, not a feature list.
| Network | What a post can carry | Options in the request | What you can read back |
|---|---|---|---|
| 1 photo, 1 video published as a Reel, or a carousel of 2 to 10 photos and videos. Media required | Stories through MCP | Post metrics, comments, DMs | |
| 1 video (caption up to 2,200 characters), or a photo post of up to 35 images. Media required | tiktokSettings: privacy (private unless set), comments, duet, stitch | Public video stats | |
| Text, with up to 4 images, 1 GIF or 1 video | None | Post metrics, replies, DMs | |
| Text with 1 image or 1 MP4 video, or 2 to 20 images as a carousel (a PDF, one page per image); a PDF URL posts as a document | None | Not yet | |
| 1 video, titled from the first line, public | Title and privacy through MCP | Channel stats, video performance | |
| Text, up to 10 photos or 1 video | None | Post metrics, comments, Messenger | |
| Text, 1 image or 1 video | None | Post metrics, comments | |
| 1 image or 1 MP4/MOV video (an image sent with it is the cover), title from the first line. Media required | pinterestBoardId (required), pinterestLink | Account stats | |
| Text up to 300 characters, with up to 10 images or 1 video | None | Post metrics, account stats | |
| Text post (first line is the title), or a link post to your image | redditSubreddit, redditFlairText | Post metrics (no views), account stats | |
| Text, or 1 photo or video with a caption | None | Account stats | |
| Text with up to 4 images | None | None | |
| Text with up to 10 JPG, PNG or GIF photos; a video or WebP goes in as a link | None | None | |
| Text (500 characters on most servers) with up to 4 photos or 1 video, public | None | Post metrics (no views), account stats | |
| A post titled from the first line, as editor blocks; first photo is the featured image, more photos and a video follow the text | None | None | |
| A post titled from the first line; first photo is the feature image, more photos and a video follow the text | articleSettings: tags, canonicalUrl, asDraft, newsletter and emailSegment | Members count | |
| An article titled from the first line, Markdown body; first photo is the cover, more photos follow. No video | articleSettings: tags (4), canonicalUrl, asDraft, aiDisclosure | Article views, reactions, comments; followers | |
| An article titled from the first line, Markdown body; first photo is the cover, more photos follow. No video | articleSettings: tags (15), canonicalUrl, asDraft | Post views, reactions, comments; followers | |
| Text, with up to 30 photos or 1 video above it | articleSettings: tags, asDraft | Likes and reblogs (no views); followers | |
| An update: text up to 1,500 characters with 1 photo (converted to JPEG); no video, no events or offers | googleBusinessSettings: button (BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP or CALL), buttonUrl | Reviews and star ratings; no post metrics |
Media goes in as public URLs. Instagram, TikTok, Pinterest and YouTube need at least one photo or video; the other networks also take text alone. The type is read from the file extension (.jpg, .png, .webp, .gif, .mp4, .mov, .webm), so a link without one is skipped. POST /v1/media copies any public URL to Breakreach storage and returns a permanent link with the right extension, which is the safe path for files behind expiring or signed URLs, and POST /v1/media/upload takes a file from your disk (multipart, up to 100 MB). Photos are converted on the way out where a network insists: JPEG for Instagram and TikTok, recompressed under 2 MB for Bluesky.
Text is yours to size. Bluesky is cut at 300 characters, a Pinterest description at 800, a TikTok video caption at 2,200, and Reddit and Pinterest take the first line as the title. X, LinkedIn, Instagram, Threads and Facebook get your text as sent, so keep X at 280 characters yourself or the network refuses the post.
No developer app to registerThe reviews are done. You connect accounts and post.
Posting through each network's own API means registering a developer app per network, passing its review and paying where access is paid. Meta reviews every permission separately, TikTok keeps unaudited apps on private-only posting, and X charges for API access. With Breakreach, accounts connect through our apps, which went through those reviews: Meta approved our permissions for comments, insights and messages in September 2026, and TikTok approved our Content Posting API audit the same month, so TikTok posts can go out public.
- Instagram, Facebook and ThreadsSign in with Meta. Instagram needs a professional account, Facebook posts to Pages.
- TikTok, YouTube, LinkedIn, X, Pinterest, Reddit, BlueskyEach owner signs in once in the dashboard. No keys or developer accounts on your side.
- LinkedIn tokens last about 60 daysLinkedIn gives no refresh to self-serve apps. GET /v1/accounts returns a warning 14 days before one lapses, so you can ask for a reconnect in time.
- Telegram and DiscordTelegram: add our bot as an admin of your channel. Discord: paste a channel webhook URL.
- Slack, Mastodon and WordPressSlack: add our app and pick the channel. Mastodon: type the server, approve there. WordPress: type the site, approve in wp-admin, which creates an application password.
- Ghost, Dev.to, Hashnode and TumblrGhost: the site and the Admin API key of a custom integration. Dev.to: an API key from its settings. Hashnode: a personal access token, for blogs on Hashnode Pro. Tumblr: approve Breakreach on Tumblr, then pick the blogs.
- Google Business ProfileSign in with Google and tick the locations to connect, each one an account. Google gates its Business Profile APIs behind an access approval; ours is done.
Each network's own API, explainedAccess, review, limits and price, from each network's docs.
EndpointsAll 38 operations of /v1.
Posts
- POST
/v1/postsSchedule, publish now, take the next free slot or save a draft, on one or many accounts - GET
/v1/postsYour posts with status, time, metrics and errors - PATCH
/v1/posts/:idEdit a post, schedule a draft, retry a failed post or move it back to drafts - DELETE
/v1/posts/:idUnschedule and remove from Breakreach (never from the network) - GET
/v1/posts/:id/metricsViews, likes, comments and shares for one post
Media and scheduling
- POST
/v1/mediaCopy a public media URL to Breakreach storage - POST
/v1/media/uploadUpload a local file (multipart, up to 100 MB) - GET
/v1/next-slotThe next free slot of the workspace posting schedule - GET
/v1/pinterest-boardsBoards to pin to
Workspaces and accounts
- GET
/v1/workspacesWorkspaces with their slug and timezone - POST
/v1/workspacesCreate a workspace, one per customer or brand - GET
/v1/accountsConnected accounts, with a warning before one expires - POST
/v1/connect-linksA hosted page where your user connects their own accounts - GET
/v1/connect-links/:idA link's status and the accounts connected through it - DELETE
/v1/connect-links/:idRevoke a link; connected accounts stay - GET
/v1/accounts/statsFollowers and 28-day stats per account - GET
/v1/accounts/trendsDaily account insights for Facebook, Instagram and Threads
Analytics
- GET
/v1/analyticsTotals and top posts across your Breakreach posts - GET
/v1/performanceEvery post on an account, including ones not made with Breakreach - GET
/v1/post-insightsAll metrics, breakdowns and retention for one post
Comments and DMs
- GET
/v1/commentsRecent comments across Instagram, Facebook, Threads and X, and Google reviews - GET
/v1/posts/:id/commentsLive comments on one of your posts - POST
/v1/comments/replyReply to a comment or a Google review - DELETE
/v1/comments/:commentIdDelete a comment (Instagram, Facebook), or your reply to a Google review - GET
/v1/inboxDM conversations on Instagram, Facebook and X - GET
/v1/inbox/:conversationId/messagesMessages of one conversation - POST
/v1/inbox/:conversationId/messagesSend a reply
Comment to DM (Instagram)
- GET
/v1/comment-dm-rulesKeyword rules with their stats - POST
/v1/comment-dm-rulesDM everyone who comments a keyword on a post, or on every post - PATCH
/v1/comment-dm-rules/:idChange a rule or pause it - DELETE
/v1/comment-dm-rules/:idDelete a rule and its activity - GET
/v1/comment-dm-rules/:id/eventsWho commented, and whether the DM went out - GET
/v1/comment-dm-rules/mediaThe account's latest posts, to pick one
DM automations (Instagram, Messenger)
- GET
/v1/dm-automationsFlows with their stats and ref links - POST
/v1/dm-automationsAnswer keyword DMs, story mentions or ref links with a flow - PATCH
/v1/dm-automations/:idChange the trigger or the steps, or pause - DELETE
/v1/dm-automations/:idDelete a flow and its runs - GET
/v1/dm-automations/:id/runsWho went through it, each step, how it ended
The full contract, with every parameter, is the OpenAPI 3.1 spec. It is public, so you can feed it to a client generator or to your coding agent. Lists take a limit (up to 100 posts per call) and there is no cursor pagination yet.
Scheduling, retries and errorsServer-side, so your script can exit.
A post takes one of three times. scheduledAt is read in the workspace timezone when it has no offset, and a Z or an offset is honoured. useNextSlot takes the next free slot of your posting schedule (weekdays at 11:00 and 16:00 until you change it). publishNow sends it at once. A time in the past publishes immediately.
Temporary failures, like a rate limit, a timeout or a 5xx from the network, are retried up to 3 times, 5, 10 and 15 minutes later, and only on the accounts that failed. Anything else marks the post failed and puts the network's answer in error, prefixed with the account id. A post that went out on some accounts and not others ends published, with the failures listed.
PATCH /v1/posts/:id edits a draft, scheduled or failed post, and giving it a time retries a failed one. To repeat a request safely, send an Idempotency-Key header with any POST: the same key and body within 24 hours return the first response, marked Idempotent-Replayed: true, instead of a second post. The same key with another body answers 422, and 409 while the first request still runs. Errors aren't kept, so a fixed request can reuse its key.

- northbeam.coffeeWaiting
- Northbeam CoffeeWaiting
- northbeamWaiting
One post, three accounts. X answered 429 and was retried alone.
WebhooksKnow when a post is out, without polling.
Add an HTTPS endpoint in Settings, API & MCP, per workspace. Breakreach sends post.published when a post went out on at least one account, post.failed when it went out nowhere, and account.connected when an account joins the workspace, from the dashboard or a connect link. Comment to DM adds three: comment_dm.sent after each DM, comment_dm.failed when Instagram refuses one, and comment.received for every comment on an account with a rule (see the Comment to DM API). DM automations add five: dm_automation.started, dm_automation.handoff, dm_automation.finished, dm_automation.failed and message.received (see the DM automations API). Each call is signed: X-Breakreach-Signature is sha256= followed by the HMAC-SHA256 of the raw body with your signing secret.
Each event is sent once, with a 10-second timeout and no retry, so answer quickly and reconcile with GET /v1/posts if your endpoint was down. Webhooks come with the Developer, Pro and Agency plans.
A social media MCP server for Claude, ChatGPT and CursorThe same actions, for agents.
The MCP server at https://api.breakreach.com/mcp exposes 33 tools. Clients sign in with OAuth 2.1 and dynamic client registration, so a person approves access once and never handles a key; a server-side agent can pass an API key as a Bearer token instead. Breakreach is listed in Claude's connector directory and ChatGPT's plugin directory, so your users add it in a few clicks, without pasting a URL or a key.
MCP still goes a little further than REST: Instagram posts can go out as Stories, YouTube videos take a title and a privacy, and comments can be hidden or deleted.
The Breakreach skill teaches Claude Code, Codex, Cursor and OpenClaw how to post well with it: account ids first, times in the workspace timezone, the media each network needs, and an idempotency key on every post. Install it with npx skills add breakreach/breakreach.
Publish
- create_post
- update_post
- delete_post
- list_posts
- upload_media
- get_next_slot
- list_pinterest_boards
Accounts
- list_workspaces
- create_workspace
- list_accounts
- create_connect_link
- get_account_stats
- get_account_trends
Analytics
- get_analytics
- get_post_metrics
- get_content_performance
- get_post_insights
Comments and DMs
- get_post_comments
- list_recent_comments
- reply_to_comment
- hide_comment
- delete_comment
- list_conversations
- get_conversation_messages
- send_message
Comment to DM
- list_comment_dm_rules
- create_comment_dm_rule
- update_comment_dm_rule
- delete_comment_dm_rule
DM automations
- list_dm_automations
- create_dm_automation
- update_dm_automation
- delete_dm_automation
Pricing: pay per connected accountNot per post, not per call.
Billed monthly on the accounts connected across your workspaces. Connect or remove accounts whenever you like.
About $4.6 per account on average.
- Accounts 1 to 20$5 per account per month20 × $5 =
- Accounts 21 to 100$3 per account per month5 × $3 =
- Account 101 and up$2 per account per monthNot reached
The Developer plan is billed monthly on the accounts connected across the workspaces you own, with graduated tiers: 25 accounts cost 20 × $5 + 5 × $3, so $115. It holds up to 100 workspaces, one per client or product, and includes the MCP server and webhooks. There is no trial and no free account: you can connect an account before paying, and publishing starts with the plan.
The API also comes with every regular plan, from Starter at $29 a month for 5 accounts. Those plans add the calendar, the inbox, team seats and the built-in assistant, and fit better when people schedule by hand as well. On price alone, Zernio costs less per account at every count, and Outstand bills per post instead. Our comparison of social media APIs runs the numbers.
What developers build with it
- AI agents that postAn agent writes, picks the time and calls create_post, then reads the numbers back with get_post_metrics.
- Publishing from your own productA release, a new listing or a blog post triggers one POST /v1/posts to your brand's accounts.
- Agencies and internal toolsOne workspace per client, one key for all of them, with reports built on /v1/performance.
- Automationsn8n, Make or a cron job call the API with an HTTP node, and a webhook closes the loop.
Building a product where your users connect their own accounts: create a workspace per customer with POST /v1/workspaces, then a link with POST /v1/connect-links, and send it to them. They pick their networks on a hosted page, without a Breakreach login, and come back to your redirectUrl; the account.connectedwebhook tells you when it's done. The networks' consent screens name Breakreach, whose reviewed apps the accounts connect through.
Social media API questions, answered.
What developers ask before their first call.
A social media API lets your code publish posts, read analytics and answer comments on social networks without opening each app. Every network has its own API, with its own review process and rules. A unified API like Breakreach puts twenty of them behind one key and one request shape.
Not on Breakreach. The Developer plan costs $5 a month per connected account up to 20, $3 up to 100, then $2, never per post or per call. You can connect an account before paying, and publishing starts with the plan. Buffer's free plan includes its API on 3 channels, and Zernio's first 2 accounts are free.
Yes. POST /v1/posts takes a list of accountIds, so one request schedules the same post on every account you list. Instagram, TikTok, Pinterest and YouTube need a photo or a video in media; X, LinkedIn, Facebook, Threads, Bluesky, Reddit, Telegram, Discord, Slack, Mastodon, WordPress, Ghost, Dev.to, Hashnode, Tumblr and Google Business Profile also take text alone.
No. Accounts connect through Breakreach's own apps, already reviewed by each network: Meta approved our permissions for comments, insights and messages in September 2026, and TikTok approved our Content Posting API audit the same month, so TikTok posts can go out public. You never apply for API access, pay for an X API plan or wait for an app review.
Yes. Pass scheduledAt (read in the workspace timezone unless it carries an offset), set useNextSlot to take the next free slot of your posting schedule, or set publishNow. Scheduled posts publish from Breakreach's servers, so your script can exit right after the call.
Yes. POST /v1/posts with "draft": true saves the post for review in Breakreach without scheduling it, so a deploy or a CMS can propose a post and a person approves it. It needs no publish time and no media yet; a scheduledAt places it on the calendar. It goes out once someone schedules it in the app, or your code calls PATCH /v1/posts/:id with scheduledAt, useNextSlot or publishNow.
Temporary failures (rate limits, timeouts, 5xx) are retried up to 3 times, 5, 10 and 15 minutes later, only for the accounts that failed. Anything else marks the post failed with the network's error in the error field, and fires a post.failed webhook. A post that went out on some accounts but not others is published, with the failures listed in error.
Yes. Every POST takes an Idempotency-Key header, any unique string such as a UUID. Send the same key with the same body again within 24 hours and you get the first response back, marked Idempotent-Replayed: true, instead of a second post, DM or workspace. The same key with a different body answers 422, and 409 while the first request is still running. Errors aren't kept, so a fixed request can reuse its key. MCP create_post takes the same thing as an idempotencyKey argument.
Yes. Create a workspace per customer with POST /v1/workspaces, then POST /v1/connect-links for that workspace, and send your user the link. They pick their networks on a hosted page, without a Breakreach login, approve each connection on the network, and come back to your redirectUrl with the connected platforms in the query. The account.connected webhook fires for each account. The networks' consent screens name Breakreach, since accounts connect through Breakreach's reviewed apps. Links expire after 24 hours by default, up to 7 days, and can be revoked.
Yes, at https://api.breakreach.com/mcp, with 33 tools for posts, media, scheduling, accounts, analytics, comments, DMs, Instagram Comment to DM and DM automations. It signs in with OAuth 2.1 (dynamic client registration) or takes an API key as a Bearer token, and it is listed in Claude's connector directory and ChatGPT's plugin directory.
Yes: npm install breakreach for TypeScript and Node, with the breakreach command line. Both are generated from the OpenAPI 3.1 spec at https://api.breakreach.com/v1/openapi.json, with a typed method per endpoint, and retry with an Idempotency-Key so a retry never posts twice. Call them from a server: keys are secret, and the API doesn't accept browser requests from other sites.
Monthly, on the number of accounts connected across the workspaces you own, with graduated tiers: 25 accounts cost 20 × $5 + 5 × $3 = $115. The count is synced every few hours and a change applies to the next invoice. API access is also included on every regular Breakreach plan, from Starter at $29 a month.
Your first post is one call away.From $5 a month per account.
Billed per connected account. Cancel anytime.