Postiz
Social MediaConnect AI agents to Postiz, an open source social media scheduling tool. Agents upload media and schedule posts across every connected channel from a single flow.
What This Integration Enables
Postiz is an open source social scheduler, and this connector treats that as the point rather than a footnote. The Base URL config item is the argument in one field: leave it and the connector talks to the hosted cloud at api.postiz.com, set it and the same actions run against your own deployment with the /public/v1 path appended for you. For a marketing team that has been told its scheduled content, its connected account tokens, and its posting history are a vendor's data, that field is the difference between a tool and infrastructure. The rate limit tells the same story: roughly 100 create-post calls per hour on cloud, configurable through API_LIMIT when you run it yourself. A batch that would be throttled on someone else's plan is a config change on your own.
The publishing model is per channel rather than per set. Create Post takes a posts array with one entry per channel, each carrying its own content and its own optional media, so the same campaign goes to LinkedIn with the long version and to X with the short one in a single call rather than in two flows that drift apart. The provider type for each channel's settings is resolved automatically from the connected integration, so a flow supplies the channel ID and not a platform string it has to keep in sync. Where a platform needs more, an optional per-channel settings object carries it, which is how X, LinkedIn, and Reddit get what they require. Post Type controls what happens: Now publishes immediately, Schedule publishes at the given date, Draft saves without publishing.
Two actions here do work that most schedulers push back onto the caller. Find Free Slot returns the next available date and time based on the account's own posting schedule, optionally scoped to one channel, which means a flow can auto-place content into the real queue instead of writing it to a round hour and hoping nothing collides. And Upload Media From URL downloads media server side from a public URL and stores it in Postiz, returning a media object with an id and path to drop into a channel's media array, so the flow never has to hold bytes. Around them, List Channels enumerates the connected integrations with their ID, display name, provider identifier such as linkedin, x, or instagram, profile, and disabled status, and List Customer Groups returns the groups agencies use to organize channels per client, which both List Channels and List Posts can filter on.
There are no triggers. The Postiz public API does not document a webhook payload for post events, so nothing here wakes a flow up. Publishing flows start from an approval upstream, a content record, or a schedule, and Postiz is where they end rather than where they begin. List Posts requires both startDate and endDate as ISO-8601 timestamps, which makes reading back what is queued a deliberate window rather than an open-ended fetch.
Without FlowRunner
With FlowRunner
Use Case Scenarios
One approval, tailored copy on every channel
A post is approved in Notion with a long form version, a short form version, and an image. The flow calls List Channels to resolve the target channels to IDs, calls Upload Media From URL on the image and holds the returned media object, then calls Create Post once with a posts array: the LinkedIn entry carries the long copy, the X entry carries the short copy, and both reference the same media object. Post Type is set to Schedule with the approved date. Because the provider type is resolved from each connected integration, the flow never hardcodes a platform name, so adding a channel later is a change to the channel list and not to the flow. The returned post ID is written back to the Notion record, which is what makes the next scenario possible.
Auto-placement into a queue that already has content in it
A steady stream of evergreen content needs to go out without clustering. Rather than assigning times by hand, the flow calls Find Free Slot for the account, or scoped to a specific channel where that channel has its own cadence, and uses the returned date and time as the schedule for Create Post. The queue fills according to the posting schedule the team configured in Postiz rather than according to whatever hour the automation happened to run. A weekly pass then calls List Posts over the coming seven days, groups by channel, and posts the resulting picture to Slack: what is scheduled, on which channels, and where the gaps are. Nobody has to open the calendar to know whether next week is covered.
A self-hosted instance a flow can actually work against
A team runs Postiz on its own infrastructure for the usual reasons: the connected account tokens and the content history are theirs, and the create-post rate limit is a setting rather than a plan tier. The connector's Base URL is pointed at the backend and every action behaves identically, which means the flows written against cloud during evaluation do not get rewritten on migration. A daily job calls List Channels and reports any integration whose disabled status has flipped, so a revoked token is caught before it becomes a week of posts that silently failed. For an agency running client work on one instance, List Customer Groups scopes both the channel enumeration and the List Posts window per client, so the daily digest that goes to each client covers their channels and nobody else's.
Human-in-Loop Highlight
Delete Post reads like the smallest action on this connector and has the widest reach on it. It takes a single post ID and removes the entire post group associated with that ID, which is every channel entry created in the same Create Post call. A cleanup flow that finds a typo in the LinkedIn copy and reaches for Delete Post does not remove the LinkedIn post. It removes the X post, the Instagram post, and everything else that went out in that group, and there is no partial form of this action anywhere in the surface. What makes it worse for an agent is the error handling: a 404 means the post was already deleted and is treated as success, so the response to a delete that removed five posts and a delete that removed nothing at all is indistinguishable after the fact. The agent cannot verify its own blast radius by reading the result. It can only establish the scope beforehand, which is exactly what it should do. So the flow does the reconstruction and hands over the decision. It calls List Posts across the window containing the post to enumerate every channel entry in the group, and asks the content owner: "Delete Post on ID 8841 will remove the whole group, which is 4 entries: LinkedIn (published 2 hours ago, live), X (published 2 hours ago, live), Instagram (scheduled Thursday 09:00), Threads (scheduled Thursday 09:00). Only the LinkedIn copy has the typo. Delete the group and recreate the three that were fine, or leave it and correct LinkedIn in the platform?" That is a judgment about whether a visible correction costs more than a quiet one, and it belongs to the person whose name is on the account. Building the human-in-the-loop gate around scope rather than around the word delete is what lets the same agent create several hundred posts a month without anyone reviewing them.
Agent Capabilities
7 actionsPublishing
3- Create Post Creates and schedules a post across one or more connected channels, with independent text and media per channel. Set type to Now to publish immediately, Schedule to publish at the given date, or Draft to save without publishing. The provider type for each channel's settings is resolved automatically from the connected integration, so you supply only the channel ID. Media must be uploaded first via Upload Media From URL. Rate limited to roughly 100 create-post calls per hour on cloud.
- Upload Media From URL Downloads media from a public URL server side and stores it in Postiz, returning a media object with an id and path. Use the returned object in the media array of Create Post to attach images or videos. The request fails for unsupported types or files over the size limit, so validate before the batch rather than inside it.
- Find Free Slot Returns the next available free date and time for scheduling a post based on the account's posting schedule, optionally scoped to a specific channel by ID. This is what lets a flow auto-place content into the real queue instead of writing it to an arbitrary hour.
Posts
2- List Posts Retrieves posts scheduled or published within a date range. Both startDate and endDate are required and must be ISO-8601 timestamps. Optionally narrow results to a single customer group by ID. This is also the action that establishes what a delete would actually remove.
- Delete Post Deletes a scheduled or published post by ID, removing the entire post group associated with it. A 404 means the post was already deleted and can be treated as success, which also means a successful delete and a no-op are indistinguishable in the response.
Accounts
2- List Channels Lists all connected channels, meaning integrations, for the account, with each channel's ID, display name, provider identifier such as linkedin, x, or instagram, profile, and disabled status. Optionally filter to a single customer group. The returned channel IDs are what Create Post takes.
- List Customer Groups Lists the customer groups configured on the account, each with its ID and name. Customer groups organize channels for agencies managing multiple clients and can filter both posts and channels.
Frequently Asked Questions
What can FlowRunner do with Postiz?
FlowRunner agents can run Create Post, List Posts, and Delete Post in Postiz, plus 4 more actions.
Does connecting Postiz to FlowRunner require OAuth?
No. Postiz connects to FlowRunner with an API key, no OAuth flow required.
Can Postiz trigger a FlowRunner workflow automatically?
Postiz doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Postiz
$100 in credits. No card required. Connect in minutes.