Platforms
The target_platforms array on a content object is the list of destinations the post will be delivered to. It holds platform ids — the short lowercase strings below.
Supported platforms
Section titled “Supported platforms”| Value | Network | Account type | Notes |
|---|---|---|---|
instagram | personal | ||
facebook | page | ||
linkedin | personal | Personal profile. | |
linkedin_page | LinkedIn Page | organization | Company page. Distinct id from linkedin. |
twitter | X / Twitter | personal | The id is twitter, not x. |
threads | Threads | personal | |
tiktok | TikTok | personal | |
youtube | YouTube | personal | Video only. |
pinterest | personal | ||
snapchat | Snapchat | personal | Story publishing. |
whatsapp | business | Channel publishing. |
Values are not validated on write
Section titled “Values are not validated on write”target_platforms is accepted as a free-form array of up to 10 strings. The API does not check the values against the table above, does not check that the platform is connected, and does not check that the content type makes sense for the destination. A create with a typo like ["instgram"] returns 201.
Mistakes surface at publish time instead: the publish cron finds no matching connected account, or the platform’s own API rejects the post, and the leg fails. Subscribe to content.publish_failed to catch it, and check spelling against GET /api/v1/social-accounts before creating content.
The one write-time check is on publish: POST /api/v1/content/{id}/publish returns 422 no_target_platforms if the array is empty.
Which content types fit where
Section titled “Which content types fit where”Nothing here is enforced by the API — it is what the platforms themselves accept.
- Text without media (
text_only) works ontwitter,linkedin,linkedin_page,threads, andfacebook. Instagram, TikTok, YouTube, Pinterest, and Snapchat all require media. - Single images (
single_image) work everywhere exceptyoutube, which is video only. - Multi-image (
carousel,slideshow) works oninstagram,tiktok,linkedin, andlinkedin_page. - Vertical video (
reel,talking_head,video_hook,video_hook_demo) works oninstagram,tiktok,youtube,facebook, andsnapchat. Setaspect_ratioto9:16.
When in doubt, target one platform, publish, and read the per-platform result off the webhook before fanning out.
Per-platform overrides
Section titled “Per-platform overrides”When a caption needs to differ per network, use platform_specific — an object keyed by platform id. It is not called platform_overrides.
{ "caption": "Default caption.", "target_platforms": ["twitter", "linkedin"], "platform_specific": { "twitter": { "caption": "Short and punchy X copy." }, "linkedin": { "caption": "Long-form LinkedIn version with two extra paragraphs." } }}The API stores platform_specific as an opaque object — it does not validate the keys against target_platforms, nor the shape of each entry. Keys that do not match a targeted platform are simply ignored downstream; anything omitted from an override falls back to the top-level value.
Connecting a platform
Section titled “Connecting a platform”Connections are managed in the dashboard under Settings → Social accounts. The API cannot initiate OAuth. You can list what is connected with GET /api/v1/social-accounts (hyphenated), and receive social_account.disconnected webhook events when a connection breaks. See Events.