Skip to navigation

Update post OAuth Scope: posts:write

Available on the Pro and Enterprise plans

This endpoint is available to publications on the Pro and Enterprise plans.

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 Using the Send API and Create Post Endpoint 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 draft

Transition the post’s status. Use confirmed to schedule or publish a draft post. Only the draft → confirmed 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 optional stringsOptional

Custom email headers for this post. Merges with newsletter list and publication headers at send time, with this post’s values winning on a key collision. Set a value to null to suppress a header inherited from the newsletter list or publication. System-managed headers (e.g. List-Unsubscribe, X-SMTPAPI) cannot be overridden.

header_custom_cssstringOptional

Custom CSS added to this post’s email <head>, replacing any CSS the post already has. Pass an empty string to remove it. Applies to email only, not the web version.

utm_sourcestringOptional

The utm_source appended to links in this post. Falls back to the newsletter list, then the publication, then a generated default.

utm_mediumstringOptional

The utm_medium appended to links in this post. Falls back to the newsletter list, then the publication, then a generated default.

utm_campaignstringOptional

The utm_campaign appended to links in this post. Falls back to the newsletter list, then the publication, then a generated default.

utm_params_enabledbooleanOptional
Whether UTM parameters are appended to links in this post. When left unset on the post, falls back to the newsletter list, then the publication.
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.
team_author_idslist of stringsOptional
The prefixed IDs of the team members to associate with this post as authors. Team authors must have access to the publication. When provided, replaces all existing team 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.

Response

Updated
dataobject

Errors

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