socialrobot
REST API

Schedule posts from your own code

One REST API for Instagram, LinkedIn, X, TikTok, Pinterest, Threads, Facebook, Bluesky, and Mastodon. OpenAPI at /api/openapi.json. Auth is an API key in the x-api-key header.
POST /api/posts
curl -X POST https://socialrobot.io/api/posts \
  -H "x-api-key: $SOCIALROBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "New oat flat white is live.",
    "scheduledAt": "2026-08-01T09:00:00Z",
    "targets": [
      { "platform": "instagram", "accountId": "acc_123" },
      { "platform": "linkedin",  "accountId": "acc_456" },
      { "platform": "x",         "accountId": "acc_789" }
    ]
  }'

Connected accounts you already linked in the app

X (Twitter)InstagramBlueskyLinkedInPinterestMastodonThreadsFacebookTikTok
What it covers

Same engine as the dashboard

If it works in SocialRobot, you can drive it over HTTP. Posts land on the calendar like ones you typed by hand.

POST /posts

POST /posts

One request, multiple platform targets. Change the text per network when you need to.

PATCH /posts/{id}/schedule

Schedule and move

Set a time. Move it later. Or delete the draft.

POST /media/upload-url

Media upload

Upload images and video the same way the app does. If your script cannot upload the file itself, send a public image URL instead.

GET /pinterest/boards/{accountId}

Per-network extras

Pinterest boards, TikTok creator info, and the same options you already see in the composer.

Setup

Three steps, then curl

You don't register Meta or LinkedIn apps yourself. SocialRobot already holds those connections.

01

Link accounts in the app

Connect Instagram, LinkedIn, and the rest under Scheduler → Accounts. The API publishes through those logins.

02

Create an API key

Scheduler settings → API keys. Copy it once and send it as x-api-key (Bearer also works).

03

Hit the endpoints

GET /accounts for IDs, then POST /posts with content, schedule, and targets.

Docs and limits

What you get day one

/api/openapi.json

OpenAPI 3

Full spec at /api/openapi.json. Open it in Postman or generate a client from it.

x-api-key: sk_…

API keys

Server-to-server auth without a separate OAuth app. Create, scope, and revoke keys in the dashboard.

2,000 req/min

Rate limits

2,000 requests/minute per account and 200,000/day, shared with MCP. Same ceilings on Free and paid.

Rather ask Claude than write curl?

Same publishing. Add https://socialrobot.io/api/mcp to ChatGPT, Claude, or Cursor and sign in.

See how
n8n

Already in n8n?

Verified SocialRobot node. Search it in the nodes panel, add your API key, publish to the same nine networks.

n8n setup

FAQ

How do I authenticate?

Create an API key in the dashboard and send it as x-api-key, or as Authorization: Bearer. No extra OAuth app for server scripts.

What are the rate limits?

HTTP and MCP share 2,000 requests/minute per account and 200,000/day. MCP handshake calls like initialize and resources/read don't count.

Where is the OpenAPI spec?

https://socialrobot.io/api/openapi.json. Signed-in users also get interactive docs inside the app.

REST, MCP, or n8n?

Use REST when your code calls the API. Use MCP when ChatGPT, Claude, or Cursor should call tools after you approve access. Use the n8n node when the trigger is a spreadsheet, RSS feed, or another app on the canvas.

Start free

Your next post starts here.

Connect your accounts and try it with a real post. Two accounts and fifteen posts a month, free.

Start free

Free plan. No credit card required.