Create post
create_postCreate a draft, schedule a post, or publish now with publishNow=true using server time. Read account_context before batches to check plan, quota and maxScheduledDate. Publish Now consumes monthly publication quota but no deferred queue slot, so a full scheduled queue does not block it when monthly quota remains. FASTEST for media posts: pass mediaUrls (public https URLs — Publora downloads them server-side) together with scheduledTime or publishNow=true in one call; platforms like Instagram, TikTok, YouTube require media before scheduling. For a ChatGPT file, omit scheduledTime to create a draft (without publishNow=true), then use attach_media. Manual alternative for local files: omit scheduledTime to create a draft, upload media with get_upload_url + HTTP PUT + complete_media (once per file), verify ready with get_post, then call update_post with status 'scheduled' and scheduledTime, or publishNow=true.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Post text content. On X and Threads, long content auto-splits into a chain; a standalone --- line between paragraphs sets a break, and media attach only to the first part. Threads parts are limited to 500 characters; the connection needs threads_manage_replies, and THREADS_PERMISSION_REQUIRED means reconnect in Publora Channels. Thread part and numbering settings are not API/MCP inputs. After partial publication, inspect get_post and never recreate or resubmit the whole chain. For an unknown outcome, check the live account before further action. | |
| mediaUrls | No | Optional array (max 10) of public https URLs of images/videos to attach. Downloaded and validated server-side (jpeg, png, gif, webp, tiff, avif, mp4, mov, webm; images ≤25MB, videos ≤150MB). Must be DIRECT file URLs — share-page links (Google Drive, Dropbox pages) will fail. | |
| platforms | Yes | Array of platform identifiers in the exact format returned by list_connections. Each value must be the 'platformId' field copied verbatim from a connection object, e.g. ['twitter-1985855679454986200', 'linkedin-abc123']. IMPORTANT: Do NOT invent or guess IDs — always call list_connections first and use the exact platformId values. Exception: 'publora-playground' is a connection-test target that requires no real connection — the post is acknowledged and discarded, nothing is published; when used it must be the ONLY entry. | |
| publishNow | No | Set true to publish immediately using server time and trigger publication processing. Reserves monthly publication quota but does not occupy the deferred scheduled queue. Omit scheduledTime; a future time is rejected. False or omitted retains the existing draft/scheduling behavior. Publication remains asynchronous; inspect get_post for progress. | |
| firstComment | No | Legacy single first comment under your own post. Supported: linkedin (profiles and Pages), twitter, threads, bluesky, mastodon; other targets are skipped. Best effort: read firstCommentResult via get_post. Cannot be combined with firstComments or added after publishing. | |
| firstComments | No | Up to 3 ordered first comments under your own post, each { text, platforms?, delaySeconds? }. delaySeconds is an integer 0–86400; omitted means 0. The next comment runs only after the previous one posts, on a scheduler tick; a failed comment stops later ones. Platform types (not connection keys) and text limits follow firstComment. Best effort, no blind retries. Read per-target firstCommentResults via get_post. Cannot be combined with firstComment or added after publishing. | |
| scheduledTime | No | Optional ISO 8601 date-time with UTC Z or offset. Choose a future time within the schedule horizon returned by account_context; inspect returned warnings and effective scheduledTime. Omit to create a draft unless publishNow=true. With publishNow=true, omit this field; a future scheduledTime is rejected. Media-requiring platforms need mediaUrls in the same call or uploaded ready media before scheduling. | |
| idempotencyKey | No | Optional retry key. Reusing it with the identical request replays the original response without creating another post. | |
| platformSettings | No | Per-platform options keyed by platform. Example: { instagram: { coverUrl: 'https://.../cover.jpg' }, youtube: { title: 'My video', tags: ['topic'] }, tiktok: { viewerSetting: 'SELF_ONLY' }, twitter: { replyTo: 'https://x.com/user/status/123' } }. Also supports telegram.disableNotification/disableWebPagePreview/protectContent, threads.replyControl, linkedin.repostParentUrn/repostVisibility. For TikTok photos, tiktok.autoAddMusic lets TikTok choose music; no track selection or preview. Unknown platforms or fields are rejected. |