Posts
Create Post
Schedule or publish text-only, video, or slideshow posts to connected accounts.
POST
Schedule or publish immediately to one or more connected accounts.
YouTube —
Requires a video post to a YouTube account.
TikTok — top-level
Requires BYO TikTok accounts and media (video or slideshow). Hosted TikTok accounts cannot use
TikTok-specific settings.
For video posts, the merged publish text built from
Pinterest — top-level
Requires at least one Pinterest account and image media.
X —
Instagram —
Both keys map to the same stored settings. If both are sent,
Facebook —
LinkedIn —
Both keys map to the same stored settings. If both are sent,
Bluesky —
No provider-specific fields. Send
Before you post
- Use an API key for a workspace with an active Creator, Professional, or Business subscription.
- Call
GET /accountsand pick account UUIDs. - Check each account’s
capabilities.supported_content_kindsandcaption_limit. - Build the payload below. Only include provider settings for platforms you are actually targeting.
Request body
Shared caption text. Final length is checked per targeted account after lookup
(hosted accounts: 500 chars max).
One to ten account objects:
[{ "id": "<uuid-from-/accounts>" }].Optional.
video, slideshow, or null/omit for text-only posts.ISO 8601 datetime with timezone offset (for example
2026-05-21T15:00:00Z).
Omit or send a time within 30 seconds of now for immediate publish (status: pending).
For true scheduled posts, the time must be at least 2 minutes in the future.Recommended idempotency key (max 128 chars). Same key + same payload replays the original
post (
200, duplicate: true). Same key + different payload returns 409 create_failed.
If omitted, the API dedupes from a SHA-256 fingerprint of the request body instead; a conflicting
replay also returns 409 create_failed.TikTok-only. A TikTok post URL used to resolve the track. Rejected when any non-TikTok account
is selected, including Instagram.
Provider settings
Usesettings.<provider> for X, Instagram, Facebook, LinkedIn, Bluesky,
and YouTube.
For TikTok and Pinterest on create, use the top-level tiktok and pinterest
objects — not settings.tiktok or settings.pinterest. Top-level fields run the full
create-time validation (BYO-only TikTok, hosted TikTok rejection, MEDIA_UPLOAD rules, and
field limits).
Only send settings for providers present in your accounts list. Unknown settings keys return
422 invalid_payload.
YouTube — settings.youtube
Requires a video post to a YouTube account.
TikTok — top-level tiktok
Requires BYO TikTok accounts and media (video or slideshow). Hosted TikTok accounts cannot use
TikTok-specific settings.
For video posts, the merged publish text built from caption, tiktok.title, and
tiktok.description must stay ≤ 2,200 characters combined.
Pinterest — top-level pinterest
Requires at least one Pinterest account and image media.
X — settings.x or settings.twitter
Instagram — settings.instagram or settings.instagram-standalone
Both keys map to the same stored settings. If both are sent, instagram-standalone wins.
Facebook — settings.facebook
LinkedIn — settings.linkedin or settings.linkedin-page
Both keys map to the same stored settings. If both are sent, linkedin-page wins.
Bluesky — settings.bluesky
No provider-specific fields. Send {} or omit.
Settings key reference
Limits (quick reference)
- Video: MP4/MOV/M4V/AVI, under 100MB. Hosted accounts: 15–60s when duration is provided.
- Non-premium X video: duration metadata required; max 140 seconds.
- Slideshow: 1–35 images, each under 5MB.
- Caption caps (BYO): X 280 (4,000 for premium accounts); Instagram 2,200; TikTok video 2,200 / photo description 4,000; LinkedIn 3,000; Pinterest 800; YouTube 5,000 bytes; Facebook 63,206.
Response
Fresh creates return201. Idempotent replays return 200.
duplicate: true appears on idempotent replays. warnings are non-blocking (for example missing
video duration metadata).
