Update Post
update_postModify draft or scheduled social media posts in place—update text, media, schedule, or target platforms while keeping omitted fields unchanged. Published posts are protected from edits.
Instructions
Update a DRAFT or SCHEDULED post in place; any other status fails with "Cannot edit post in current state", so published posts cannot be changed. Updates are partial: text, contentType, scheduledAt, timezone, and thumbnail fields you omit keep their values. The exception is platforms: sending it rebuilds the post's target set from this request alone, so include every connection-id array and platform config you want to keep (TikTok with privacyLevel, Pinterest with boardId); omitting platforms leaves accounts, configs, and media untouched. mediaUrls only take effect together with platforms; use publicUrl values from upload_media. On SCHEDULED posts new media is verified in storage. Returns the updated post record. Use publish_draft to change a draft's status, delete_post to cancel, and create_post for a new post.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID to update (must be DRAFT or SCHEDULED) | |
| text | No | Updated text; omit to keep the current text | |
| pageIds | No | Facebook page account ids from list_accounts (the account id; its pageId value is also accepted). Facebook has no connection-id array | |
| timezone | No | IANA timezone stored for display; does not shift scheduledAt | |
| mediaUrls | No | Replacement media URLs, applied only when platforms is also sent. Use publicUrl values from upload_media or get_upload_urls | |
| platforms | No | New target platforms. Sending this replaces every target, so also resend the connection-id arrays and platform configs to keep; omit to leave targets unchanged | |
| contentType | No | New content type; must match the media on the post | |
| scheduledAt | No | New schedule time as an absolute ISO 8601 instant; omit to keep | |
| thumbnailUrl | No | Custom thumbnail image URL for video posts | |
| platformTexts | No | Per-platform caption overrides; applied to the targets sent in platforms | |
| tiktokConfigs | No | TikTok per-connection config. Each entry needs connectionId + privacyLevel at minimum | |
| youtubeConfigs | No | YouTube per-connection config with video title, tags, privacy, etc. | |
| facebookConfigs | No | Facebook per-page config with post type and video title. pageId must match an entry in pageIds | |
| instagramConfigs | No | Instagram per-connection config to set post type (FEED, REEL, STORY) | |
| pinterestConfigs | No | Pinterest per-connection config. Each entry needs connectionId + boardId; there is no API to list boards, so ask the user for the board id | |
| tiktokConnectionIds | No | TikTok account connection IDs to post from | |
| blueskyConnectionIds | No | Bluesky account connection IDs to post from | |
| threadsConnectionIds | No | Threads account connection IDs to post from | |
| thumbnailTimestampMs | No | Generate thumbnail from video at this timestamp (milliseconds) | |
| twitterConnectionIds | No | X (Twitter) account connection IDs to post from | |
| youtubeConnectionIds | No | YouTube channel connection IDs to post from | |
| linkedinConnectionIds | No | LinkedIn account connection IDs to post from | |
| instagramConnectionIds | No | Instagram account connection IDs to post from | |
| pinterestConnectionIds | No | Pinterest account connection IDs to post from |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | No | The updated post record: id, status (still DRAFT or SCHEDULED), text, contentType, scheduledAt, timezone, and platforms with per-target details. |