Partially update an existing blog post via the Write API with support for flexible field modification and status changes.
Important: The URL must append a trailing slash to the blog post slug in the URL path (/v2/posts/your-post-slug/). This is required for the endpoint to function correctly.
Scheduling Limitations: Blog post scheduling is not available through the Write API. Any scheduled parameters in your request will be silently ignored (not treated as errors), allowing you to safely update posts that are currently scheduled without affecting their publication timing.
Media Integration: Include upload_images_to_media_library=true in your request to automatically download and upload any image URLs within the post body to your ButterCMS media library. This ensures reliable hosting and CDN performance for your content images.
Asynchronous Processing: This endpoint returns 202 Accepted immediately to ensure fast response times for your application. The actual update processing, including media uploads, content validation, and webhook notifications, happens in the background processing queue.Write-enabled API token required for creating content.
The API token you use for reading from the ButterCMS API will not allow you to create content in the API. For this you will need to use a different write-enabled token. Chat or email support@buttercms.com to get yours.
Set the Authorization header to Token your_write_api_token.
Example: Authorization: Token abc123def456
Your write-enabled token should never be used anywhere it would be exposed, e.g. in client-side JavaScript.
The slug of the blog post to update.
Important: The URL must end with a trailing slash (/v2/posts/your-slug/).
100Request schema for updating an existing blog post. All fields are optional for partial updates.
Note: If scheduled timestamp or status: "scheduled" are provided, they will be ignored and warning messages will be included in the response.
The title of the blog post
200"Updated Blog Post Title"
The slug of the blog post.
Auto-Slugification: The API automatically converts your input to a valid slug format using unicode slugification.
100"updated-blog-post-slug"
The status of the post.
Note: "scheduled" status will be ignored and a warning message will be included in the response.
draft, published, scheduled "published"
Array of category names. Categories will be created if they don't exist.
["Updated Category", "New Category"]Array of tag names. Tags will be created if they don't exist.
["updated", "refresh", "api"]Can be a remote URL to an image.
The image will always be uploaded to the media library (the value of upload_images_to_media_library is ignored for featured images).
"https://example.com/updated-featured-image.jpg"
Alt text for the featured image
250"Updated featured image alt text."
Should be a string of escaped HTML.
In case it contains any remote URLs to images, the upload_images_to_media_library flag controls the behavior.
"<h1>Updated Content</h1><p>This blog post was updated via API</p>"
Plain-text summary of the blog post
2000"Updated summary of the blog post."
SEO title for HTML title tag
100"Updated SEO Title"
Meta description for SEO and social sharing
"Updated meta description for better SEO."
Defaults to false.
If set to true, any image URLs in the body property will be uploaded to the Butter Media Library and the original URL will be replaced with the media library URL.
Note: Featured images are always uploaded regardless of this setting.
true
Note: This field will be ignored - scheduled timestamps cannot be created or altered via write API.
If provided, this field will be removed from the request and a warning message will be included in the response.
"2024-12-25T10:00:00Z"
Accepted - Post Update Initiated
The update request has been accepted and will be processed asynchronously. The response may include warning messages if certain fields were ignored (such as scheduling-related fields).
Warning Messages: If you provided scheduled timestamp or status: "scheduled", these will be ignored and warning messages will be included in the response.
Success response for blog post updates (202 Accepted). May include warning messages for ignored fields.
Indicates that the blog post update is being processed asynchronously
pending "pending"
Warning message when scheduled field is ignored
"Scheduled timestamps cannot be created or altered via write API. This field will be ignored."
Warning message when scheduled status is ignored
"A blog post's status cannot be set asscheduledvia write API at this time. This field will be ignored."
Additional warning messages for other ignored fields