update_post
Change a scheduled or draft post. DESTRUCTIVE WRITE: show the user a side-by-side of CURRENT vs PROPOSED and pass confirm=true only after explicit confirmation. Edit (default): caption, media, schedule, post_type, or settings; cannot edit published posts; if a client already approved the post, a caption edit reopens caption approval, a media or thumbnail edit reopens asset approval, and a reschedule, account change 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, and pass confirm=true only after the user explicitly confirms.
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 | ||
| confirm | Yes | Must be true after the user explicitly confirms the proposed change. | |
| post_id | Yes | ||
| group_id | No | With release_id only: an external group/campaign ID. | |
| metadata | No | ||
| settings | No | Post settings (same fields as platform_settings). For Instagram put first_comment, user_tags, collaborators, is_trial_reel, or caption_addon (poll or comment prompt, Facebook Login only, not Stories) here or in platform_settings. For an X Article put article ({ title, cover }) here or in platform_settings. Call list_platforms with view=schema and account_id for the field list. | |
| media_url | No | Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved. | |
| post_type | No | Optional post type. Omit for auto-detection from media. | |
| media_urls | No | Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved. | |
| 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 | ISO 8601 UTC. With status, required when scheduling a draft. | |
| 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 | ||
| approval_action | No | Change client approval instead of editing the post. Owner or admin only. The actor is the API key user, never a brand guest. Send on its own. | |
| platform_settings | No | Platform-specific composer controls, flattened across all platforms (unrelated fields ignored). Required: YouTube title; Pinterest board_id (cover_image_url also required for video Pins); Lemmy community. Accepted via passthrough but not listed below: Lemmy community/title, Dev.to canonical_url, Hashnode publication_id, Telegram parse_mode/disable_web_page_preview, Google Business post_type (STANDARD/EVENT/OFFER, alias topic_type), TikTok auto_add_music/photo_cover_index/media_type, Facebook post_type (incl. cover_photo), Mastodon language. Call list_platforms with view=schema and account_id for the full field list and examples. | |
| reel_cover_method | No | ||
| reel_thumb_offset | No |