Skip to Content
GuidesSame post across all 9 platforms

Same post across all 9 platforms

What happens when you post the same core content to all 9 live platforms at once? This guide walks through a real multi-platform post — showing what adapts per platform, what fails, and how to handle it.


The base content

Campaign: Product launch announcement
Core message: “Announcing VoxBurst 2.0 — unified social scheduling across every platform.”
Media: One JPEG image at https://cdn.example.com/v2-launch.jpg
Goal: Post now to all 9 connected accounts


What each platform receives

Before creating the post, it helps to understand what each platform needs.

PlatformcontentTypeMediaCaption adaptation needed?Notes
InstagramIMAGE (required)RequiredYes — keep under 2,200 charsNo text-only; always pass contentType
Twitter / XIMAGEOptionalYes — must be ≤280 charsLinks count as 23 chars
LinkedInIMAGEOptionalYes — can be longer and more professional
FacebookIMAGEOptionalNo
ThreadsIMAGEOptionalYes — keep under 500 chars
YouTubeVIDEORequired (video)N/ACannot post image; skip or use a video
BlueskyIMAGEOptionalYes — must be ≤300 graphemes
MastodonIMAGEOptionalYes — keep under 500 chars (default)
WhatsApp BusinessIMAGERequired for image postsYes — keep under 4,096 charsRequires Business API access; TEXT posts also supported

YouTube requires a video. If you are posting an image-based launch, skip YouTube or prepare a separate video asset. Including a YouTube account in accountIds with only an image will fail for that platform while the others succeed.


The create_post call

Targeting 8 platforms (skipping YouTube for this image-based post):

create_post( content: "Announcing VoxBurst 2.0 — unified social scheduling across every platform.", accountIds: [ "acc_instagram_abc", "acc_twitter_def", "acc_linkedin_ghi", "acc_facebook_jkl", "acc_threads_mno", "acc_bluesky_pqr", "acc_mastodon_stu", "acc_whatsapp_vwx" ], contentType: "IMAGE", mediaUrls: ["https://cdn.example.com/v2-launch.jpg"], platformOverrides: { "TWITTER": { "content": "VoxBurst 2.0 is live 🚀 One tool. Every platform. #SocialMedia #Launch" }, "LINKEDIN": { "content": "Today we are shipping VoxBurst 2.0.\n\nWe rebuilt scheduling from the ground up — faster, more reliable, and truly cross-platform. If you manage social content at scale, this changes the workflow." }, "THREADS": { "content": "VoxBurst 2.0 drops today. Unified scheduling. 9 platforms. One post." }, "BLUESKY": { "content": "VoxBurst 2.0 — schedule across every platform from one place. Shipping today." }, "MASTODON": { "content": "VoxBurst 2.0 is out. Cross-platform social scheduling, now unified. #VoxBurst #OpenWeb" }, "WHATSAPP": { "content": "VoxBurst 2.0 is live — unified scheduling across every platform. Tap the image for details." } }, firstComment: "#VoxBurst20 #ProductLaunch #SocialMedia", firstCommentDelay: 60 )

What gets the base caption: Instagram and Facebook (both support long captions and the base text fits).
What gets an override: Twitter/X (280-char limit), LinkedIn (professional tone), Threads (500-char limit), Bluesky (300-grapheme limit), Mastodon (500-char default), WhatsApp (conversational tone, no hashtags).
First comment: Instagram, LinkedIn, and YouTube support it. Facebook support is pending Meta API approval. Threads, Bluesky, Mastodon, and WhatsApp will silently ignore it.


What the response looks like

{ "id": "post_launch_v2", "status": "publishing", "platforms": [ { "platform": "instagram", "status": "pending" }, { "platform": "twitter", "status": "pending" }, { "platform": "linkedin", "status": "pending" }, { "platform": "facebook", "status": "pending" }, { "platform": "threads", "status": "pending" }, { "platform": "bluesky", "status": "pending" }, { "platform": "mastodon", "status": "pending" }, { "platform": "whatsapp", "status": "pending" } ] }

All 8 platforms are queued. Check results after a few seconds:

get_post(postId: "post_launch_v2")

A realistic outcome (some succeed immediately, one fails):

{ "status": "partial", "platforms": [ { "platform": "instagram", "status": "published", "platformPostUrl": "https://www.instagram.com/p/..." }, { "platform": "twitter", "status": "published", "platformPostUrl": "https://x.com/..." }, { "platform": "linkedin", "status": "published", "platformPostUrl": "https://www.linkedin.com/feed/update/..." }, { "platform": "facebook", "status": "published", "platformPostUrl": "https://www.facebook.com/..." }, { "platform": "threads", "status": "published", "platformPostUrl": "https://www.threads.net/..." }, { "platform": "bluesky", "status": "published", "platformPostUrl": "https://bsky.app/profile/.../post/..." }, { "platform": "mastodon", "status": "failed", "error": "Instance temporarily unavailable", "retryCount": 0 }, { "platform": "whatsapp", "status": "published", "platformPostUrl": null } ] }

7 published, 1 failed (Mastodon instance transient error). Status is partial.

retry_post(postId: "post_launch_v2")

Mastodon re-queues. Instagram through Bluesky are untouched.


Key observations across platforms

AspectWhat varies
Caption lengthTwitter needs it short (280 chars). Bluesky counts graphemes. Mastodon varies by instance.
contentTypeOnly Instagram requires it explicitly. Others accept it but don’t mandate it for images.
First commentFires on Instagram, LinkedIn, YouTube. Facebook support is pending Meta API approval. Silently ignored on Threads, Bluesky, Mastodon, WhatsApp.
MediaAll 8 platforms accept an image. YouTube would need a separate video post.
Character countingTwitter links = 23 chars. Bluesky emoji = 1 grapheme. Everything else is character-based.
Partial failureExpected and normal. retry_post handles it — never re-posts successful platforms.

Tell your agent

“Post our launch announcement to all connected accounts except YouTube. Use the shared image. Adapt the caption for each platform’s character limit and tone. Add a first comment with hashtags 60 seconds after publishing on platforms that support it.”

The agent will:

  1. Call list_accounts to find all connected account IDs
  2. Call validate_content on the base caption for each platform
  3. Identify which platforms need caption overrides (Twitter, Bluesky, etc.)
  4. Build the platformOverrides map
  5. Call create_post with all account IDs
  6. Check get_post after publishing
  7. Call retry_post if any platform shows failed

Last updated on