PATCH/v1/blogs/{subdomain}/posts/{id}

Update a post (partial)

Updates a post. Only the fields present in the payload are modified; omitted fields are left unchanged. This call never changes the publication state — use the publish / unpublish endpoints for that. Changing the `slug` is discouraged after publication: a collision with another post returns 400.

Parameters

Name In Type Description
subdomain*
pathstring
id*
pathstringPost id returned at creation

Request Body

required

application/json

titlestringoptional

Post title

contentstringoptional

Post body in Markdown

slugstringoptional

URL-safe slug. Changing it is discouraged after publication (breaks the public URL). A collision with an existing post returns 400.

excerptstringoptional

Short excerpt or teaser text

coverImageUrlstringoptional

URL of the post cover image

tagsstring[]optional

Tag names. Replaces the current tag set when present.

string[]

Tag names. Replaces the current tag set when present.

accessModestringoptional

Content access mode: FREE or PAID.

Responses

200Post updated
idstringrequired

Unique post identifier

titlestringrequired

Post title

slugstringrequired

URL-safe slug

excerptstringoptional

Short excerpt or teaser text, if provided by the author

contentstringrequired

Full post body in the format described by `contentFormat`

contentFormatstringrequired

Format of the `content` field. Currently always `markdown`.

publishedAtstring (date)optional

Date the post was published (ISO 8601 date). Null if the post is not yet published.

updatedAtstring (date-time)required

Date and time the post was last updated (ISO 8601 datetime)

coverImageUrlstringoptional

URL of the post cover image

urlstringrequired

Canonical public URL of the post

accessModestringrequired

Content access mode: FREE (visible to all readers) or PAID (requires an active paid subscription)

clapsinteger (int64)required

Total number of claps / reactions the post has received

tagsobject[]required

Tags associated with this post

namestringrequired

Human-readable tag name

slugstringrequired

URL-safe slug — use as the `tag` query parameter when filtering posts

authorsobject[]required

Authors credited on this post

namestringrequired

Display name of the author

avatarUrlstringoptional

URL of the author's avatar image

shortBiostringoptional

Short one-line biography suitable for bylines

Code example

PATCH/v1/blogs/{subdomain}/posts/{id}
curl -X PATCH \
  -H "Accept: application/json" \
  "http://localhost:8080/v1/blogs/<subdomain>/posts/<id>"
PATCH/v1/blogs/{subdomain}/posts/{id}
curl -X PATCH \
  -H "Accept: application/json" \
  "http://localhost:8080/v1/blogs/<subdomain>/posts/<id>"