BorkerBorker Docs

Postiz Integration

How Borker connects to Postiz to schedule and publish content across social platforms.

Postiz is the publishing layer for Borker. Borker generates and approves content; Postiz holds your social account connections and handles the actual posting.

What each system handles

Borker handlesPostiz handles
AI content generationX, LinkedIn, Farcaster connections
Brand voice, topics, scheduling configPublishing posts at scheduled times
Approval queue and reviewPost queue management
Optimal time calculationPlatform-specific formatting quirks
The content calendarPostiz's own queue/calendar

You need both working for end-to-end publishing.

Setting up Postiz

Create a Postiz account at postiz.com. Postiz is open source; you can self-host or use their cloud.

Connect your social accounts in Postiz. This is where you authorize X, LinkedIn, Farcaster, etc. Borker doesn't handle these connections directly.

Generate a Postiz API key in Postiz → Settings → API Keys.

Add the key to Borker in Settings → Workspace → API Keys → Postiz field.

Run a test by approving a piece of content and running Process Approved. Check the Borker calendar and Postiz queue to confirm the post appears in both.

Connecting social accounts in Postiz

Social account connections are managed entirely in Postiz, not in Borker. In Postiz:

  • Go to Channels or Integrations (depending on Postiz version)
  • Add each platform (X, LinkedIn, Farcaster)
  • Follow the OAuth flow to authorize Postiz to post on your behalf

Once connected in Postiz, Borker can schedule content to that platform via the Postiz API.

If you enable a platform in Borker but haven't connected it in Postiz, content will generate and schedule normally in Borker, but Postiz will fail to publish it because it has no account connection. Always connect the platform in Postiz first.

The scheduling flow

sequenceDiagram
    participant B as Borker
    participant P as Postiz API
    participant S as Social Platform

    B->>B: Process Approved runs
    B->>P: POST /posts (content + scheduled time)
    P-->>B: { postiz_id: "xyz" }
    B->>B: Store postiz_id in content item metadata
    B->>B: Update status to "scheduled"
    Note over P,S: At scheduled time...
    P->>S: Publish post
    P-->>B: Webhook: post published
    B->>B: Update status to "published"

The Postiz badge

When content is scheduled, a Postiz badge appears in the Borker calendar modal for that post. Clicking the badge opens the post directly in your Postiz dashboard.

Use it to:

  • Check the exact scheduled time in Postiz
  • See the post preview as Postiz will render it
  • Make any last-minute edits in Postiz

Canceling a scheduled post

To cancel a post that's already been sent to Postiz:

  1. Open the post in Borker's calendar
  2. Click Cancel in the modal
  3. Borker calls PostizService.cancelPost(), which deletes the post from Postiz's queue
  4. The content item in Borker reverts to approved status

The post is now removed from Postiz and can be rescheduled (via Process Approved) or rejected.

Canceling in Borker also cancels in Postiz. You don't need to cancel in both places.

Troubleshooting Postiz integration

"No X account connected in Postiz" Content scheduled in Borker shows as scheduled, but Postiz reports no account for that platform. Fix: connect the platform in Postiz → Channels.

Postiz key invalid The Process Approved workflow fails with an authentication error. Fix: regenerate the API key in Postiz and update it in Settings → Workspace → API Keys.

Post scheduled in Borker but not appearing in Postiz queue Rare. Usually a timing issue or API timeout. Re-run Process Approved; it's safe to run multiple times and won't double-schedule (it skips items that already have a postiz_id).

Post published in Postiz but still shows "scheduled" in Borker Borker relies on a webhook from Postiz to update status to "published." If the webhook failed, the status won't update. Doesn't affect actual publishing; the post went out fine.

On this page