Create a post
Saves a draft; with scheduledAt it's scheduled, with publishNow Postel publishes it within a minute (the response comes back at once with status scheduled; post.published or post.failed events say how it went). Scheduling and publishing need a paid plan; drafts work on every plan.
When the workspace needs approval, a scheduled post waits for an owner or admin (status pending_approval) and publishNow is refused with approval_required. Text is checked against the account's real limit per part before anything is saved. Media URLs are downloaded and attached to the first part. If scheduling fails, the draft is removed again, so a retry can't double up.
Send an Idempotency-Key header to make retries safe: the same key within 24 hours returns the first response instead of creating another post.
Try it
Authorization
bearerAuth A Postel API key, Authorization: Bearer pstl_…. Create one in Postel under Settings → API & MCP; it acts for the workspace it was made in.
In: header
Headers
Makes retries safe. The first request with a key runs; the same key from the same workspace within 24 hours gets that first response back (with Idempotent-Replayed: true) instead of creating again. Use a value unique to the run, up to 255 characters. Only successes are remembered. A key still running answers 409 request_in_progress; a key reused with a different body answers 422 idempotency_key_reused.
length <= 255Request body
application/json
Network to post to; the live ones are x, linkedin, bluesky, mastodon, youtube, tiktok. GET /v1/channels lists them with their accounts.
"x" | "linkedin" | "linkedin_page" | "bluesky" | "mastodon" | "threads" | "youtube" | "instagram" | "tiktok"The post. On X, Bluesky and Mastodon a line with only --- starts the next part of a thread.
length <= 25000A thread, one item per part (X, Bluesky, Mastodon). Use instead of text.
1 <= items <= 25Public image or video URLs, added to the first part. X: up to 4 images, or one video or GIF. LinkedIn: images, or one video.
items <= 4LinkedIn only: a comment Postel posts under the post right after it goes out. Up to 1250 characters.
length <= 1250Schedule it for this time (needs a paid plan). Leave out to save a draft.
date-timePublish right away (needs a paid plan)
Responses
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json