Skip to main content
The PostSider public REST API gives you full programmatic control over your social publishing workflow. Everything you can do in the dashboard, such as scheduling posts, connecting channels, uploading media, and reading analytics, is available through versioned, stable endpoints under the /public/v1 prefix. All requests are authenticated with your organization API key, and responses are JSON.

Base URL

All endpoints are relative to your PostSider instance:
https://your-instance.com/public/v1
On PostSider Cloud the base URL is:
https://api.postsider.com/public/v1
On a self-hosted instance the public API is served under /api behind the bundled nginx, so your base URL is your domain plus /api/public/v1, for example https://social.example.com/api/public/v1.

Authentication

Every request includes your API key in the Authorization header. There is no Bearer prefix; pass the raw key value:
curl -H 'Authorization: your-api-key' \
  https://api.postsider.com/public/v1/integrations
Generate and manage keys from Settings, then API in the dashboard. Each key is scoped to your organization. See Authentication for details.
Treat your API key like a password. Anyone with it has full access to your organization’s posts, channels, and media. Rotate a key immediately if it is exposed.

Rate limiting

The API allows 60 requests per minute per organization by default (self-hosted operators can change this with the API_LIMIT environment variable). Every response includes:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
Retry-AfterSeconds to wait before retrying, sent only on a 429
When you exceed the limit, the API returns 429 Too Many Requests. Back off for the number of seconds in Retry-After before retrying.

Request and response format

Send request bodies as JSON with the Content-Type: application/json header. Responses are JSON. File uploads to /upload use multipart/form-data instead.

Error codes

The API uses standard HTTP status codes. The response body carries a msg with more detail where available.
CodeMeaning
400Invalid request, or a post failed channel validation (the message says which channel and why)
401Missing or invalid API key
402Plan limit reached, for example your channel or monthly post quota
404Resource not found
429Rate limit exceeded; retry after Retry-After

Endpoints

Posts

Create, schedule, list, validate, and delete posts across connected channels.

Channels

List channels and groups, connect or disconnect accounts, and read channel analytics.

Media

Upload images and video to the PostSider media library.

Full endpoint reference

MethodPathDescription
POST/public/v1/postsCreate, schedule, or publish a post
GET/public/v1/postsList posts in a date range
GET/public/v1/posts/:id/missingPer-channel validation for a post
PUT/public/v1/posts/:id/statusChange a post’s status
DELETE/public/v1/posts/:idDelete a post
DELETE/public/v1/posts/group/:groupDelete a post group
GET/public/v1/find-slot/:idNext free queue slot for a channel
GET/public/v1/integrationsList connected channels
GET/public/v1/groupsList channel groups
GET/public/v1/social/:integrationStart connecting a new channel
DELETE/public/v1/integrations/:idDisconnect a channel
GET/public/v1/analytics/:integrationChannel analytics
GET/public/v1/analytics/post/:postIdPost analytics
GET/public/v1/notificationsList notifications
POST/public/v1/uploadUpload a media file
POST/public/v1/upload-from-urlImport media from a URL
If you use Node.js or TypeScript, the @postsider/node SDK wraps these endpoints with a fully typed client. See the SDK Overview to get started.