Posts API

Create, schedule, and delete posts programmatically.

Updated May 12, 2026·1 min read

The Posts API is the main publishing surface. Create a draft, schedule it, or publish immediately to any combination of connected channels.

Create a post

bash
curl https://api.unison.ink/v1/posts \
  -H "Authorization: Bearer unison_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "channels": ["x", "bluesky", "linkedin"],
    "body": "Shipping our integration with Unison today.",
    "scheduledAt": "2026-06-01T14:30:00Z"
  }'

Returns a 201 Created with the new post's id. Omit scheduledAt to publish immediately.

Per-channel overrides

Pass an overrides object keyed by channel slug to send a different body per network:

json
{
  "channels": ["x", "linkedin"],
  "body": "Default body shipped to every channel.",
  "overrides": {
    "linkedin": "A longer LinkedIn-flavoured version with more context."
  }
}

Status

GET /v1/posts/{id} returns the publish status:

json
{
  "id": "post_abc123",
  "status": "scheduled",
  "scheduledAt": "2026-06-01T14:30:00Z",
  "channels": ["x", "bluesky", "linkedin"],
  "publishResults": []
}

After publish time, publishResults contains a per-channel outcome.

Errors

  • 400 invalid_channels: at least one channel slug is unknown or not connected.
  • 402 plan_limit: the request would exceed your plan's connected channel cap. Upgrade or remove a channel.
  • 429 rate_limited: standard token-bucket. Retry after the Retry-After header.

Was this helpful?