Update post OAuth Scope: posts:write

<Note title="Currently in beta" icon="b"> This feature is currently in beta, the API is subject to change, and available only to Enterprise users.<br/><br/>To inquire about Enterprise pricing, please visit our <a href="https://www.beehiiv.com/enterprise">Enterprise page</a>. </Note> Update an existing post for a specific publication. Only the fields provided in the request body will be updated — all other fields remain unchanged. For a detailed walkthrough of content methods and working with custom HTML, see the <a href="https://www.beehiiv.com/support/article/36759164012439-using-the-send-api-and-create-post-endpoint">Using the Send API and Create Post Endpoint</a> guide. To update post content, provide either `blocks` or `body_content` (not both). If neither is provided, the existing content is preserved. The same content methods and CSS guardrails described in the create endpoint apply here.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

publicationIdstringRequiredformat: "^(pub_[0-9a-fA-F\-]+)$"
The prefixed ID of the publication object
postIdstringRequiredformat: "^(post_[0-9a-fA-F\-]+)$"
The prefixed ID of the post to update

Request

This endpoint expects an object.
content_merge_strategyenumOptional

Controls how provided blocks interact with the post’s existing content. Defaults to replace. Use append_to_template to preserve template header blocks when updating posts that were created from a template.

Allowed values:
blockslist of objectsOptional

The structured content blocks for the post. How these interact with existing content depends on content_merge_strategy (default: full replacement). Supports block types such as paragraph, image, heading, button, html, table, list, columns, and more. Cannot be provided together with body_content.

body_contentstringOptional

Raw HTML to replace the post’s current content. The HTML is wrapped in an htmlSnippet block internally. Note that <style> and <link> tags are removed during sanitization — use inline styles for all visual styling. Cannot be provided together with blocks.

titlestringOptional
The title of the post.
subtitlestringOptional
The subtitle of the post.
scheduled_atdatetimeOptional
The time at which the post will be published. Cannot be updated after the post has already been sent.
email_capture_type_overrideenumOptional
The email capture type to use for this post.
Allowed values:
override_scheduled_atdatetimeOptional

A display date that overrides the scheduled_at date shown in the email. Does not affect the actual publish date.

social_shareenumOptional
The social share type to use for this post.
Allowed values:
thumbnail_image_urlstringOptional
The URL of the thumbnail image to use for the post.
email_settingsobjectOptional
The email settings to use for this post. Only the provided fields within this object will be updated.
web_settingsobjectOptional
The web settings to use for this post. Only the provided fields within this object will be updated.
seo_settingsobjectOptional
The SEO metadata to use for this post. Only the provided fields within this object will be updated.
statusenumOptionalDefaults to confirmed

Transition the post’s status. Use confirmed to schedule or publish a draft post. Only the draftconfirmed transition is supported — a confirmed post cannot be moved back to draft.

Allowed values:
content_tagslist of stringsOptional
The content tags for this post. When provided, this replaces all existing content tags on the post.
headersmap from strings to stringsOptional

Custom email headers for this post. Merges with publication-level headers at send time. System-managed headers (e.g. List-Unsubscribe, X-SMTPAPI) cannot be overridden.

guest_author_idslist of stringsOptional
The prefixed IDs of the guest authors to associate with this post. Guest authors must belong to the publication. When provided, replaces all existing guest authors on the post.
recipientsobjectOptional
The recipients for this post. When provided, replaces all existing web and email audience targets with the specified values. If omitted, existing targets are unchanged.
newsletter_list_idstringOptional

The prefixed ID of the newsletter list to associate with this post. When provided, updates the newsletter list association. Pass null to remove the association. Beta

Response

Updated
dataobject

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error