Authorization header with no scheme prefix. For a self-hosted instance, also set the account’s base_url to the instance’s https URL, such as https://postiz.example.com (the plugin adds /api/public/v1). For Postiz Cloud, set it to https://api.postiz.com. An empty base_url also reaches Cloud, but Corsair then reports the account as partly set up. The baseUrl plugin option does the same for an inline key.
What to know before you publish:
- The UI says channel, the API says integration. Both mean one connected social account, and this plugin uses the API’s word.
- Three ways to create a post.
posts.createtakestype: 'draft', which saves without publishing;'schedule', which queues fordate; or'now', which publishes as soon as Postiz accepts it. A draft may have no channels attached, and anything that will publish needs at least one, which the plugin enforces before sending. - Each platform has its own settings. A post carries a
settingsobject whose__typenames the platform, and the rest follows that platform’s schema. The plugin passes it through rather than guessing the fields. - Threads. One post item’s
valueis an array, so several entries make a thread, andintersets the minutes between them. - Media must be uploaded first.
media.uploadFromUrlcopies a public file into the library; then reference it in a post’simageby itsidandpath. A body over 50 MB is rejected with 413. - Rate limit. The create-post route allows 90 to 100 requests an hour for the whole instance, and scheduling several posts in one request is the way to stay inside it. Core retries a 429 three times, honouring Retry-After.
- Scheduling is publishing.
posts.changeStatuswithstatus: 'schedule'queues a post to go out at its stored date, so it is marked destructive likeposts.create. - Paging.
media.listpages from 1 and returnspages;notifications.listpages from 0 and returnshasMore. - Deleting.
posts.deleteremoves every post in the group. A post already published stays live on the platform, because deleting here only forgets it. - Webhooks. Postiz can notify another system when it publishes, but this plugin does not handle inbound deliveries.
- 11 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
Store the Postiz API key before the first call: More: API Key
pnpm corsair setup --plugin=postiz --tenant=acme api_key=<your-key> (leave out --tenant without multiTenancy), or pass it as key in the plugin options. With Hub, each tenant enters their own key on the connect page. See API key auth.4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List the connected channelsWhat’s next
API reference
Every
postiz.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.