Platforms

PostFuze publishes to eleven networks through a single POST /api/v1/posts call. You write the post content once, list the accounts you want it to land on, and attach an optional per-platform config map for the network-specific options (a Pinterest board_id, a YouTube privacyStatus, an Instagram story flag, and so on). Each account becomes an independent target with its own status, so one post can succeed on X while it is still uploading to YouTube.

Supported networks

The platform value is the canonical identifier used everywhere in the API — in POST /social-networks, in the config map keys, and in each target's platform field. Note that Google Business uses the underscore form google_business.

Platformplatform idPost typesChar limitFirst commentConfig fields
X (Twitter)xtext, thread, image, video280 (free) / 25,000 (premium)Yesnone
LinkedInlinkedintext, image, video, article (personal & org)~3,000Yesnone
Instagraminstagramphoto, carousel (2–10), video / reel, story2,200 captionYespublishAsStory
TikToktiktokvideo (direct post / inbox draft)2,200 captionn/aprivacy_level, disable_comment, …
YouTubeyoutubevideo, Shorttitle 100 / desc 5,000n/aisShort, privacyStatus, …
Facebookfacebooktext, image, video (Page)not enforcedYesnone
Threadsthreadstext, image, video, reply-thread500Yesnone
Blueskyblueskytext, image300Yesnone (app-password auth)
Pinterestpinterestsingle-image, multi-image, video pin (no text-only)title 100 / desc 800Noboard_id (required), title, …
Google Businessgoogle_businessSTANDARD, EVENT, OFFER1,500NotopicType, callToAction, …
Redditredditself (text), link, imagetitle 300Yessubreddit (required), title, flair_id, …

The per-platform config map

When a post fans out to accounts on different networks, the top-level config object is keyed by platformid. Each account's target picks up config[platform] as its own settings. Keys for platforms not in the post are simply ignored.

POST /posts — one payload, several networks
{
	"content": "Launch day is here 🚀",
	"accounts": ["acct_x_01", "acct_pin_01", "acct_yt_01"],
	"config": {
		"pinterest": { "board_id": "9876543210", "title": "Launch day", "link": "https://example.com" },
		"youtube":   { "isShort": true, "privacyStatus": "public", "categoryId": "22" }
	}
}

The X account in this example receives no config (it has no configurable fields), the Pinterest target reads config.pinterest, and the YouTube target reads config.youtube. See each platform page for its exact field table.

Media constraints at a glance

PlatformMediaNotable limits
Ximage, videoBounded by your X API tier
Instagramphoto, carousel, video / reel, storyStory video MP4/MOV 3–60s ≤100MB 9:16; business/creator only; 100 posts / 24h
Facebookimage, videoImage ≤10MB 100×100–4096×4096; video ≤4GB 1s–240min; media must be public HTTPS
YouTubevideoMP4 recommended; ≤128GB / 12h; >15min needs a verified channel; resumable chunks
Pinterestimage, videoAt least one media item required; public HTTPS images; video uses an async pipeline
Google Businessphoto, videoPublic URLs only; media kind auto-detected from the file extension
BlueskyimageText and images

Connecting an account

Before you can publish, bring your own OAuth app credentials with POST /social-networks, then start the hosted connect flow. Bluesky is the exception — it authenticates with a handle and an app password rather than OAuth. Each platform page below lists the OAuth scopes PostFuze requests.