One unified social media API for developers and AI agents
PostEverywhere's social media API lets you schedule, publish and generate captions across all top platforms, and pull analytics wherever each platform reports them, through one REST API, a typed SDK and a hosted MCP server. Skip the separate platform integrations, OAuth flows, and rate limits, and ship in an afternoon.
Get started from as little as $9 per month. $0 due today, cancel anytime.
Used by 2,831 happy customers
What customers say


“This product just WORKS, I didn’t have any issues with it and everything went smoothly so far. For us, is a no brainer, I used to manually schedule posts in hours , now I do it in a minute. Love the Claude Connector /MCP , for us it’s worth every dollar.”
Laurentiu Cotet, RomaniaView original 

“The calendar view is really nice and neatly organized. Originally there wasn’t a way to thread an X post but now there is - that was my biggest complaint but is now fixed. I was able to very easily integrate my agent into it which allows me to quickly draft and schedule dozens of posts in minutes. Super easy, great UI.”
M W, United StatesView original 

“Thanks for providing this easy to use software that saves me lots of time and therefore makes me more consistent with posting. Good value.”
Lisa, AustraliaView original - ★★★★★Customer
“This tool has truly made my content posting so much easier, I can't work without it. I can schedule my posts days in advance while working on other projects. Set it and forget it.”
Kim V., Content Creator
One integration, every network
One social media API to replace every platform integration
Each social network ships its own API, OAuth flow, and media rules, and maintaining all of them is a moving target. PostEverywhere gives you one consistent interface for all of them, so you can post everywhere at once without wiring up the Meta Graph API, TikTok Content Posting API, and YouTube Data API separately. Full reference lives in the PostEverywhere API documentation.
- A single REST endpoint.
- Publish to any of the platforms through one Bearer-token API. One request shape, one set of docs, every platform covered.
- Official platform APIs.
- Every post goes out through the platform's sanctioned API, not browser automation. Compliant, reliable, and account-safe.
- Typed SDK and MCP server.
- Install @posteverywhere/sdk for full TypeScript types, or connect any AI agent through the hosted MCP server.
Instagram
Instagram Graph API
Facebook
Meta Graph API
X
X API v2
LinkedIn
LinkedIn Marketing API
TikTok
Content Posting API
Threads
Meta Threads API
Bluesky
AT Protocol
Telegram
Telegram Bot API
Discord
Discord webhooks
YouTube
YouTube Data API v3
Pinterest
Pinterest API
WordPress
WordPress REST API
Google Business Profile
Business Profile API
Built for builders
Ship in an afternoon, not a quarter
Most of the work in a social integration is not posting, it is the plumbing: OAuth, token refresh, rate limits, retries, and media formatting for every network. PostEverywhere handles all of it so you can build an agent or product feature in hours. Create an API key on the Developers page, send it as a Bearer header, and make your first call. The quick start below shows it step by step, and the quick start guide has every request ready to copy.
- No per-platform OAuth maze.
- Connect accounts once. The API manages tokens, refresh, and re-authentication across every platform on your behalf.
- Keys you control.
- Give each integration its own key with read, write or AI permissions, limit it to specific accounts, and revoke it at any time. A new key is shown once, with a command that works as-is.
- Rate limits and retries handled.
- No posting cap from PostEverywhere. Built-in rate-limit handling and automatic retries mean one call reaches every network reliably.
API Keys
Create keys to authenticate API requests and MCP connections.
Copy your API key now - it won't be shown again
pe_live_8f3a2c19e4b75d0a96c1f2b83e7d4a5c09b6e1f7a2d8c4b3Try it now - this command works as-is
curl -H "Authorization: Bearer pe_live_8f3a2c19..." \
https://app.posteverywhere.ai/api/v1/accountsI've copied itProduction
pe_live_8f3a2c19...read, write, aiall accountsLast used: Just nowZapier
pe_live_51d07be2...read, write1 accountLast used: 2d ago
More than posting
Schedule, generate, and measure from one API
The same API that publishes also schedules, creates content, and reports results. Generate captions with the AI content generator, produce visuals with the AI image generator, and pull cross-platform numbers from analytics, all through code.
- Schedule and publish.
- Schedule a post for any time and timezone, add it to your posting queue, or publish it now. Every account gets its own result, with a status, the live link and any error.
- Generate captions and images.
- Call the API to produce platform-tailored captions and images from a prompt, then publish them in the same flow.
- Read analytics and account health.
- Fetch post metrics wherever each platform reports them, plus the health of every connected account, with a single request.
POST /api/v1/posts
{ "content": "Launch week is here",
"account_ids": [101, 102, 103, 104, 105],
"scheduled_for": "2026-10-06T09:00:00Z" }- northwind.coffeedoneviews 1,204 · likes 87
- Northwind Coffeedoneimpressions 612
- northwindverifyingattempts 1
- northwindcoffeeuploadingattempts 1
- Northwind Coffeeretry_schedulednext_retry_at 09:05
One request, one result per accountExample data
Hosted MCP server
Give ChatGPT, Claude or any AI agent the same API
- Connect any AI agent.
- Add PostEverywhere to ChatGPT, Claude, Grok, Perplexity, Cursor or any other AI app that supports MCP with one address. It takes seconds.
- Ask in plain English.
- “Schedule this week's product posts to every account and tell me if any fail.” Your agent writes every post for you.
- It schedules and publishes.
- Your agent can post now, schedule for later or save a draft for you to review. Every post lands in your calendar, and scheduled posts go out on time through each network's official API.
$0 due today, cancel anytime
Choose your AI agent and connect in seconds.
Works on every Claude plan, including free. Full Claude guide
- 1
Add to Claude
One click from Claude’s connector directory.
- 2
Sign up or sign in
Takes seconds, then you’re sent straight back.
- 3
Ask Claude
“Plan and schedule my posts for next week.”
Ask your agent
See all 15 skills and prompts“Check PostEverywhere for posts that failed this week. Tell me why each one failed, then retry the ones that can go out now.”
View skill“Look at my PostEverywhere queue for the next two weeks and tell me where the gaps are. Then suggest posts to fill them.”
View skill“Connect my Bluesky account to PostEverywhere.”
View skill
MCP tools
44 MCP tools behind the same API
The hosted MCP server at mcp.posteverywhere.ai exposes the API as tools an agent can call: 44 on the full server, with the Claude and ChatGPT connectors carrying most of them. create_post publishes now, schedules for a time, or saves a draft for you to review. See the MCP server docs for every parameter.
| Group | Tools |
|---|---|
| Posts | create_postschedule_postupdate_postdelete_postget_postlist_postslist_posts_advancedbulk_create_postsget_post_resultsretry_failed_postretry_failed_postsapprove_postrequest_post_changes |
| Queue and best times | get_queueget_best_times |
| Media | upload_media_from_urlcreate_media_uploadcomplete_media_uploadlist_mediaget_mediadelete_media |
| AI | generate_imagegenerate_captionget_brand |
| Accounts | list_accountsget_accountget_account_healthcreate_connect_linkcreate_reconnect_linkconnect_credential_account |
| Insight | get_analytics_summaryget_meget_platform_rules |
| Campaigns | list_campaignscreate_campaignget_campaignupdate_campaigndelete_campaign |
| Webhooks | list_webhookscreate_webhookget_webhookupdate_webhookdelete_webhooktest_webhook |
Notes: bulk_create_posts takes up to 50 posts per call, generate_caption returns 1 to 5 captions, and create_connect_link returns a link that works for 10 minutes.
Claude Code, hostedRecommended
claude mcp add --transport http posteverywhere \
https://mcp.posteverywhere.ai \
--header "Authorization: Bearer pe_live_YOUR_KEY"Any remote MCP client
URL https://mcp.posteverywhere.ai
Header Authorization: Bearer pe_live_YOUR_KEYRun it locally
npx -y @posteverywhere/mcpLocal server in Claude Code
claude mcp add --scope user \
--env POSTEVERYWHERE_API_KEY=pe_live_YOUR_KEY \
-- posteverywhere npx -y @posteverywhere/mcp- ChatGPT
- Claude
- Claude Code
- Cursor
- Cline
- Windsurf
- and any MCP client
Webhooks
Webhooks for every post, account and approval event
Subscribe to 13 event types instead of polling, with up to 25 subscriptions per organisation. Every delivery is signed with HMAC-SHA256 in the X-PostEverywhere-Signature header, and failed deliveries are retried with exponential backoff. The webhooks guide has the full event list and signature checks in several languages.
- Know the moment a post goes live.
- post.published arrives per platform with the platform post ID, so your app can link to it straight away.
- Catch problems early.
- post.failed, post.partially_failed and account.reconnect_needed tell you what needs attention before your audience notices.
- Verify every delivery.
- Check the signature against your webhook secret, and use the event ID header to ignore duplicates.
POST https://your-app.com/hooks/posteverywhere
X-PostEverywhere-Event: post.published
X-PostEverywhere-Timestamp: 1791277204
X-PostEverywhere-Signature: sha256=4f9a1c0e7b3d...
{
"event": "post.published",
"created_at": "2026-10-06T09:00:04Z",
"data": {
"platform": "instagram",
"account_name": "northwind.coffee",
"published_at": "2026-10-06T09:00:03Z",
"platform_post_id": "18034529961"
}
}Events you can subscribe to include
post.scheduledpost.publishedpost.warningpost.partially_failedpost.failedpost.deletedpost.approval_requestedpost.approvedpost.changes_requestedaccount.disconnectedaccount.reconnect_neededmedia.uploadedmedia.deletedSDK, CLI and local MCP
An official Node.js SDK and CLI
Use the typed SDK from your own code, the CLI from your terminal or scripts, or run the MCP server on your own machine. All three use the same API key.
- Typed Node.js SDK.
npm install @posteverywhere/sdkfor a promises-based client with full TypeScript types and inline documentation.- Command-line tool.
npm install -g @posteverywhere/cli, runposteverywhere loginonce, then post and schedule from your terminal. Every command supports--json, so scripts and AI agents can drive it.- Local MCP server.
npx -y @posteverywhere/mcpruns the MCP server on your own machine with an API key, for offline or self-managed setups.
import PostEverywhere from '@posteverywhere/sdk';
const client = new PostEverywhere({
apiKey: process.env.POSTEVERYWHERE_API_KEY,
});
const post = await client.posts.create({
account_ids: [123],
content: 'Shipping today.',
scheduled_for: '2026-10-20T09:00:00Z',
});Full capability set
What you can build on the posting API
One Bearer token unlocks publishing, scheduling, media, AI generation, analytics, and webhooks across all top platforms. The table below lists what the API covers.
| Capability | What it does |
|---|---|
| One-call publishing | Send a single request and your post goes out to Instagram, TikTok, LinkedIn, Facebook, YouTube, X, Threads, Pinterest, Bluesky, Discord, Telegram, WordPress, and Google Business Profile through their official APIs.POST /posts |
| Scheduling | Schedule posts for any future time in any timezone, or publish now. Move or edit a scheduled post with one request. No cron jobs to maintain.scheduled_forPATCH /posts/{id} |
| Media upload | Upload images and video once and attach them to any post. Videos are converted to a platform-safe MP4 before they publish.POST /media/upload |
| AI caption and image generation | Generate platform-tailored captions and images from a prompt, then publish them in the same flow. Uses your plan's AI credits.POST /ai/generate-captionPOST /ai/generate-image |
| Analytics and account health | Pull post metrics and follower counts wherever each platform reports them, plus the health of every connected account.GET /analytics/summaryGET /accounts/{id}/health |
| Webhooks, campaigns, and bulk | Subscribe to delivery webhooks, group posts into campaigns, and create up to 50 posts in one bulk request.POST /posts/bulkPOST /webhooksPOST /campaigns |
import { PostEverywhere } from '@posteverywhere/sdk'
const client = new PostEverywhere({
apiKey: process.env.POSTEVERYWHERE_API_KEY,
})
const me = await client.me.get()
// Subscribe to publish events
const hook = await client.webhooks.create({
url: 'https://api.example.com/pe',
events: ['post.published', 'post.failed'],
})
// Group posts into a campaign
const campaign = await client.campaigns.create({ name: 'Q3 Launch' })
// Aggregate counters in one call
const summary = await client.analytics.summary({ period: 'week' })npm install @posteverywhere/sdkTyped resources, automatic retries, rate-limit awareQuick start and reference
Make your first social media API call in four steps
Every request goes to https://app.posteverywhere.ai/api/v1 with your key in an Authorization: Bearer header, from any language or HTTP client.
1.Create an API key.
In the dashboard, open the Developers page (under Manage in the sidebar), name the key and pick its permissions: Read, Write and/or AI. It starts with
pe_live_and is shown once, so store it somewhere safe. See authentication.2.Find your account IDs.
Call
GET /v1/accountswith the key as a Bearer header to list the social accounts you have connected.3.Create the post.
Send
POST /v1/postswithcontentand anaccount_idsarray. Addscheduled_forto publish later, or leave it out to publish now.4.Check the results.
Read
GET /v1/posts/{id}/resultsfor each platform's status and live link, retry any failed destination, or subscribe to webhooks instead of polling. The quick start guide walks through every step with copy-and-paste requests.
API endpoints, grouped by resource
Paths are relative to /api/v1. Each group links to its section of the API reference, with parameters and example responses.
- POST
/postsCreate, schedule or publish a post - GET
/postsList posts with filters and pagination - GET
/posts/{id}Get a post and its destinations - PATCH
/posts/{id}Update a scheduled or draft post - DELETE
/posts/{id}Delete a post - GET
/posts/{id}/resultsPer-platform results: status, live link, error - POST
/posts/{id}/retryRetry only the failed destinations - POST
/posts/{id}/schedulePublish a draft post - POST
/posts/bulkCreate up to 50 posts in one call - POST
/posts/retry-failedBulk retry by platform, account or time window - GET
/queueGet the posting queue - POST
/posts/{id}/approveApprove a pending post - POST
/posts/{id}/request-changesSend a pending post back with a note
- GET
/accountsList connected social accounts - GET
/accounts/{id}Get one connected account - GET
/accounts/{id}/healthPre-flight check: can_post, token state, reasons - POST
/accounts/connect-linkCreate an OAuth connect link - POST
/accounts/connect-credentialConnect a credential platform, such as a Telegram bot - POST
/accounts/{id}/reconnectReconnect an account whose token expired
- POST
/media/upload-from-urlImport a public file in one call - POST
/media/uploadStart a presigned upload for local files and video - POST
/media/{id}/completeFinalise a presigned upload - GET
/mediaList the media library - GET
/media/{id}Check a media item and its status - DELETE
/media/{id}Delete a media file
- POST
/ai/generate-captionGenerate 1 to 5 platform-tuned captions - POST
/ai/generate-imageGenerate an image from a text prompt - GET
/brandGet the workspace's brand
- GET
/campaignsList campaigns - POST
/campaignsCreate a campaign - GET
/campaigns/{id}Get a campaign - PATCH
/campaigns/{id}Update a campaign - DELETE
/campaigns/{id}Delete a campaign (its posts stay)
- GET
/webhooksList webhook subscriptions - POST
/webhooksSubscribe (the secret is returned once) - GET
/webhooks/{id}Get a subscription - PATCH
/webhooks/{id}Update the URL, events or active state - DELETE
/webhooks/{id}Delete a subscription - POST
/webhooks/{id}/testSend a signed test delivery
- GET
/analytics/summaryAggregate counters by period - GET
/best-timesBest weekday and hour slots to post - GET
/platform-rulesPer-platform composer limits and rules - GET
/meKey context: organisation, plan, quota, scopes
- POST
/auth/deviceStart a device login - POST
/auth/device/tokenPoll a device login to mint an API key - POST
/auth/social-connect/startStart a headless OAuth connect session - GET
/auth/social-connect/poll/{session_id}Poll a connect session - POST
/auth/social-connect/blueskyConnect Bluesky headlessly - POST
/auth/social-connect/discordConnect a Discord channel headlessly - POST
/auth/social-connect/telegramConnect a Telegram channel headlessly
Developer resources
- API documentationGuides, concepts and platform notes
- API referenceEvery endpoint, parameter and response
- AuthenticationAPI keys, scopes and errors
- WebhooksEvents, signing and retries
- Rate limitsLimits, 429s and bulk costs
- Node.js SDK@posteverywhere/sdk setup
- CLI@posteverywhere/cli commands
- MCP serverHosted and local MCP setup
- ChangelogWhat changed in the API, and when
- OpenAPI specopenapi.json, generated from the live API
- SKILL.mdHow AI agents should use PostEverywhere
- SDK on GitHubSource for @posteverywhere/sdk
- MCP server on GitHubSource for @posteverywhere/mcp
Limits
API rate limits
The same limits apply on every plan. Use bulk endpoints and webhooks to stay well inside them; the rate limits guide covers 429 handling and backoff.
| Limit | Detail |
|---|---|
| Posting limits | None from PostEverywhere on any plan; each platform enforces its own. |
| Publishing | Unlimited posts on every plan. Each platform enforces its own limits, and PostEverywhere works within them. |
| Bulk create | Up to 50 posts per POST /posts/bulk call. Each row succeeds or fails on its own. |
| Webhooks | Up to 25 webhook subscriptions per organisation. Deliveries to your URL are signed and retried. |
| When you hit a limit | The API returns 429 with X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and Retry-After headers, so your code knows exactly how long to wait. |
No-code and low-code automation
Works with n8n, Make, Zapier, Airtable, Retool, Postman and Bubble
If your tool can send an HTTP request, it can publish through the PostEverywhere API. We do not ship a native app in these marketplaces: each one uses the tool's own generic HTTP block to POST to https://app.posteverywhere.ai/api/v1/posts with a Bearer header, which is why setup takes minutes and does not break when a marketplace listing goes stale. For an agent-driven workflow, see how to connect PostEverywhere to n8n.
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
-H "Authorization: Bearer pe_live_your_key" \
-d '{
"content": "Launching our new feature today!",
"account_ids": [1, 2, 3],
"scheduled_for": "2026-10-06T09:00:00Z"
}'REST API
50 endpoints
Webhooks
15 event types
SDK + CLI
Node.js, npm
MCP server
Any AI agent
n8n: HTTP Request node. Set the method to POST, the URL to the posts endpoint, and add the Authorization header. Chain it after any trigger you already run.
Make: HTTP module. Use "Make a request", POST, and add the Authorization header under Headers. Map the caption straight from an earlier module.
Zapier: Webhooks by Zapier. Choose the Custom Request action, POST, and paste the header in. Any Zapier trigger can then publish a post.
Airtable: Run script automation. A fetch() call in an automation script turns a row into a scheduled post, so a content table becomes a publishing queue.
Retool: REST API resource. Add the base URL once as a resource with a Bearer header, and every query in the app can publish.
Postman: Collection. Set the Bearer token at collection level and every request inherits it, which is the fastest way to try the API before writing code.
Bubble: API Connector plugin. Add the endpoint as an API call with a Bearer header, then trigger it from any workflow.
Anything else: Any HTTP client. If a tool can send a POST request with a Bearer header, it can publish through the API.
Why teams build on the PostEverywhere API
Social media API pricing: one unified API from $9/mo, maintained for you
Wiring up social platforms yourself means a different integration for every network, each with its own auth, review process, and rate limits. PostEverywhere replaces all of it with one integration, and our roundup of the best social media APIs explains how the options compare.
Write three caption options for Friday's launch, make an image for each, and schedule them for 9am.
Called the PostEverywhere API
- POST
/ai/generate-caption3 captions - POST
/ai/generate-image×3default model, 4:5 - POST
/posts/bulk3 posts scheduled
Done. Three posts are scheduled for Friday at 9:00 AM, each with its own image. They are in your PostEverywhere calendar if you want to change anything.
One integration, not eight. Skip separate builds for Instagram, TikTok, LinkedIn, YouTube, Facebook, X, Threads and Bluesky. Bluesky is the exception that proves the rule: the AT Protocol needs no approval at all, but it cannot schedule.
Moving from another provider. Our guides on migrating from the Buffer API and the PostEverywhere API vs the Hootsuite API walk through the move. Moving from another API? See how the main social media APIs compare.
Give software agency over your channels. Connect an AI agent through the MCP server, or use the REST API and SDK to build a social media agent that drafts, schedules, and publishes on its own. Self-hosted agents work the same way: OpenClaw calls the API through the PostEverywhere skills, as in the run shown here, and a personal agent such as Meta Muse can connect as a custom connector or build one from our OpenAPI file. Schedule Pinterest pins by API alongside every other network in the same queue.
The same engine as the product. Because the API drives the same engine as the rest of PostEverywhere, you also get cross-posting, multi-account management, and automation without extra work. The developer docs have the full endpoint reference, SDK, and webhook setup.
$0 due today, cancel anytime
Social media API FAQ
Social media API: your questions answered
Direct answers about the PostEverywhere social media API: platforms, pricing, limits, webhooks, approvals and AI agents.
What is a social media API?
A social media API lets software publish, schedule and read social media content without anyone clicking through each app. PostEverywhere's social media API is one REST API for all top platforms, so you integrate once instead of building a separate connection to Instagram, TikTok, LinkedIn, YouTube and the rest. It handles OAuth, token refresh, rate limits, retries and per-platform formatting for you.
Which platforms does the PostEverywhere API support?
All top platforms: Instagram, TikTok, LinkedIn, YouTube, Facebook, X (Twitter), Threads, Pinterest, Bluesky, Discord, Telegram, WordPress and Google Business Profile. Every post goes out through the platform's official API, and the platform list on this page shows which API each one uses. Facebook posts go to Pages, Instagram needs a Professional account, and Telegram works with channels, groups and supergroups where the bot is an admin.
What can you post through the social media API?
Text, images, video, carousels, X threads and first comments. Each post carries one video at most; carousels take up to 10 images on Instagram, 1 to 35 photos on TikTok and 2 to 5 images as a Pinterest carousel pin, and LinkedIn takes PDF document posts. Add a first comment with settings.firstComment on Instagram, Facebook, X, Threads and LinkedIn, and post to an X Community with platform_content.x.settings.community_id. Not supported: Instagram collab, location or product tags, LinkedIn polls and articles, Facebook Stories, and comment replies or DMs.
How much does the social media API cost?
API access is included on every plan, starting with Lite at $9/mo, and there is no separate API fee. Lite already includes API keys and the hosted MCP server; higher plans add connected accounts, AI credits and seats. There is no free plan: every plan starts with a 7-day trial, and a card is required.
Can I see a log of my API calls?
Yes. Every call made with an API key, including MCP tool calls from Claude, ChatGPT and Cursor, is listed on the Logs page in the dashboard with its status, duration, who made it and any error. Every response carries an X-Request-Id header that matches the log entry. Logs are kept for 30 days on every plan, with secrets redacted.
What are the rate limits?
There’s no posting cap from PostEverywhere on any plan. Each platform enforces its own limits, and very fast bursts of requests can be rate limited for a moment: the API returns 429 with a Retry-After header. Exact figures for developers are in the [rate limits reference](/docs/rate-limits). Publishing to each platform has built-in retry and rate-limit handling, so a single call reaches every network reliably.
How does authentication work?
Your own code sends an API key as a Bearer header. An owner or admin creates keys on the Developers page, gives each one read, write or AI permissions, limits it to specific accounts and can revoke it at any time. AI agents such as ChatGPT and Claude connect to the hosted MCP server by signing in to PostEverywhere and approving access, so no key is pasted into a chat.
Which webhook events can I subscribe to?
There are 13 event types: 6 for posts, 2 for accounts, 2 for media and 3 for approvals, including post.published, post.failed, post.partially_failed and account.reconnect_needed. Every delivery is signed with HMAC-SHA256 in the X-PostEverywhere-Signature header, and failed deliveries are retried with exponential backoff. Each organisation can have up to 25 webhook subscriptions.
How do I get an API key?
Open the Developers page in the PostEverywhere dashboard (under Manage in the sidebar) and create a key: name it, choose its permissions (Read, Write and/or AI) and copy it. It starts with pe_live_ and is shown only once, so store it securely. Revoke it from the same page at any time.
What happens if a post fails on one platform?
Each platform publishes independently. If Instagram succeeds but TikTok fails, for example because a token expired, GET /v1/posts/{id}/results shows exactly which destinations succeeded and which failed. POST /v1/posts/{id}/retry retries only the failed destinations, and POST /v1/posts/retry-failed retries failures in bulk by platform, account or time window.
What does /me return?
GET /v1/me returns the API key's context in one call: the organisation, the plan, current quota usage, the scopes granted to the key and feature flags. SDKs use it to configure themselves without hardcoded IDs, and white-label tools use it to show plan-aware options.
Is there a sandbox or test mode?
There is no separate sandbox. To test safely, connect accounts you use only for testing, or schedule posts far in the future, inspect them through the API and delete them before they publish. Any key can be revoked instantly from the Developers page.
Can I build a white-label scheduler or publish from my CMS?
Yes. The API handles platform authentication, media processing and publishing while you build the interface, so agencies and SaaS builders can offer scheduling under their own brand. To publish from a CMS or blog, call POST /v1/posts when your CMS publishes (or use an RSS-to-post workflow in n8n or Zapier), and subscribe to post.published webhooks to close the loop.
Can I create posts in bulk?
Yes. One bulk API call creates up to 50 posts. If you would rather use a spreadsheet, Bulk Upload in the app takes a .csv file of up to 200 posts.
Is there an SDK or npm package?
Yes. Install @posteverywhere/sdk for a fully typed Node client with promises and inline documentation. You can also call the REST API directly with a single Bearer token from any language, or run the MCP server locally with npx -y @posteverywhere/mcp.
Is there a command-line tool?
Yes. Install @posteverywhere/cli with npm install -g @posteverywhere/cli to post and schedule across all top platforms from your terminal. Run posteverywhere login once, connect your accounts, and publish. Every command also supports --json output, so the same CLI works as a tool for AI agents like Claude Code and Cursor.
Can I upload media from a URL?
Yes. POST /v1/media/upload-from-url fetches a public file for you. Images (JPEG, PNG, GIF, WebP, HEIC and HEIF) up to 25 MB are ready straight away; MP4 video up to 4 GB imports in the background, so you check the media item until it is ready. Imported media counts toward your storage.
Can I approve posts through the API?
Yes. POST /v1/posts/{id}/approve approves a pending post, and POST /v1/posts/{id}/request-changes sends it back with a note the author sees. Posts created with an API key skip approval by default; to send one for review, create it with draft: true and request_approval: true. GET /v1/queue and GET /v1/posts?approval=pending list what is waiting. The MCP server can read the queue but cannot approve posts or request changes.
Should an AI agent use the API or the MCP server?
Use the MCP server when an AI agent such as ChatGPT, Claude or Cursor does the work in a conversation: it connects once, sees the tools and calls them in plain language, with nothing to install. Use the REST API or SDK when your own code, a backend job or a no-code tool such as n8n publishes. Both work on the same account and the same posts; see what an agent can do through our MCP server.
Can the API tell me the best time to post?
Yes. GET /v1/best-times returns the best weekday and hour slots for one account, several accounts (one combined pick) or a whole platform, in the time zone you ask for. Each slot says what it is based on: the account's own posts, what works across PostEverywhere on that platform, or general guidance. next_best is the soonest good slot at least 30 minutes ahead, so pass its next.iso as scheduled_for when you create the post. Through MCP, create_post and schedule_post take schedule_at: "best_time" to do this in one step.
Can I delete a published post through the API?
Deleting a published post removes it from PostEverywhere only; it stays live on the platform. The exception is X: add ?delete_on_platforms=x to the delete request and the live X post is deleted too.
Does PostEverywhere have a native Zapier or n8n app?
Not today. Every automation tool connects through its own generic HTTP block (the n8n HTTP Request node, the Make HTTP module, Webhooks by Zapier, an Airtable script, a Retool REST resource, a Postman collection or the Bubble API Connector) against the REST API. It is one POST request with a Bearer header, so setup takes minutes and nothing needs installing.
How is this different from using each platform's API directly?
Each platform has its own API, OAuth flow, token refresh cycle, rate limits, and media rules. Building and maintaining all of them is weeks of work that keeps breaking as platforms change. PostEverywhere gives you one integration that handles OAuth, token refresh, rate limiting, retries, and per-platform formatting behind a single consistent interface.
Does it use official platform APIs or browser automation?
Official platform APIs only, including the Meta Graph API, TikTok Content Posting API, and YouTube Data API. There is no fragile browser automation or unofficial scraping, which means reliable delivery and accounts that stay in good standing.
Still have questions?
Contact us or browse the full FAQ.
$0 due today, cancel anytime
Start building on the PostEverywhere API
API access on every plan from $9/month. 7-day trial, cancel anytime.
Related Features & Resources
Explore related features and guides to get the most out of PostEverywhere.
AI Agents & MCP
Connect Claude, ChatGPT, or Cursor via MCP.
Cross-Posting
Publish to all platforms at once.
Social Media Automation
Automate posting and workflows.
AI Content Generator
Generate captions via API.
Analytics
Pull cross-platform metrics by API.
Best Social Media APIs
How the API options compare.
Build a Social Media Agent
Ship an agent on the API.
PostEverywhere vs Hootsuite API
API-to-API comparison.
Ayrshare Alternatives
Moving from another posting API.
Pricing
API access included on every plan.
