POST /v1/posts, with per-platform behavior controlled by the platform_data field. This page compares capabilities across all platforms at a glance. For full details on a specific platform, see the deep-dive pages linked below.
Use POST /v1/posts/validate to check constraints before publishing, and GET /v1/posts/validate to fetch platform-specific constraints (e.g. TikTok’s per-creator privacy levels and duration limits).
Attaching media
Photos and videos are attached through the orderedmedia array. Each item sets a source_type: an uploaded library file (media_id), a public URL we fetch at publish time (url), or media you uploaded to the platform yourself (platform_attachment_id, supported on Instagram, Threads, LinkedIn, LinkedIn Page, and X/Twitter). The older flat media_ids array still works and is equivalent to a list of media_id sources. See the Media uploads guide for upload paths, URL rules, and storage limits.
Capability matrix
Retrieving a post
GET /v1/posts/{pid} and GET /v1/posts/{pid}/metrics accept either identifier:
- The SocialAPI post ID (UUID) returned when the post was created.
- A platform post ID: the platform’s own ID for a published target, for example a TikTok video ID or a Facebook post ID.
409 with code ambiguous_post_id; retry with the SocialAPI post ID. Mutating endpoints (update, delete, publish, retry, unpublish) accept only the SocialAPI post ID.
Deleting posts
DELETE /v1/posts/{pid} is best-effort and never lets the dashboard drift from the platform.
For a draft, scheduled, or failed post (nothing was ever published), the post is removed locally. For a published post, SocialAPI calls each platform’s delete API in turn:
- If the platform deletes the copy, that target is cleared.
- If the platform does not support deletion (for example TikTok) or the delete call fails, that copy stays live and the post is kept (shrunk to the targets that are still live), not removed. A post is fully removed only when no live copy remains.
deleted is true only when the post was fully removed. Each entry in results has an outcome of deleted, not_supported, or failed. A failed target can be retried; a not_supported target must be removed on the platform itself. See DELETE /v1/posts/{pid} in the API reference for the full schema.
Core field handling
How each platform interprets the sharedPostDraft fields:
Platform-specific platform_data summary
Each platform accepts optional fields inside platform_data.<platform>. For the full reference, see the per-platform page.
Pass these inside each target’s platform_data object (per-target overrides supported).
Required OAuth scopes
Per-platform deep dives
Images, videos, reels, carousels. Meta Graph API.
Text, photo, and video posts. Facebook Pages API.
Organization page posts. LinkedIn Marketing API.
Threads
Text, image, video posts. Threads API.
TikTok
Video and photo carousel posts. TikTok Content Posting API.
YouTube
Video uploads. YouTube Data API v3.
X / Twitter
Tweets with text or images. X API v2.
Business Profile local posts. Google My Business API v4.
Zalo
Official Account articles and videos. Zalo Official Account Open API.