POST /public/v1/posts
Create a post across one or more channels. A single request can target multiple connected channels, each with its own content.Request body
string
required
The post disposition:
now publishes immediately, schedule books it for date, and draft saves it without publishing.string
required
The target publish time in ISO 8601, interpreted as UTC, for example
2026-07-01T10:00:00Z. For now, use the current time.The API DTO requires a
date value for every post request, including draft. A draft is not published, but still carries a date used by the post record and calendar.boolean
Optional. Whether to shorten links found in the content. Defaults to
false.array
required
One entry per channel. Each entry carries its own content.
string
required
The id of the connected channel to post to. Get ids from
GET /public/v1/integrations.array
Optional tags, each an object with
value and label.Example
Posts are validated server-side with the same rules as the dashboard. If a channel’s content is invalid (for example too long, or missing a required field), the request returns
400 with a readable, per-channel message. Drafts skip most checks so you can save work in progress.Response
The endpoint returns one entry per targeted channel, each with the created post id and the target channel id:GET /public/v1/posts or GET /public/v1/posts/:id. Scheduling to Temporal starts asynchronously; a rejected channel is marked ERROR in the post record.
For safe retries, send a stable Idempotency-Key header. Reusing the same key for the same organization returns the existing result instead of creating a duplicate post.
GET /public/v1/posts
List posts scheduled or published within a date range (UTC).Query parameters
string
required
Range start, ISO 8601, for example
2026-06-01T00:00:00Z.string
required
Range end, ISO 8601, for example
2026-06-30T23:59:59Z.string
Optional channel group id to filter by.
Example
Response
GET /public/v1/posts/:id/missing
Returns the channel’s missing-media status for a post. PostSider marks a post as needing missing content when the provider reports media that is not yet available; this endpoint returns the missing content ids and URLs. It is not a general post validator - it only reports the provider-flagged missing-media case and returns an empty array otherwise.Example
PUT /public/v1/posts/:id/status
Change the status of an existing post. The accepted values are the lowercasedraft and schedule; schedule moves a draft into the publishing queue.
Request body
string
required
The new status. Valid values:
draft, schedule.Example
{ "id": "post_abc123", "state": "QUEUE" }. Any value other than draft or schedule returns 400.
DELETE /public/v1/posts/:id
Delete a post by id. Deleting a scheduled post removes it from the publishing queue. Deleting an already-published post removes it from PostSider’s records but does not remove the content from the social platform.Example
Posts that belong to a group (such as a thread) are deleted together. To delete a whole group explicitly, use
DELETE /public/v1/posts/group/:group.Approval endpoints
Approval is optional. Create a draft first, then submit it for review:{ "status": "NONE" }.
