Edit a post
update_postEdit an existing post (draft or scheduled) — caption, hashtags, format, media or target accounts. A published/publishing post can no longer be edited. IMPORTANT: editing resets the post to a DRAFT. To keep it going out, also send action="schedule" + scheduledAt (or action="now" to publish it). Omit action to leave it as a draft (i.e. to unschedule). action "now", and a schedule less than 15 minutes ahead, do NOT publish by themselves: the edit is saved and the post waits as a draft for the user to confirm it, with the Publish button on the post card or on Ravenpost (the result says where). A schedule further ahead, and the queue, go out at their time with no further step. The edit overwrites the stored post — no earlier version is kept — and any publish that was waiting for the user lapses with it. Once the post goes out it is public on its networks. The schedule is the only thing an edit drops on its own: anything else you leave out stays exactly as it was, so to REMOVE something pass its empty form ("", [], null or {} — each argument says which) rather than leaving it out. tiktok and board belong to specific accounts, so when accountIds adds a TikTok or Pinterest account, pass them again for it — a new TikTok target without options publishes privately, and a new Pinterest target without a board fails to publish. caption replaces the whole caption; use hashtags to append them. Telegram targets render a markdown subset in the caption (text, bold, italic, code, strikethrough); other platforms publish it as plain text. replySettings (who may reply) and community (the Community it posts into) are X only, like replyTo and quote; use "" to either to go back to X’s default — everyone may reply, and the post goes to the timeline. audio replaces the Instagram reel track (see list_audio); use null to remove it. reelCover replaces the Instagram reel cover; use null to go back to the first frame. trialReel changes how a trial reel graduates; use "" to make it a normal reel. firstComment replaces the Instagram first comment; use "" to remove it. It reaches Instagram only, never a STORY, and the result warns when none of the post’s accounts would get it. collaborators replaces the Instagram co-authors; use [] to remove them. They reach only an Instagram account whose connection is "FACEBOOK_LOGIN" (see list_accounts) and never a STORY — anywhere else they are dropped and the post publishes without them. tiktok replaces TikTok’s per-account posting options (privacyLevel, allow*, brand toggles); use {} to clear them, which makes TikTok targets publish privately again. board moves a Pinterest pin to another board (name or id from list_boards); title replaces the pin title. link replaces the URL the post points at — Facebook’s link preview card, Pinterest’s pin destination; use "" to remove it.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"postId": "<postId>"
},
"name": "update_post"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Replace the URL this post points at. Facebook publishes it as a link preview card (used when the post has no media); Pinterest makes it the pin's destination, which is the whole point of a pin. Every other platform ignores it. Use "" to remove it. | |
| type | No | Instagram format | |
| audio | No | Instagram reel audio — a catalog track from list_audio. Requires type="REEL" and an Instagram account connected via Facebook; ignored otherwise. Use null to remove the track. | |
| board | No | Pinterest only: move the pin to another board — its name (matched case-insensitively) or an id from list_boards. Applied to every Pinterest target on the post. | |
| quote | No | Replace the X quoted tweet (tweet id or tweet URL; use "" to remove the quote). X only takes a quote of the account's own post or one that @mentions it | |
| title | No | Pinterest only: replace the pin title (max 100 chars); use "" to fall back to the caption’s first line. | |
| action | No | now = publish once the user confirms it (on the post card or on Ravenpost), schedule = re-schedule (needs scheduledAt; less than 15 minutes ahead waits for their confirmation too), queue = next free posting-queue slot, draft = keep as draft | |
| postId | Yes | The post id (from list_posts / create_post) | |
| thread | No | Replace the thread (follow-up posts; limits come from the strictest selected platform — at most 25 entries, each ≤280 chars on X, or 25,000 on X Premium. Use [] to remove the thread) | |
| tiktok | No | TikTok posting options, keyed by TikTok account id. Omit and TikTok targets publish privately (SELF_ONLY) — TikTok requires the creator to choose a visibility per post, so nothing wider is assumed on their behalf. | |
| caption | No | New caption (replaces the existing one) | |
| replyTo | No | Replace the X reply target (tweet id or tweet URL; use "" to make it a standalone tweet again). X only takes a reply to the account's own post or one that @mentions it | |
| hashtags | No | Hashtags to append to the caption | |
| mediaIds | No | Replace the media set (ordered asset ids) | |
| timezone | No | IANA timezone for the schedule | |
| community | No | X only: replace the Community this posts into — its id or URL (x.com/i/communities/<id>). Use "" to post to the timeline again. | |
| reelCover | No | Instagram reel cover — an image OR a frame of the video, not both. Only for type="REEL" on an Instagram account, either connection; other types and platforms ignore it and it is dropped there. Leave it out for Instagram’s default, the first frame. Use null to go back to the first frame. | |
| trialReel | No | Instagram trial reel: shown to non-followers first, and to followers only once it graduates — MANUAL means the user graduates it by hand in the Instagram app, SS_PERFORMANCE that Instagram graduates it if it performs well. Only for type="REEL" on an Instagram account; other types and platforms ignore it. Instagram decides which accounts may post one (public professional accounts it can recommend) and answers only when the reel is published: if it refuses, the post fails — it is never sent as a normal reel instead. Set it only when the user asks for a trial. Use "" to make it a normal reel again. | |
| accountIds | No | Replace the target accounts | |
| scheduledAt | No | ISO 8601 datetime — required when action is "schedule" | |
| firstComment | No | Instagram only: a comment posted on the Instagram post from the same account right after it goes out — hashtags, or a link the caption should not carry. Feed posts, carousels and reels only: Instagram takes no comment on a STORY, and no other network gets one, so anything X, Threads, LinkedIn or the others should carry belongs in their caption. If Instagram refuses the comment, the post stays published without it and nothing reports that afterwards. preview_post takes the same argument and warns where it would not be posted. Replaces the one the post has; use "" to remove it. | |
| collaborators | No | Instagram only: replace the co-author usernames (max 3); use [] to remove them. They get an invite, and once they accept the post appears on their profile too. Feed posts and reels only — never a STORY — and ONLY on an Instagram account whose connection is "FACEBOOK_LOGIN" (see list_accounts). On any other Instagram account they are dropped: the post still publishes, without them, and nothing reports it afterwards — so check the connection before promising the user co-authors. | |
| replySettings | No | X only: replace who may reply to this post. Use "" to go back to X's default (everyone). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | No | ||
| post | No | ||
| preview | No | ||
| awaitingConfirmation | No |