Posts
Create post
Create a new draft post targeting one or more social accounts. Returns the created post with status 201.
POST
Creates a
draft. To schedule or publish, follow up with PUT /posts/{post} using status=scheduled or status=publishing.
Per-platform settings go in
platforms[].meta and are accepted here on create. A few are required to publish — Pinterest board_id, TikTok privacy_level (string enum values like "PUBLIC_TO_EVERYONE"), Discord channel_id — but they’re only enforced when you move the post to scheduled/publishing, not on this draft create. Full key list, limits, and examples: PUT /posts/{post} → Per-platform meta.Request
array
required
At least one platform entry (
min:1). Each entry pins this post to a connected social account and a content_type.string
The post body shared across all platforms. Up to 10 000 characters at the API level (per-platform hard caps are enforced separately — see
GET /content-types). Defaults to empty. For Pinterest, this is the pin description.array
Optional media to attach on create. Each item must include a public
url — the API downloads and hosts it.Prefer dedicated endpoints when practical: POST /posts/{post}/media (file) or POST /posts/{post}/media/from-url.string
ISO 8601 datetime in the future (e.g.
2026-05-10T15:30:00Z). Stored on the draft so a follow-up PUT with status=scheduled doesn’t have to repeat it. If omitted, the draft has scheduled_at: null (no default time).array
Workspace label UUIDs to attach. Must belong to the same workspace as the API key.
Response
Returns201 with the created post (including platforms[].meta). Response shape matches GET /posts/{post}. Labels may not be eager-loaded on create — call GET if you need them immediately after setting label_ids.

