create_post
Publish or schedule a social media post to Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. One call can cross-post the same text, image, or video to multiple accounts and platforms at once. Use list_social_accounts first to get account IDs. Omit scheduled_at to post immediately. Pass public media URLs via media_urls (the API downloads them). IMPORTANT for X/Twitter: links are automatically removed from the text before posting to X — this includes full URLs (http://, https://, www.) AND bare domains like foo.com or foo.io/path. X charges far more for posts that contain links. Other platforms keep their links. To share a link on X, post it in a reply or put it in the account bio. Note: is_draft saves the post in Post Bridge only — it does not create a draft on any platform. All platforms will publish immediately when the draft is later sent. TikTok's platform_configurations.tiktok.draft is a separate option that creates an actual draft on TikTok.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| media | No | Array of media IDs from previously uploaded media (use list_media to find IDs). Media files are automatically deleted after all posts using them have published — IDs become invalid after that. Media shared across multiple scheduled/draft posts is safe until the last one publishes. MEDIA REQUIRED (the post fails on these platforms with no media): youtube (exactly 1 video), tiktok (1 video, or one+ images), instagram (1-10 images/videos; a story is exactly 1; PDFs are dropped), pinterest (1-5 images — 2+ publishes as a carousel pin and ALL images must share the same width/height ratio or Pinterest rejects the pin — or 1 video). MEDIA OPTIONAL (text-only allowed): twitter/X (up to 4 images, or 1 video), facebook, linkedin (up to 20 images, or 1 video, or 1 PDF document), threads (up to 20 images/videos), bluesky (up to 4 images, or 1 video), google_business (text or a single image; no video). A post may be created with no media and have media added later via update_post — but it will not publish to a media-required platform until media exists. | |
| caption | Yes | The post caption/text content | |
| is_draft | No | If true, saves as a draft in Post Bridge only — not a draft on any platform. All platforms will publish immediately when the draft is later sent. The response includes a warning confirming this. | |
| use_queue | No | Automatically schedule the post to the next available queue slot. Cannot be used with scheduled_at. Pass true to use your saved timezone, or { timezone: '...' } to override. | |
| media_urls | No | Array of publicly accessible media URLs (images/videos). The API will download them. | |
| scheduled_at | No | ISO 8601 datetime to schedule the post (e.g. 2025-12-31T09:00:00Z). Omit to post immediately. | |
| social_accounts | Yes | Array of social account IDs to post to (get these from list_social_accounts) | |
| account_configurations | No | Per-account overrides for caption and media | |
| platform_configurations | No | Optional per-platform overrides. Keyed by platform name (pinterest, instagram, tiktok, twitter, youtube, facebook, linkedin, bluesky, threads, google_business). Only include a key for a platform you are actually posting to, and only the fields you want to override — everything else falls back to the top-level caption/media. Each platform exposes different extra fields (e.g. tiktok.draft, instagram.placement, youtube.thumbnail, google_business.cta_action_type); see each field's description for accepted values. |