Common posting tasks
Quick recipes organized by what you want to accomplish, not by platform. Each task links to platform-specific guides for caveats.
Post a single image
Works on: Instagram, Twitter/X, LinkedIn, Facebook, Threads, Bluesky, Mastodon
create_post(
content: "Check this out 📸",
accountIds: ["acc_your_account_id"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/photo.jpg"]
)JSON tool-call equivalent:
{
"tool": "create_post",
"arguments": {
"content": "Check this out 📸",
"accountIds": ["acc_your_account_id"],
"contentType": "IMAGE",
"mediaUrls": ["https://cdn.example.com/photo.jpg"]
}
}Tell your agent: “Post this image to my [platform] account: [https://…]. Caption: [text].”
Platform notes: Instagram requires contentType: "IMAGE". YouTube does not support standalone image posts.
Post a carousel
Works on: Instagram (2–10 items), LinkedIn (up to 20), Threads, Facebook
create_post(
content: "Swipe through →",
accountIds: ["acc_your_account_id"],
contentType: "CAROUSEL",
mediaUrls: [
"https://cdn.example.com/slide-1.jpg",
"https://cdn.example.com/slide-2.jpg",
"https://cdn.example.com/slide-3.jpg"
]
)JSON tool-call equivalent:
{
"tool": "create_post",
"arguments": {
"content": "Swipe through →",
"accountIds": ["acc_your_account_id"],
"contentType": "CAROUSEL",
"mediaUrls": [
"https://cdn.example.com/slide-1.jpg",
"https://cdn.example.com/slide-2.jpg",
"https://cdn.example.com/slide-3.jpg"
]
}
}Tell your agent: “Post a carousel to my [platform] account with these images: [url1, url2, url3]. Caption: [text].”
Platform notes: CAROUSEL contentType is required on Instagram. LinkedIn does not use CAROUSEL as a contentType — pass IMAGE with multiple URLs instead.
Post a Reel or short-form video
Works on: Instagram (REEL), YouTube (VIDEO ≤60s 9:16 = Shorts), TikTok (when live)
create_post(
content: "Our latest drop 🔥",
accountIds: ["acc_instagram_abc123"],
contentType: "REEL",
mediaUrls: ["https://cdn.example.com/reel.mp4"]
)JSON tool-call equivalent:
{
"tool": "create_post",
"arguments": {
"content": "Our latest drop 🔥",
"accountIds": ["acc_instagram_abc123"],
"contentType": "REEL",
"mediaUrls": ["https://cdn.example.com/reel.mp4"]
}
}Tell your agent: “Post this video as a Reel to Instagram account [acc_id]: [https://…video.mp4 ]. Caption: [text].”
Platform notes: Instagram Reels require contentType: "REEL". YouTube Shorts are detected automatically when the video is ≤60 seconds in 9:16 format — use contentType: "VIDEO".
Schedule a post
Works on: all platforms
create_post(
content: "Launch day 🚀",
accountIds: ["acc_your_account_id"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/launch.jpg"],
scheduledFor: "2026-06-01T15:00:00Z"
)JSON tool-call equivalent:
{
"tool": "create_post",
"arguments": {
"content": "Launch day 🚀",
"accountIds": ["acc_your_account_id"],
"contentType": "IMAGE",
"mediaUrls": ["https://cdn.example.com/launch.jpg"],
"scheduledFor": "2026-06-01T15:00:00Z"
}
}Tell your agent: “Schedule a post to [platform] account [acc_id] for [date/time ISO 8601]. Content: [text]. Media: [url].”
scheduledFor must be an ISO 8601 datetime in UTC. Omit scheduledFor to post immediately.
Save as draft
create_post(
content: "Draft — needs review before publishing.",
accountIds: ["acc_your_account_id"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/photo.jpg"],
saveAsDraft: true
)Tell your agent: “Save this as a draft on [platform] account [acc_id]. Don’t publish yet. Caption: [text]. Media: [url].”
Add a first comment
Works on: Instagram, LinkedIn, Facebook, YouTube, Twitter/X
create_post(
content: "New product just dropped.",
accountIds: ["acc_your_account_id"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/product.jpg"],
firstComment: "Shop the link in bio 👆 #newdrop",
firstCommentDelay: 30
)Tell your agent: “Post to [platform] [acc_id]. Caption: [text]. Add a first comment 30 seconds after publishing: [comment text].”
firstCommentDelay is in seconds (0–3600). Set to 0 to post the comment immediately after publishing.
Platform notes: Bluesky, Threads, and Mastodon do not support first comments — the parameter is accepted but ignored for those platforms.
Validate before posting
validate_content(
content: "Your caption here",
platforms: ["INSTAGRAM", "TWITTER"]
)JSON tool-call equivalent:
{
"tool": "validate_content",
"arguments": {
"content": "Your caption here",
"platforms": ["INSTAGRAM", "TWITTER"]
}
}Tell your agent: “Before creating the post, validate this caption against Instagram and Twitter: [caption text].”
Returns per-platform errors (blocks posting) and warnings (advisory). Always fix errors before calling create_post.
Retry a failed post
retry_post(postId: "post_abc123")JSON tool-call equivalent:
{
"tool": "retry_post",
"arguments": { "postId": "post_abc123" }
}Tell your agent: “Check post [post_id] — if it failed, retry it.”
Works on posts with status failed (all platforms failed) or partial (some platforms failed). Successfully-published platforms are never re-posted. If a platform has exhausted 3 retries, see the Recovery playbook.
Post the same content to multiple platforms
create_post(
content: "Shared base caption for all platforms.",
accountIds: [
"acc_twitter_abc123",
"acc_linkedin_abc123",
"acc_instagram_abc123"
],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/photo.jpg"],
platformOverrides: {
"TWITTER": { "content": "Short version for Twitter! 🐦 #launch" },
"LINKEDIN": { "content": "Detailed professional version for LinkedIn with full context and a call to action for our professional network." }
}
)Tell your agent: “Post to my Twitter, LinkedIn, and Instagram accounts simultaneously. Base caption: [text]. For Twitter, shorten to: [short text]. For LinkedIn, use: [professional text].”
Platform notes: Each platform gets its own publish attempt. Failures on one platform do not prevent others from publishing. Check get_post to see per-platform results.
See the full Multi-platform example for a complete walkthrough.