Move from Post Bridge to PostWire in an afternoon

Post Bridge's publish request, mapped field by field to PostWire's, with the same post side by side as cURL, an n8n node and an MCP call — and a converter that rewrites your Post Bridge requests for you, in the browser.

What changes, in four lines. The key: Authorization: Bearer pw_live_…. social_accounts (account IDs; external_ref per client on connect links) becomes brand_id, one brand per client. Scheduling: POST /api/schedule with run_at. And one thing PostWire adds: POST /api/generate writes each network's post from one idea before you publish.

Post Bridge's fields read on its own docs on Oct 9, 2026, linked on each row; PostWire's checked against openapi.json when this page was built.

Field by field

Post Bridge: POST https://api.post-bridge.com/v1/posts. PostWire: POST https://postwire.io/api/post (now) or POST https://postwire.io/api/schedule (later).

Post BridgePostWireNotes
captionapi.post-bridge.com, Oct 9, 2026textRequired unless is_draft.
social_accountsapi.post-bridge.com, Oct 9, 2026platforms + brand_idPost Bridge targets numeric account IDs; PostWire takes network names and the client's brand.
media_urlsapi.post-bridge.com, Oct 9, 2026media[].url (or photo_url / video_url)Public URLs, as on Post Bridge.
media (media IDs)api.post-bridge.com, Oct 9, 2026media[].urlUpload the file to PostWire (POST /api/media/upload-url) or pass any public URL.
scheduled_atapi.post-bridge.com, Oct 9, 2026run_at (POST /api/schedule)ISO 8601; without it Post Bridge posts instantly, PostWire uses POST /api/post.
use_queueapi.post-bridge.com, Oct 9, 2026run_at: "next_slot"The brand's next free queue slot.
platform_configurations.<platform>.captionapi.post-bridge.com, Oct 9, 2026per_platform.<network>.textA different text per network — or let POST /api/generate write each one.
platform_configurations.youtube.titleapi.post-bridge.com, Oct 9, 2026title (or per_platform.youtube.title)Post Bridge's default is the caption's first 100 characters.
platform_configurations.<platform>.first_commentapi.post-bridge.com, Oct 9, 2026per_platform.<network>.first_commentPostWire: LinkedIn, X, Bluesky, Mastodon.

Network names: twitter → x · instagram → instagram · facebook → facebook · linkedin → linkedin · tiktok → tiktok · youtube → youtube · bluesky → bluesky · pinterest → not offered by PostWire · threads → not offered by PostWire · google_business → not offered by PostWire.

The same post, side by side

Post Bridge — their docs' example

curl -X POST https://api.post-bridge.com/v1/posts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "caption": "Hello, world!",
    "scheduled_at": "2026-12-31T23:59:59Z",
    "media": ["media_id"],
    "social_accounts": [1234, 5678]
  }'

From api.post-bridge.com, read Oct 9, 2026. Their docs show this body inside a JavaScript fetch() with variables (scheduledAt, media_id, accountIds); here as cURL with sample values in their place.

PostWire — REST (the converter's output, with instagram and linkedin ticked)

curl -X POST https://postwire.io/api/schedule \
  -H "Authorization: Bearer $POSTWIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "platforms": [
    "instagram",
    "linkedin"
  ],
  "text": "Hello, world!",
  "run_at": "2026-12-31T23:59:59Z"
}'

your key from the pasted command is not carried over: the output uses $POSTWIRE_API_KEY social_accounts (Post Bridge account IDs) → brand_id: create one PostWire brand per client (POST /api/brands) and send its id; with a single brand you can leave brand_id out media are Post Bridge media IDs: upload the files to PostWire (POST /api/media/upload-url) or pass public URLs in "media"

PostWire — n8n node

PostWire node
  Resource:   Post
  Operation:  Schedule
  Networks:   instagram, linkedin
  Content:    Same Text on Every Network
  Text:       Hello, world!
  When:       At a Specific Time
  Publish At: 2026-12-31T23:59:59Z
  Options → Brand: the client's brand

PostWire — MCP (Claude, ChatGPT, any agent)

schedule_post({
  "platforms": [
    "instagram",
    "linkedin"
  ],
  "text": "Hello, world!",
  "run_at": "2026-12-31T23:59:59Z"
})

# or ask your agent: "Schedule this on Instagram and LinkedIn for 2026-12-31T23:59:59Z"

What changes

Post BridgePostWire
AuthenticationAuthorization: Bearer YOUR_API_KEYapi.post-bridge.com, Oct 9, 2026Authorization: Bearer pw_live_… — an API key from the dashboard; the MCP server also signs in with OAuth 2.1
One clientsocial_accounts (account IDs; external_ref per client on connect links)api.post-bridge.com, Oct 9, 2026brand_id — one brand per client, its networks connected once (GET /api/brands lists them)
Schedulingscheduled_at (ISO 8601) in the same request, or use_queue for the next queue slot; null posts instantlyapi.post-bridge.com, Oct 9, 2026POST /api/schedule with run_at (ISO 8601 with offset) or "next_slot", checked at queue time
WebhooksNot listedpost.published, post.failed, connection.reauth_required — one per network, signed (PostWire-Signature, HMAC-SHA256), retried for two days
Retries without duplicatesNot listedidempotency_key (24 hours); an identical post is refused for 2 minutes even without one
Checking a postGET /v1/posts/{id} and GET /v1/post-results?post_id=… per platformapi.post-bridge.com, Oct 9, 2026GET /api/post/status, or the webhook

Convert your Post Bridge requests

Paste a cURL command or a JSON body from your code. The PostWire request comes out, ready to run.

Networks, when the request only has account or channel IDs

Runs in your browser: no AI, no server, nothing you paste or upload leaves this page. Try it free

Move in an afternoon

  1. Open a PostWire account (free, no card) and create an API key under API & MCP.
  2. Create one brand per client — POST /api/brands or the dashboard. It takes the place of Post Bridge's social_accounts.
  3. Connect each client's networks: POST /api/connect-link returns a one-hour link the client opens to sign in to each network. TikTok, Meta and Google approvals are PostWire's, so there is no app review on your side.
  4. Swap the base URL and the auth header in your code: https://postwire.io/api/ and Authorization: Bearer pw_live_….
  5. Convert your requests with the converter above (or by the field table), and send brand_id with each one.
  6. Move the queue: list what is still scheduled on Post Bridge and re-create it with POST /api/schedule, or as one CSV under Automate → Bulk upload (checked row by row before anything is scheduled).
  7. Point your webhook receiver at PostWire: POST /api/webhooks with your URL, and verify PostWire-Signature.
  8. Send one real post to one network and watch GET /api/post/status or the webhook.
  9. When the Post Bridge queue is empty, cancel that plan. PostWire's paid plans have a 14-day refund if it is not for you.

Where PostWire is ahead of Post Bridge

  • A free plan, not only a trial. 1 business, 20 posts a month, with the REST API and the MCP server, no card and no time limit. Post Bridge has a 7-day trial, and free users get 5 posts.
  • Every network's post written for you, from one idea, in one request — a hook-first caption for TikTok, a searchable title and tags for YouTube, a longer first-person post for LinkedIn. On Post Bridge you write once and customize each platform yourself.
  • Approvals from $9 a month. On every paid plan a post can wait until a person approves each network's version, and Pro includes 25 seats with roles. Post Bridge adds team members on Operator, $99.
  • Mastodon, Telegram and Discord, next to TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Bluesky and X. Post Bridge's list of platforms has none of the three.

Questions people ask

How long does it take to move from Post Bridge to PostWire?

An afternoon for most integrations: the request maps field by field (the table on this page), the auth header and the client key change, and the converter on this page turns Post Bridge requests into PostWire's. Connecting each client's networks is one sign-in per network, from a link you can send the client.

What replaces Post Bridge's social_accounts (account IDs; external_ref per client on connect links)?

A brand: one per client business, each with its own connected networks. Send brand_id with the post (GET /api/brands lists them); a key that only has one brand can leave it out.

Does PostWire have webhooks and idempotency like Post Bridge?

PostWire signs every webhook (PostWire-Signature: HMAC-SHA256) and sends post.published, post.failed and connection.reauth_required, one per network, retried for two days. An identical post is refused for 2 minutes, or for 24 hours when you send your own idempotency_key.

Can I try PostWire before cancelling Post Bridge?

Yes. The free plan has the REST API and the MCP server (1 business, 20 posts a month, no card), and Pro has a 7-day free trial; run both side by side until your queue on Post Bridge is empty.

Type one idea and see the post each network gets.

The demo on the home page writes live, with no account, and never publishes. The free plan covers one business — every network connects free, 2 networks per post — with no card and no time limit. Paid plans have a 14-day refund.