Publish everywhere from your own code
Schedule and publish to every connected channel, upload the media those posts use, and read back how they did. HTTP and JSON, one bearer key, no SDK to install.
One endpoint
A scheduled post is one request
No per-platform branching, no upload dance, no cron on your side. Send the content and the channels it goes to, and the post is on the calendar. Everything after that — the platform APIs, the retries, the failure email — is ours.
See every endpointPOST /posts
Authorization: Bearer sk_live_...
{
"content": "Shipping today.",
"accountIds": ["cm7q1w9x50001s60a4k2hb3zt", "cm7q1wc7t0002s60a9m1nd8vp"],
"mediaIds": ["cm7q1wf210003s60a7j5pe6qr"],
"scheduledAt": "2026-09-01T09:00:00Z"
}201 Created
{
"id": "cm7q1wh4k0004s60a2c8tf1ws",
"status": "SCHEDULED",
"scheduledAt": "2026-09-01T09:00:00Z",
"channels": [
{ "accountId": "cm7q1w9x50001s60a4k2hb3zt", "platform": "LINKEDIN" },
{ "accountId": "cm7q1wc7t0002s60a9m1nd8vp", "platform": "THREADS" }
]
}Channels
7 platforms, one body
Accounts are connected once in the dashboard and then only referenced by id. Where a platform genuinely needs something of its own — a Pinterest board, a TikTok privacy level, a video posting as a reel — it goes in one optional field, keyed by the account it applies to.
Built for something that runs unattended
One call, every channel
Name the accounts and send the post. 7 platforms behind one request body, with the per-platform options only where they actually differ.
We run the schedule
Scheduled posts are published by Postairo, not by your request, so nothing has to stay running on your side. Failures are retried on a backoff and the author is emailed if they still fail.
Keys that only publish
A key reaches posts, media and the queue, and reads accounts and analytics. It cannot touch the workspace, the team or billing — a leaked key cannot hand your account to anyone.
Start with a key
Create one in the dashboard under Settings, send it as a bearer token, and post. The reference has every endpoint, field and error, and is generated from the API itself.
Need an endpoint that is not there? Tell us what you are building.