⚡ REST API · MCP Server · n8n · Webhooks

Publish from
anywhere. Automate
everything.

A real REST API, a real MCP server, and a real n8n node — free, included with every account. Connect GetMulticast to your automation stack and let it handle the publishing.

POST /api/v1/posts
// Publish to multiple platforms in one call
const response = await fetch('https://getmulticast.com/api/v1/posts', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    mediaUrl: "https://example.com/clip.mp4",
    mediaType: "video",
    caption: "Our new feature is live 🚀",
    selections: { instagram: ["acct_123"], x: ["acct_456"] }
  })
});

// Response — 202, publishing happens in the background
{ runId: "8fJ2k...", queued: true }

Authentication

Every request needs an API key in the Authorization header, as a Bearer token. Create one from Dashboard → Settings → Developer — the raw key is shown exactly once at creation.

# Base URL: https://getmulticast.com/api/v1
curl https://getmulticast.com/api/v1/accounts \
  -H "Authorization: Bearer gmc_live_XXXXXXXXXXXXXXXXXXXXXXXX"

Keys are prefixed gmc_live_ and carry their own scopes (accounts:read, posts:read, posts:write, comments:read, comments:write, credits:read, webhooks:read, webhooks:write, rss:read, rss:write, analytics:read) — pick only what a given integration needs.

Rate limits

60
requests / minute, per key
5,000
requests / day, per key

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. A 429 includes Retry-After. POST /posts and POST /posts/scheduled queue the real publish work and return 202 immediately — poll GET /posts/{id} or use a webhook instead of waiting.

Errors

Every error uses the same envelope, so you can branch on error.code:

{ "error": { "code": "insufficient_scope", "message": "...", "requestId": "a1b2c3d4" } }

Send an Idempotency-Key header on POST /posts, POST /posts/scheduled, and POST /comments/reply to make retries safe — a repeated key returns the original result instead of publishing twice.

Accounts

GET/accountsaccounts:read
Every connected social account across every platform.

Posts

Create, schedule, retrieve, retry, and get real analytics for posts across any connected platform.

POST/postsposts:write
Publish now. Returns 202 with a runId — publishing happens in the background.
ParameterDescription
mediaUrlPublic URL to the video or image file (required)
mediaType"video" or "image" (required)
selections{ platform: [accountId, ...] } — required
caption / captionOverridesShared caption, and per-platform overrides
hashtags / firstCommentAppended hashtags; auto-posted first comment (Facebook & Instagram)
GET/postsposts:read
List your posts, newest first. Paginated (limit, cursor).
GET/posts/{id}posts:read
One post's full status and per-account publish results.
GET/posts/{id}/analytics?platform=analytics:read
Real, live metrics — youtube, x, pinterest, bluesky today. Every other platform returns a real 400 naming the exact missing permission, never a fake number.
POST/posts/{id}/retryposts:write
Retry only the accounts that failed on a given platform.
POST/posts/scheduledposts:write
Same fields as above, plus date/time/timezone.
GET/scheduled-postsposts:read
List posts still waiting to publish.
PATCH/scheduled-posts/{id}posts:write
Reschedule a still-pending post.
DELETE/scheduled-posts/{id}posts:write
Cancel a still-pending scheduled post.

Comments & Replies

GET/commentscomments:read
Recent comments (last 7 days) across Instagram, Facebook, Threads, YouTube, LinkedIn, Bluesky.
POST/comments/replycomments:write
Reply directly (directText), or let AI draft into the review queue.
POST/comments/dismisscomments:write
Mark a comment handled without replying.
GET/replies/pendingcomments:read
The Review Inbox — AI-drafted replies awaiting approval (every platform, including X).
POST/replies/pending/{id}/approvecomments:write
Send it — the AI draft, or pass editedText.
POST/replies/pending/{id}/rejectcomments:write
Discard without sending.
POST/replies/pending/{id}/regeneratecomments:write
Ask AI to revise the current draft.
PATCH/replies/pending/{id}comments:write
Overwrite the draft text without sending.

Credits

GET/creditscredits:read
Remaining AI video-generation credit balance.

MCP Server

A real Model Context Protocol server exposing every endpoint on this page as a tool — 32 in total. Runs locally over stdio, using your own API key.

Download the server (.zip) — unzip, npm install, then add it to your MCP client:

Claude Desktop config
{
  "mcpServers": {
    "getmulticast": {
      "command": "node",
      "args": ["/full/path/to/getmulticast-mcp-server/index.js"],
      "env": { "GETMULTICAST_API_KEY": "gmc_live_xxxx" }
    }
  }
}

Some of the 32 tools available once connected:

create_post

Publish or schedule a post to any connected accounts

list_pending_replies

Read the AI-drafted Review Inbox

reply_to_comment

Reply directly, or hand it to the AI review queue

register_webhook

Subscribe a URL to real-time events

create_rss_feed

Auto-post new items from any RSS/Atom feed

get_post

Check a post's real publish status

n8n Integration

Two real nodes covering the whole API. Download the package (.zip) — see its README for manual install (not yet published to npm).

⚡ GetMulticast Trigger

Starts a workflow on a real event. Activating the workflow registers the webhook for you; deactivating removes it. Every delivery is signature-verified before it reaches your workflow.

AUTO-MANAGED WEBHOOK

📤 Post resource

Create, list, get, retry, schedule, reschedule and delete posts — one node covers every posts operation.

7 OPERATIONS

💬 Comment & Pending Reply resources

List, reply, dismiss, approve, reject, regenerate — the full Review Inbox workflow inside n8n.

9 OPERATIONS

📡 Webhook resource

Register/list/delete webhooks and read delivery history directly — for anything the Trigger node's auto-management doesn't cover.

4 OPERATIONS

🔄 RSS Feed resource

Create, list, update, delete, and force-check RSS auto-post feeds from any workflow.

5 OPERATIONS

♻️ Recycling Rule resource

Create, list, update, delete, and force-run content recycling rules — auto-repost an old post every N days.

5 OPERATIONS

Zapier & Make

A listed, native Zapier/Make app isn't published yet — that requires going through each platform's own developer review. In the meantime, their built-in generic actions work against this API today, no custom app required:

⚡ Webhooks by Zapier

Use a "Custom Request" action for any endpoint on this page (set the Authorization header to your key), and a "Catch Hook" trigger with POST /webhooks to receive events in real time.

WORKS TODAY

🔄 Make's HTTP module

Make's generic HTTP module works exactly the same way — build a scenario against any endpoint documented here.

WORKS TODAY

Webhooks

Register a URL to get a signed HTTP POST the moment something happens. Delivery is durable — a background worker retries on a real backoff schedule (1m → 5m → 30m → 2h → 6h → 24h) if your endpoint doesn't return 2xx.

POST/webhookswebhooks:write
Register — { url, events[] }. Returns a one-time secret for signature verification.
GET/webhookswebhooks:read
List registered webhooks.
DELETE/webhooks/{id}webhooks:write
Remove a webhook.
GET/webhooks/{id}/deliverieswebhooks:read
Real delivery history and errors for one webhook.
EventFired when
post.publishedA post finished publishing to at least one account
post.failedA post failed on every selected account
comment.receivedA new comment/mention was fetched on a monitored account
reply.sentA reply — auto-sent or approved — actually went out

Verify with HMAC-SHA256 over the raw body using the webhook's own secret — see X-GetMulticast-Signature. Full example: api-docs.html.

RSS Auto-Post

Point GetMulticast at an RSS or Atom feed and it checks for new items on a schedule (15 minutes minimum), posting each new one automatically.

Real limitation, stated plainly: every platform needs an actual image or video to post — there's no text-only post support yet. Only facebook, instagram, threads, pinterest, and bluesky support image posts today, so those are the valid RSS targets.
POST/rss-feedsrss:write
Register a feed — { url, selections, captionTemplate?, checkIntervalMinutes? }.
GET/rss-feedsrss:read
List configured feeds.
PATCH/rss-feeds/{id}rss:write
Update active state, selections, template, or interval.
DELETE/rss-feeds/{id}rss:write
Remove a feed.
POST/rss-feeds/{id}/check-nowrss:write
Queue an immediate check.

Content Recycling

Pick one of your own already-published posts and automatically re-publish it again every N days — optionally with the caption AI-rewritten each time so it doesn't read as an exact repeat.

Real limitation, stated plainly: recycling doesn't auto-detect your best-performing post to recycle — real per-post analytics only cover 4 of 9 platforms today (see Posts → analytics above), so an automatic "recycle whatever did best" selector would either ignore most platforms or invent numbers. You pick the source post explicitly.
POST/recycling-rulesrecycling:write
Create a rule — { sourcePostId, selections?, intervalDays?, rewriteCaption? }. selections defaults to the accounts the source post actually succeeded on.
GET/recycling-rulesrecycling:read
List configured rules.
PATCH/recycling-rules/{id}recycling:write
Update active state, selections, interval, or caption-rewrite setting.
DELETE/recycling-rules/{id}recycling:write
Remove a rule.
POST/recycling-rules/{id}/run-nowrecycling:write
Queue an immediate recycle.

Ready to start building?

Every endpoint on this page is free, on every account. Create your API key in Settings → Developer.

Get your API key →