create_post
Creates social media posts across multiple platforms, saving them as drafts for review by default; optionally schedules direct publishing at a set future time.
Instructions
Create a post in Posthive. BY DEFAULT posts are saved as DRAFTS and require manual approval in the Posthive review queue before anything is published. Nothing is published automatically unless schedule_directly is explicitly set to true with a future scheduled_time. Use list_accounts to get valid account IDs before calling this tool. Each platform has its own character limit for both the post text and the first_comment — the request is rejected with a 400 if either exceeds it for any selected account: Bluesky 300, Threads/Mastodon/Pinterest 500, Instagram/TikTok 2200, Discord 2000, LinkedIn 3000, Telegram/Tumblr 4096, YouTube 5000, Nostr/Lemmy 10000, Twitter/X 25000, Facebook 63206. Check the content and first_comment length against the shortest limit among the selected platforms before calling, and warn the user if a caption (especially a long hashtag block) would be rejected. TikTok accounts require a video in media_urls (.mp4/.mov) plus tiktok_privacy_level, or the request is rejected with a 400.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"content": "<content>",
"account_ids": "<account_ids>"
},
"name": "create_post"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The post text content. | |
| dry_run | No | When true, runs the full pipeline without real API calls. | |
| media_type | No | Instagram media type. 'post' = feed image/carousel, 'reel' = video reel, 'story' = story. Only relevant for Instagram accounts. | |
| media_urls | No | Array of already-uploaded media URLs (images or video). Upload via POST /api/v1/upload first to get URLs. | |
| account_ids | Yes | Array of account IDs to post to. Use list_accounts to get IDs. | |
| per_account | No | Per-account content overrides. Keys are account IDs. | |
| tiktok_title | No | TikTok video title/caption. Defaults to content if omitted. | |
| youtube_type | No | YouTube video type. 'short' = YouTube Short (vertical, ≤60s), 'video' = standard upload. Only relevant for YouTube accounts. | |
| first_comment | No | Optional first comment to fire immediately after the post goes live. | |
| repeat_ends_at | No | ISO 8601 datetime after which no more repeat occurrences are created. Omit for indefinite repeating. | |
| scheduled_time | No | ISO 8601 datetime for when the post should go live. Required when schedule_directly is true. | |
| repeat_interval | No | Repeat this post automatically after each successful publish. Spawns the next occurrence at the same time. | |
| schedule_directly | No | When true, post is scheduled directly and will publish at scheduled_time without manual approval. Requires scheduled_time. Defaults to false (saves as draft). | |
| tiktok_your_brand | No | Mark as promoting your own brand for TikTok commercial disclosure. | |
| tiktok_disable_duet | No | Disable duets on the TikTok video. Defaults to true. | |
| tiktok_privacy_level | No | Required for TikTok accounts. Who can view the video (e.g. 'PUBLIC_TO_EVERYONE', 'SELF_ONLY', 'MUTUAL_FOLLOW_FRIENDS') — use the exact value from the account's TikTok creator settings. | |
| tiktok_disable_stitch | No | Disable stitch on the TikTok video. Defaults to true. | |
| tiktok_branded_content | No | Mark as branded content (paid partnership) for TikTok commercial disclosure. | |
| tiktok_disable_comment | No | Disable comments on the TikTok video. Defaults to true. |