Skip to main content
Multi Post Social

Developers

Multi Post Social API Documentation: Posts, Channels, Analytics, Webhooks

Updated · Multi Post Social guide

The Multi Post Social API gives your code the same abilities as the dashboard: list channels, create drafts, schedule posts, upload media, read analytics and receive webhooks when something happens. It is a plain REST API with JSON bodies, API keys per workspace and rate limits that scale with the plan. An MCP server exposes the same actions to AI agents. This page is the reference; the developers page covers use cases and the integrations guide covers no-code connections.

Overview and base URL

All requests go to the versioned base URL below over HTTPS. Request and response bodies are JSON. Times are ISO 8601 strings in UTC. Lists are paginated with a cursor. Every response includes a request id header you can quote to support.

Base URL (planned):  https://api.multipostsocial.com/v1
Content-Type:        application/json
Pagination:          ?limit=50&cursor=<next_cursor from the previous response>

The API mirrors the product’s data model: a workspace has channels; a post belongs to one channel and shares a group id with its sibling versions created in the same composer session; ideas live on the Create board; analytics are read per channel and per post.

Authentication

Create an API key in Settings under API keys. Keys are scoped to one workspace and shown once; only the prefix is stored afterwards. Send the key in the Authorization header. Keys can be revoked at any time, and each key has a label so you can tell Zapier from your own script in the activity log.

Authorization: Bearer mps_live_7f3a...        # one key per integration
X-Workspace: ws_01h...                        # optional when a key spans several workspaces (Agency plans)

Never put a key in client-side code or a public repository. Use environment variables, and rotate a key you suspect has leaked from the same settings screen. The security guide explains how keys and sessions are protected.

Endpoints

Core endpoints
Method and pathPurposeNotes
GET /channelsList connected channels with network, handle, status and posting scheduleRead-only; connecting a channel requires the network login in the dashboard
GET /postsList posts filtered by status, channel, date range or group idCursor paginated
POST /postsCreate a draft, queue a post, or schedule itOne request per channel, or pass several channel_ids to create a group
GET /posts/{id}Read one post with status, slot time and stats
PATCH /posts/{id}Edit text, media, time or statusPublished posts are read-only
DELETE /posts/{id}Remove a draft or scheduled postPublished posts cannot be deleted through the API
POST /mediaUpload an image or video and get a media idMultipart; limits per network are validated at post time
GET /analytics/overviewTotals and rates for a date range across channelsHistory depends on the plan
GET /analytics/postsPer-post impressions, reach, engagement and clicks
GET /analytics/best-timesHeat map values per channelNeeds two weeks of published posts
GET /ideas and POST /ideasRead and add ideas on the Create board
GET, POST, DELETE /webhooksManage webhook endpointsEssentials plan and above

Request and response examples

Create a post for two channels and add it to each channel’s queue:

POST /v1/posts
{
  "channel_ids": ["ch_instagram_01", "ch_linkedin_01"],
  "text": "Three small changes that made our Monday planning shorter.",
  "overrides": {
    "ch_linkedin_01": { "text": "Three changes that made our Monday planning 20 minutes shorter. Details below." }
  },
  "media_ids": ["med_9a1"],
  "first_comment": "#contentplanning #smallbusiness",
  "tags": ["Tips"],
  "action": "queue"              // "queue" | "schedule" | "now" | "draft"
}

201 Created
{
  "group_id": "grp_7k2",
  "posts": [
    { "id": "post_a1", "channel_id": "ch_instagram_01", "status": "queued", "scheduled_at": "2026-11-03T09:00:00Z" },
    { "id": "post_a2", "channel_id": "ch_linkedin_01",  "status": "queued", "scheduled_at": "2026-11-03T08:00:00Z" }
  ]
}

Read analytics for the last 30 days:

GET /v1/analytics/overview?from=2026-10-01&to=2026-10-31

200 OK
{
  "range": { "from": "2026-10-01", "to": "2026-10-31" },
  "totals": { "posts": 42, "impressions": 184320, "reach": 149100, "engagements": 6210, "clicks": 2890 },
  "engagement_rate": 3.37,
  "by_channel": [ { "channel_id": "ch_instagram_01", "impressions": 98400, "engagement_rate": 4.1 } ]
}

Errors

HTTP status codes and error codes
StatusCodeMeaningWhat to do
400validation_errorA field is missing or over a network limitRead errors[].field and errors[].message
401unauthorizedMissing or revoked keyCreate a new key in Settings
403forbiddenThe key’s role cannot do this (for example publish without approval)Ask an admin to change the role or approval setting
404not_foundNo such post, channel or media in this workspaceCheck the id and the workspace header
409channel_disconnectedThe channel needs a reconnect in the dashboardReconnect, then retry
422network_rejectedThe network refused the post (format, policy, duplicate)Read the network message in details
429rate_limitedToo many requests for the planWait for Retry-After seconds
5xxserver_errorSomething failed on our sideRetry with backoff; quote the request id to support
{
  "error": { "code": "validation_error", "message": "Text exceeds the X limit of 280 characters",
             "errors": [ { "field": "overrides.ch_x_01.text", "message": "312 of 280 characters" } ] },
  "request_id": "req_01hz..."
}

Rate limits per plan

Limits are counted per workspace across all keys. Responses include the remaining budget in headers. When you hit a limit the API returns 429 with a Retry-After header; back off and retry. The numbers below are the same as on the pricing page.

API limits by plan
FeatureFreeEssentialsTeamAgencyEnterprise
Canva, Drive, Dropbox, Unsplash, Zapier, MakeYesYesYesYesYes
API keys13510Custom
API requests per 30 days3,0007,50015,00050,000Custom
WebhooksNoYesYesYesYes
MCP server for AI agentsYesYesYesYesYes
X-RateLimit-Limit-15m: 100
X-RateLimit-Remaining-15m: 97
X-RateLimit-Limit-30d: 7500
Retry-After: 120            # only on 429
Linky the chain-link dog between a terminal window and a chain of links leading to a calendar

Webhooks

Register an HTTPS endpoint and receive a signed POST when an event happens. Each delivery includes an event type, the object, a timestamp and a signature header computed with your webhook secret. Verify the signature before you trust a payload. Deliveries are retried with backoff for 24 hours, and the dashboard shows the last 50 deliveries per endpoint.

Webhook events
EventWhen it firesPayload
post.publishedA post went live on the networkpost with network_url
post.failedThe network rejected a post or the token expiredpost with fail_reason
post.approval_requestedA contributor submitted a post for approvalpost, author
post.approved and post.rejectedAn approver actedpost, approver, note
channel.disconnectedA channel token expired or was revokedchannel
inbox.item_receivedA new comment, message or mention arrivedinbox item
report.readyA scheduled report was generatedreport with download_url
POST https://example.com/hooks/mps
X-MPS-Signature: t=1730000000,v1=5f1a...
{
  "id": "evt_01hz...", "type": "post.published", "created_at": "2026-11-03T09:00:04Z",
  "data": { "post": { "id": "post_a1", "channel_id": "ch_instagram_01", "network_url": "https://..." } }
}

MCP server for AI agents

The Model Context Protocol server lets an AI agent such as a desktop assistant or a chat model use your workspace through typed tools, with the same key and the same permissions as the API. A typical session: the agent reads last month’s analytics, drafts a week of posts in your tone, creates them as drafts, and you approve them in the dashboard. Publishing directly is possible only when the workspace setting Allow agents to schedule is on; otherwise the agent can only create drafts and approval requests.

MCP tools exposed
ToolWhat it doesPermission
list_channelsReturns channels with network, handle and next free slotsRead
create_draftCreates a draft post for one or more channels with per-network textWrite (drafts)
schedule_postQueues or schedules a postWrite; requires the Allow agents to schedule setting, otherwise it submits for approval
get_analyticsOverview or per-post numbers for a date rangeRead
list_ideas and create_ideaReads and adds ideas on the Create boardRead / Write
get_inboxReturns open inbox items for triage; replies still happen in the dashboardRead
{
  "mcpServers": {
    "multi-post-social": {
      "url": "https://mcp.multipostsocial.com",        // planned
      "headers": { "Authorization": "Bearer mps_live_..." }
    }
  }
}

SDKs and versioning

The API is versioned in the path. Breaking changes get a new version and the old one stays available for at least 12 months with notices in the changelog. Additive changes, such as new fields, arrive without a version bump, so parse responses leniently. Official SDKs for JavaScript and Python are planned; until then, any HTTP client works and the examples above are complete. Status of the API and each network connection is on the status page.

Safe use of the API

Automation multiplies whatever you give it. Keep agents on draft-only permissions until you trust their output, respect each network’s posting rules on frequency and duplicate content, and never store keys in client code. The acceptable use policy applies to posts created through the API exactly as in the dashboard, and abuse of the API can suspend the workspace.

Frequently Asked Questions

Is the Multi Post Social API available on the free plan?

Yes, with one key and 3,000 requests per 30 days. Higher plans add keys, requests and webhooks; the table above lists the limits.

Can the API connect a new channel?

No. Connecting a channel requires the network’s own login screen, which happens in the dashboard. The API lists and uses channels that are already connected.

How do I test without posting for real?

Create posts with action set to draft, or point your code at a workspace with a test channel. Published posts cannot be deleted through the API, so be careful with action now.

Can an AI agent publish without a human?

Only if a workspace admin turns on Allow agents to schedule. By default agents create drafts and approval requests that a person reviews.

Where do I report an API problem?

Use the contact page with the request id from the response header. Service incidents appear on the status page.

Get an API key in two minutes

Create a free Multi Post Social account, open Settings and generate your first key.