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.
| Platform | contentType | Media | Caption adaptation needed? | Notes |
|---|---|---|---|---|
IMAGE (required) | Required | Yes — keep under 2,200 chars | No text-only; always pass contentType | |
| Twitter / X | IMAGE | Optional | Yes — must be ≤280 chars | Links count as 23 chars |
IMAGE | Optional | Yes — can be longer and more professional | ||
IMAGE | Optional | No | ||
| Threads | IMAGE | Optional | Yes — keep under 500 chars | |
| YouTube | VIDEO | Required (video) | N/A | Cannot post image; skip or use a video |
| Bluesky | IMAGE | Optional | Yes — must be ≤300 graphemes | |
| Mastodon | IMAGE | Optional | Yes — keep under 500 chars (default) | |
| WhatsApp Business | IMAGE | Required for image posts | Yes — keep under 4,096 chars | Requires 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
| Aspect | What varies |
|---|---|
| Caption length | Twitter needs it short (280 chars). Bluesky counts graphemes. Mastodon varies by instance. |
| contentType | Only Instagram requires it explicitly. Others accept it but don’t mandate it for images. |
| First comment | Fires on Instagram, LinkedIn, YouTube. Facebook support is pending Meta API approval. Silently ignored on Threads, Bluesky, Mastodon, WhatsApp. |
| Media | All 8 platforms accept an image. YouTube would need a separate video post. |
| Character counting | Twitter links = 23 chars. Bluesky emoji = 1 grapheme. Everything else is character-based. |
| Partial failure | Expected 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:
- Call
list_accountsto find all connected account IDs - Call
validate_contenton the base caption for each platform - Identify which platforms need caption overrides (Twitter, Bluesky, etc.)
- Build the
platformOverridesmap - Call
create_postwith all account IDs - Check
get_postafter publishing - Call
retry_postif any platform showsfailed
Related guides
- Multi-platform example — deeper walkthrough with partial failure and retry
- All 9 platforms at a glance — comparison table
- Common tasks — individual task recipes