update_post
Edit scheduled or draft social posts to change captions, media, schedules, settings, accounts, or thread replies, and to pause, resume, or manage client approvals.
Instructions
Change a scheduled or draft post. DESTRUCTIVE WRITE. Edit (default): caption, media, schedule, post_type, settings, account_id, or thread_posts; overwrites the existing post; cannot edit published or currently publishing posts. account_id moves the post to another account you can use in the same workspace and on the same brand, and the platform follows that account. thread_posts replaces an X or Threads reply chain with at least two non-empty parts, and the first part becomes the caption. If a client has already approved the post, a caption edit reopens caption approval, a media or thumbnail edit reopens asset approval, and a reschedule, account change, thread edit, or settings change reopens both. status (scheduled, paused, or draft, with scheduled_at when scheduling a draft): pause, resume, or move back to draft; send it on its own. release_id (with optional group_id): set or repair external release/group IDs; send it on its own. approval_action (request, approve, request_changes, or reject): change client approval. Only a workspace owner or admin may do this. The actor is the API key user, never a brand guest. request emails the brand reviewers. approve, request_changes, and reject are team-side decisions. request_changes needs approval_note. Optional approval_axis is asset or caption; omit it for both. Send approval_action on its own.
REQUIRED BEFORE CALLING: Show the user a side-by-side of the CURRENT post (caption, scheduled time, media, status) and the PROPOSED change, and get explicit confirmation ("yes update it", "apply those changes") before calling. Do not auto-edit posts based on a general instruction - each change needs its own confirmation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Change the post status instead of editing it. Send with post_id (and scheduled_at when scheduling a draft) only. | |
| caption | No | New caption/text content | |
| confirm | Yes | Must be true after explicit user confirmation of the proposed change. | |
| post_id | Yes | The post ID to update | |
| group_id | No | With release_id only: an external group/campaign ID. | |
| media_url | No | New media URL. Posterly storage URLs are used as-is; third-party URLs are copied into posterly storage first. Short-lived signed URLs must still be live when this tool runs. | |
| post_type | No | New post type: text, image, video, carousel, reel, story, story_series, document, photo, or cover_photo | |
| account_id | No | Move this unpublished post to another account you can use in the same workspace. The account must belong to the post brand. The platform follows the new account. | |
| media_urls | No | New media URLs for carousel, handled like media_url. | |
| release_id | No | Set an external release ID instead of editing the post. Send with post_id and optional group_id only. | |
| scheduled_at | No | New scheduled time (ISO 8601, e.g. 2026-03-10T09:00:00Z) | |
| thread_posts | No | Replace an X or Threads reply chain. At least 2 non-empty parts. The first part becomes the caption. | |
| approval_axis | No | With approval_action approve, request_changes, or reject: which axis to decide. Omit for both. Not allowed with request. | |
| approval_note | No | Note stored with the approval change. Required for request_changes. | |
| reel_cover_url | No | Cover image URL for a reel. | |
| approval_action | No | Change client approval instead of editing the post. Send on its own. | |
| platform_settings | No | Platform-specific settings to merge into the post. Prefer this over raw metadata. | |
| reel_cover_method | No | How the reel cover is chosen, e.g. an uploaded image or a frame offset. | |
| reel_thumb_offset | No | Frame offset in milliseconds to use as the reel cover. | |
| instagram_settings | No | Instagram-specific updates. Distinguish caption @mentions, native media user_tags, and collaborators. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Call list_platforms with view=schema and account_id first. |