Skip to main content
POST
Update a blog post

Authorizations

Authorization
string
header
required

API token for authentication

Query Parameters

workspace_id
string
required

The ID of the workspace. Passed in the query string, not the body.

Body

application/json

A full replacement, not a patch: every optional field omitted here is cleared, including template_version, which falls back to 0 (latest version). Send the post back with your changes applied.

id
string
required
Example:

"1b4e28ba-2fa1-11d2-883f-0016d3cca427"

category_id
string
required

An existing category.

Example:

"7c9e6679-7425-40de-944b-e07fc1f90ae7"

slug
string
required

Lowercase letters, digits and single hyphens. Must be unique across the whole workspace, not just within the category.

Maximum string length: 100
Pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
Example:

"october-release"

title
string
required
Maximum string length: 500
Example:

"What shipped in October"

template_id
string
required

A web template (channel: web) holding the post body — create it first with templates.create. Its existence is not checked here: a post pointing at a missing template is saved and renders with an empty body.

Example:

"blog_october_release"

template_version
integer
default:0

The template version to render. Omit it (or send 0) to always render the template's latest version; pin a version to control exactly when a template edit reaches readers.

Example:

1

excerpt
string
Example:

"A faster editor, scheduled broadcasts and a new API."

Example:

"https://cdn.example.com/blog/october.png"

authors
object[]
reading_time_minutes
integer
Example:

4

seo
object

Search and social metadata for the page, exposed to the blog theme.

Response

Post updated

post
object
required