Update a post by ID
Update an existing post in your publication. The publication is identified by the API key provided in the Authorization header.
Behavior:
- Only provided fields are updated; omitted fields remain unchanged
- When markdown is provided, it replaces the full content. Rich blocks (embeds, buttons, callouts) created in the editor will be lost — the markdown to editor conversion is lossy for blocks without a markdown equivalent
- Set status to "published" to publish a draft, "draft" to unpublish, or "archived" to archive
- When editing an already-live post that should remain live, include status: "published" in the update and verify the returned post status before telling the writer it is live
- Set scheduledAt (Unix timestamp in milliseconds) to schedule a draft's first-publish for a future time. Must be in the future and at most 30 days out. Only valid for posts that haven't been published or already scheduled. Pass scheduledAt: null to cancel a previously scheduled publish (or to reschedule: cancel first, then schedule again with the new time). Set sendNewsletter: true alongside scheduledAt to email subscribers when the post publishes.
- Set imageUrl to update the post's cover/hero image; the URL is fetched, re-hosted, and a placeholder is generated. Pass clearImage: true to remove the existing cover.
- Set imageAlt to describe the cover image for screen readers. It renders everywhere the cover appears, so set it whenever you set imageUrl.
Path parameters
Unique identifier of the post to update
Request body
Response
Post updated successfully
Changes
Changed in 10 of the 61 revisions of this API.413
- ○
added the new optional request property
canonicalUrlnew-optional-request-property
- ○
added the new optional request property
communityIdnew-optional-request-property
- ○
added the new optional request property
publishOnlinenew-optional-request-property
- ○
- ○
added the new optional request property
imageAltnew-optional-request-property
- ○
- ○
added the new optional request property
authorIdsnew-optional-request-property
- ○
- ○
added the new optional request property
bodyJsonnew-optional-request-property
- ○
- ○
added the non-success response with the status
409response-non-success-status-added
- ○
- ○
added the new optional request property
clearImagenew-optional-request-property
- ○
added the new optional request property
imageUrlnew-optional-request-property
- ○
- ●
removed the optional property
errorfrom the response with the400statusresponse-optional-property-removed
- ●
removed the optional property
errorfrom the response with the401statusresponse-optional-property-removed
- ●
removed the optional property
errorfrom the response with the404statusresponse-optional-property-removed
- ●
removed the optional property
errorfrom the response with the500statusresponse-optional-property-removed
- ●
- ○
added the new optional request property
publishedAtnew-optional-request-property
- ○
- ○
added the new optional request property
scheduledAtnew-optional-request-property
- ○
added the new optional request property
sendNewsletternew-optional-request-property
- ○
- ○
endpoint added
endpoint-added
- ○