Social media APIs for posting and scheduling
One authenticated endpoint publishes to LinkedIn, X, Facebook, Instagram, Threads, Bluesky and YouTube Shorts. PostMCP owns the OAuth flows, media upload handshakes and per-network quirks so your code sends text, a media URL and a time.
Pick your platform API
Each reference covers the endpoints, OAuth scopes, media pipeline, published limits and error codes for that network — plus copy-paste samples in cURL, JavaScript, Python and MCP.

LinkedIn API
One authenticated POST publishes to a LinkedIn profile or company page. PostMCP owns the OAuth dance, the image upload handshake and the versioned LinkedIn REST calls underneath.
"linkedin"Reference
X (Twitter) API
Send one request and PostMCP handles Twitter API v2 for you — PKCE OAuth, the three-step chunked media upload, refresh tokens and the final tweet call.
"twitter"Reference
Facebook API
Publish text and photo posts to every Facebook Page you manage from one endpoint. PostMCP resolves page access tokens and calls Graph API v26.0 for you.
"facebook"Reference
Instagram API
Instagram publishing is a two-phase asynchronous flow. PostMCP creates the media container, polls it to FINISHED and publishes it — you send a caption and a media URL.
"instagram"Reference
Threads API
Threads processes every post asynchronously, even plain text. PostMCP creates the container, polls it to FINISHED and publishes — one call from your side.
"threads"Reference
Bluesky API
Bluesky is not OAuth — it is a session against an AT Protocol server. PostMCP refreshes that session, uploads image blobs and writes the feed record for you.
"bluesky"Reference
YouTube Shorts API
YouTube is the one network here that will not take a URL. It wants the video bytes over a resumable session — PostMCP fetches, uploads and publishes them for you.
"youtube"ReferenceThe same body works everywhere
Add values to the platforms array and the engine fans the broadcast out in parallel, translating each one into that network’s native call — a versioned LinkedIn share, a chunked X media upload, a Graph API photo post, an Instagram container poll, a Threads publish, an AT Protocol record write.
- Per-platform status recorded on every post, so partial failures are visible.
- Media fetched once and re-uploaded in the format each network expects.
- Credentials encrypted in the user vault, never returned to your client.
- Scheduling, editing and force-publishing available on all seven networks.
curl -X POST "https://api.postmcpai.com/api/tools/create_post" \
-H "Content-Type: application/json" \
-H "x-api-key: $POSTMCPAI_API_KEY" \
-d '{
"content": "One request. Seven networks.",
"platforms": ["linkedin", "twitter", "facebook", "instagram", "threads", "bluesky", "youtube"],
"publishImmediately": true
}'Seven operations, all networks
Every operation is a POST against https://api.postmcpai.com and is available both as a REST endpoint and as an MCP tool.
| Operation | Endpoint | What it does |
|---|---|---|
| preflight_post | POST/api/tools/preflight_post | Dry-run copy against limits, targets and credits before publishing. |
| create_post | POST/api/tools/create_post | Schedule a post or broadcast it immediately. |
| publish_post_now | POST/api/tools/publish_post_now | Force a queued post out ahead of its slot, or retry the profiles that failed. |
| list_posts | POST/api/tools/list_posts | Read the queue — scheduled, published, draft and failed — with counts. |
| get_post | POST/api/tools/get_post | Read one post, with per-profile delivery state and live URLs. |
| get_post_analytics | POST/api/tools/get_post_analytics | Read how a post did: views, likes, comments and shares per profile. |
| get_profile_analytics | POST/api/tools/get_profile_analytics | Read a profile’s followers, post count and views from its network. |
| update_post | POST/api/tools/update_post | Edit copy, targets, schedule or status before publication. |
| reschedule_post | POST/api/tools/reschedule_post | Move a post to another slot, keeping its copy and targets. |
| reset_stuck_post | POST/api/tools/reset_stuck_post | Release a post left stuck mid-publish so it can be retried. |
| delete_post | POST/api/tools/delete_post | Remove a scheduled or draft post from the queue. |
| get_connected_accounts | POST/api/tools/get_connected_accounts | List connected profiles, handles and page IDs per platform. |
| get_account_health | POST/api/tools/get_account_health | Find connections whose token expired or is about to. |
| generate_image | POST/api/tools/generate_image | Generate a post image and get back a hosted URL for mediaUrl. |
| list_workspaces | POST/api/tools/list_workspaces | List the workspaces on this key, with the id to scope other calls to. |
| get_user_info | POST/api/tools/get_user_info | Read plan tier and credit balance. |
API key auth
Send x-api-key, an Authorization bearer token, or an apikey query parameter.
Encrypted vault
Network tokens are encrypted server-side and never returned to your client.
MCP native
The same operations are MCP tools for Claude Desktop, Cursor and custom agents.
Social media API questions
What is a social media API?
A social media API lets your code publish and manage content on a network without a person clicking through the interface. Each network exposes its own — LinkedIn REST, Twitter API v2, Meta Graph API, AT Protocol — with its own auth model, media pipeline and limits. PostMCP puts one request shape in front of all six.
Can one API post to every platform at once?
Yes. Pass several values in the platforms array of a single create_post call and the engine broadcasts to each connected account, recording a per-platform status so a partial failure is visible rather than silent.
Do I need a developer account on each network?
No. PostMCP holds the app registrations and approved products for LinkedIn, X, Facebook, Instagram and Threads. You connect an account through a hosted OAuth flow, and Bluesky connects with a handle and app password.
How do I schedule posts through the API?
Set publishImmediately to false and supply scheduleDate as YYYY-MM-DD and scheduleTime as HH:MM. The post sits in the queue and stays editable, reschedulable and deletable until the engine broadcasts it.
How is the API authenticated?
Every request carries a PostMCP API key, sent as an x-api-key header, an Authorization bearer token, or an apikey query parameter on the MCP transport. Network credentials stay encrypted in the user vault and are never returned to your client.
Can AI agents call these APIs?
Yes. The same seven operations are exposed as Model Context Protocol tools, so Claude Desktop, Cursor and any MCP client can publish directly. A REST and OpenAPI surface covers ChatGPT Custom GPT Actions and plain webhooks.
One API key. Every network.
Connect your accounts, take a key and publish your first cross-network post in under five minutes.
