Connect Postiz to Fondoo

Live5 min readUpdated

Postiz is a social media scheduler you can run yourself or use as a cloud service at postiz.com. If you already use Postiz, Fondoo can post through your own Postiz account instead of its default provider, Upload-Post. You connect your social channels inside Postiz, give Fondoo your Postiz API key, and your AI agent then drafts, schedules and publishes through it under your approval rules.

What Fondoo can do with it

  • Read your channels. refresh_social_accounts reads the channels connected in Postiz. Postiz calls them "integrations" in its API. Fondoo can post to these networks through Postiz: Instagram, TikTok, LinkedIn, YouTube, Facebook, Threads, Pinterest, Bluesky, Mastodon and X. LinkedIn Pages and standalone Instagram channels count as LinkedIn and Instagram. Channels you've disabled in Postiz are skipped. Other Postiz channel types are listed, but Fondoo can't post to them.
  • Draft, schedule and publish. The same posting flow works with any provider: draft_social_posts or save_social_draft, then schedule_social_posts, then approve_social_posts. Fondoo's background publisher then sends each due post to Postiz as a "post now" request, checks its status and retries if needed.
  • Media. Real images and videos registered with register_social_media are uploaded to Postiz first.
  • Stats. The hourly stats worker reads Postiz's post analytics (last 30 days). You read them with get_social_stats.
  • Cancel. cancel_post cancels unsent posts. For posts already sent, it asks Postiz to delete them. Whether the post also disappears from the network depends on Postiz, so this may differ for your account.

Threads (multi-part posts) aren't supported through Postiz. X posts with links still need your own X key or confirmed Fondoo billing, see x.md.

What needs your approval: only the workspace owner can save Postiz credentials (configure_social_connection), choose the provider (set_provider), set per-channel options (configure_social_account) and change posting rules (update_distribution_rules). Posts on networks set to review (the default) or manual wait in your approval queue, and so does cancel_post.

Before you start

  • A Postiz account. On Postiz Cloud, API keys come with the Standard plan and above. Every self-hosted install has them (Postiz developer settings). See postiz.com/pricing for current prices.
  • Your channels connected in Postiz first. In Postiz, go to the Calendar and click Add Channel in the left sidebar (connecting channels). Finish any "continue integration" step, such as picking a Facebook Page.
  • A Fondoo social set. It counts against your plan's social-set allowance.
  • Self-hosted Postiz on Fondoo's hosted service: Fondoo only accepts Postiz addresses that the Fondoo operator has allowed. The default list contains only https://api.postiz.com. If you run your own Postiz, ask Fondoo support to allow your address first. If you self-host Fondoo itself, Postiz is the hosted social provider you can use, because Upload-Post isn't available there.

Step by step: get your credentials

  1. Sign in to Postiz and open Settings → Developers. Find the Public API section with your API key (developer settings). If the label looks different in your version, look for the API key on the Developers tab.
  2. Copy the API key. It acts as you and doesn't expire on its own. If it leaks, rotate it in the same place.
  3. Work out your base URL:
    • Postiz Cloud: https://api.postiz.com/public/v1. This is Fondoo's default, so you can leave it out.
    • Self-hosted: your Postiz backend address (the NEXT_PUBLIC_BACKEND_URL value) followed by /public/v1. Many Docker installs serve the backend under /api, giving something like https://postiz.example.com/api/public/v1. This may differ for your install (configuration reference). Leave out usernames, passwords, ?query and #fragment parts.
  4. Optional: if you use Postiz customers (client groups), copy the customer's ID. It goes in group so Fondoo sees only that customer's channels. Postiz's integrations list accepts this filter (list integrations). Use a separate group per brand.

Fondoo's credential fields are apiKey (required), baseUrl (optional) and group (optional).

Connect it in Fondoo

To get the setup steps as a link, your agent can call connect_service({provider:"postiz", siteId}) (REST: POST /v1/ops/connect_service). It returns a signed link, valid for 15 minutes, plus a QR code and these setup steps. That link only shows instructions. Your Postiz URL and API key are saved with configure_social_connection, below.

(a) Dashboard. Postiz is not in the Connections → Available list. Use the agent or REST route. Once refreshed, your channels appear in the Connected card.

(b) Ask your agent. Your API key shouldn't be pasted into a chat. The credential step is owner-only, so run it yourself over REST or through an owner session. Then you can ask your agent:

"For site YOUR-SITE-ID, switch social posting to Postiz, refresh my Postiz channels and list them."

The calls, in order:

configure_social_connection({ siteId, provider: "postiz", set: 1,
  credential: { apiKey: "<Postiz key>", baseUrl: "https://api.postiz.com/public/v1", group?: "<customer id>" } })
  → { configured: true, connectionId }
set_provider({ siteId, capability: "social", provider: "postiz" })
refresh_social_accounts({ siteId, connectionId })
list_social_accounts({ siteId })

Optional: for OAuth networks, connect_social({siteId, provider:"postiz", network:"linkedin", redirectUrl}) returns a Postiz authorization link that adds a new channel to Postiz. Postiz doesn't support networks that need an instance address, such as Mastodon, through this link. It allows 30 link requests per hour (connect endpoint). Adding channels inside Postiz is simpler.

Some networks need extra Postiz options before they can post. Set them with configure_social_account({siteId, accountId, settings}):

  • Pinterest: board
  • YouTube: title, type
  • TikTok: privacy_level, duet, stitch, comment, autoAddMusic, brand_content_toggle, brand_organic_toggle, content_posting_method

settings replaces the stored settings. Copy the existing __type value from list_social_accounts into your new settings, so Fondoo keeps the right Postiz channel type.

Finally, the owner turns on each network with update_distribution_rules.

REST equivalent: POST https://api.getfondoo.com/v1/ops/configure_social_connection with Authorization: Bearer <Fondoo API key> and the JSON body above. Every other operation works the same way at /v1/ops/<operation>.

Test that it works

  1. get_providers({siteId}) should show selected.social as postiz.
  2. refresh_social_accounts should return your Postiz channels. get_connection_health({siteId}) asks Postiz for them again and reports the status.
  3. Run schedule_social_posts with "dryRun": true and a short text post. Then schedule and approve one real post, and check it appears in Postiz and on the network.

Troubleshooting

  • "Social provider request failed (401)". The API key is wrong or was rotated. Copy it again from Settings → Developers and save it with configure_social_connection using your existing connectionId.
  • "Provider origin must be explicitly allowed by the server operator". Your self-hosted address isn't on Fondoo's allowed list, or it contains a query or login. Ask Fondoo support, or fix the URL.
  • "Account does not use the selected social provider". The account belongs to a different provider than the one chosen with set_provider. Switch the provider or use the matching account.
  • "Postiz requires board" (or title, type, privacy_level ...). Set that option with configure_social_account.
  • "Postiz asynchronous media processing". Postiz hadn't finished processing the upload. Try a smaller file or a different format.
  • Duplicate connections. Each configure_social_connection call with provider creates a new connection. To change a key, pass connectionId instead.

Limits, data and security

  • Rate limits: Postiz limits its create-post endpoint to 100 requests per hour on Postiz Cloud. Self-hosted installs default to 90, set by API_LIMIT, and the shipped Docker setup uses 30 (Postiz public API). Each Fondoo publish uses one create-post request. Connect links are limited to 30 per hour. Your Postiz plan's channel and monthly post quotas also apply. Fondoo's own rules (default 1 post a day per account, 09:00 to 17:00 UTC) apply on top. See get_publishing_capacity.
  • What Fondoo stores: your API key, base URL and group, encrypted (AES-GCM, bound to your site and connection) and never returned by any operation. Fondoo also keeps channel names and IDs, your posts and their metrics.
  • Rotate: rotate the key in Postiz, then run configure_social_connection with your connectionId and the new apiKey.
  • Disconnect: rotate or revoke the key in Postiz. To go back to Upload-Post, run set_provider({siteId, capability:"social", provider:"upload_post"}).