Edit a queued post or draft
chirpie_update_postEdit a post that has not published yet, or finish a draft. Only a post still waiting to publish can be edited; one that is publishing, published, failed or deleted is refused with 409 post_not_editable. Leaving schedule_at out keeps the time a queued post already has, so editing a queued post never publishes it and never turns it into an immediate one, and costs nothing, since it spent its quota when it was created. Rescheduling a post that belongs to a thread moves every part of that thread, and the response lists them in rescheduled_post_ids. A draft is different: it is held to far less, so an edit that leaves it too long or with no text at all is saved and answers with a warnings array instead of an error. Promoting a draft is the one thing this call does publish: schedule_at queues it, publish: true sends it now, both run every rule a create runs and spend the quota the draft never spent, and the answer carries the new post plus promoted_from_draft_id. draft: true alongside schedule_at changes only the time the draft remembers.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID to edit | |
| text | No | Replacement text. The same per-platform character limits apply as when creating a post. | |
| draft | No | Keep this a draft, whatever else changes. Only meaningful on a post that is already a draft, where it is the difference between remembering a new time and queueing the post for it. | |
| media | No | Replacement media, following the same per-platform rules as creating a post. Pass an empty array to remove the media. | |
| publish | No | Publish this draft now. Only valid on a draft, and never together with schedule_at. The draft is checked in full and charged as a post, then sent. | |
| timezone | No | The IANA timezone a schedule_at with no offset is read in, such as 'America/New_York'. Daylight saving is worked out for the date named. Ignored when schedule_at already carries an offset. Leave it out to use the timezone saved on the account. | |
| media_urls | No | Replacement public image or video URLs, for a post that needs no alt text. Pass an empty array to remove the media. | |
| schedule_at | No | New ISO 8601 publish time, in the future. Either an absolute instant carrying a timezone, such as '2027-04-01T14:00:00Z', or a local time with no offset, such as '2027-04-01T09:30:00', which is read in the timezone parameter or the one saved on the account. Omit it to keep the time the post already has. On a draft this promotes it to scheduled, unless draft: true is sent too. | |
| configuration | No | New publishing options, or an empty object to put the post back to a plain feed post. Leaving it out keeps the options the post already carries, and sending a block replaces them outright rather than merging into them. The same rules a create runs apply, so a placement the post's media or text does not suit is refused with 400 configuration_unsupported. | |
| first_comment | No | A new first comment, or an empty string to remove the one the post carries. This is also how a first comment is added to a post that never had one, as long as it has not published yet. On a thread it belongs to the thread, so it applies whichever part you addressed. |