Developers

Post Bridge API

Create and schedule posts across all nine platforms from your own code. REST, JSON, one bearer token.

Introduction

The Post Bridge API lets you do everything the app does, programmatically: read your connected accounts, and create or schedule posts to any combination of them. It's a small, REST-ish API — JSON in, JSON out.

Base URL https://api.post-bridge.com/v1

This clone documents the API surface; the live playground below runs against demo storage so you can see real request/response shapes.

Authentication

Every request needs a bearer token. Create one in the app under Configuration → API Keys. Keys are scoped to one workspace.

curl https://api.post-bridge.com/v1/connections \
  -H "Authorization: Bearer pb_live_xxxxxxxx"

Connecting accounts

Accounts are connected once in the app via each platform's OAuth flow (Connections → Add account). The API is read-only for connections — it can't add accounts, only list them, so you always post to accounts a human explicitly authorized.

List connections

GET /connections

Returns every connected account and its platform.

{
  "connections": [
    { "id": "cx_01", "platform": "x", "handle": "@postbridge" },
    { "id": "li_01", "platform": "linkedin", "handle": "Post Bridge" }
  ]
}

Create a post

POST /posts

Posts immediately to the given platforms (or accounts). Provide a shared caption and, optionally, per-platform overrides.

curl https://api.post-bridge.com/v1/posts \
  -H "Authorization: Bearer pb_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "gm — shipped a new feature today",
    "platforms": ["x", "bluesky", "linkedin"],
    "overrides": { "linkedin": "Good morning. We shipped..." }
  }'

Schedule a post

POST /posts

Add a schedule_at (ISO-8601) and the post is queued instead of sent.

{
  "caption": "Reminder: free 7-day trial ends soon",
  "platforms": ["x", "threads"],
  "schedule_at": "2026-07-25T09:00:00Z"
}

List posts

GET /posts?status=scheduled

Filter by statusdraft, scheduled, or posted.

Playground

Edit the request body and run it. This executes against your demo workspace's storage and creates a real (demo-mode) post you'll see in the app.

POST /v1/posts
// response appears here

Errors & rate limits

Errors return a JSON body with an error code and human message. Standard HTTP status codes apply. Rate limit: 120 requests/minute per key; posting is capped at 60 posts/hour to protect your accounts from platform-side spam flags.

CodeMeaning
401 unauthorizedMissing or invalid key
422 over_limitCaption exceeds a platform limit
429 rate_limitedSlow down; retry after the header value