---
title: "Unpublish a blog post"
method: POST
path: "/blog/posts/{id}/unpublish"
tags: ["Blog posts"]
---

# Unpublish a blog post

`POST /blog/posts/{id}/unpublish`

## Request

- Base URL: `https://api.cavuno.com/v1`
- URL: `https://api.cavuno.com/v1/blog/posts/{id}/unpublish`
- Auth: HTTP bearer

Reverts a published post to a draft, removing it from the public board. Takes no request body. The stored `publishedAt` is preserved so a later republish keeps the original publish date.

## Path parameters

- `id` string, required: The post's opaque object `id`: the `id` field returned by the blog-post endpoints (e.g. `b3p8m2k7d9q4x0r5t1v6w8y2z7a4c0n3`). This is NOT the `slug` or title; passing a slug like `my-first-post` returns 404. To look up a post by title or slug, use `GET /v1/blog/posts` or `POST /v1/blog/posts/search` and read the returned `id`.

## Response `200`

Successful response.

- BlogPost
  - `id` string, required: Unique identifier for the object. Use this value as the `{id}` path parameter for the blog-post endpoints (e.g. `GET /v1/blog/posts/{id}`).
  - `object` 'blog_post', required
  - `title` string, required
  - `slug` string, required
  - `status` string, required
  - `visibility` string, required
  - `type` string, required
  - `featured` boolean, required
  - `authorIds` string[], required
  - `tagIds` string[], required
  - `coverUrl` string, nullable, required
  - `ogImageUrl` string, nullable, required
  - `featureImageAlt` string, nullable, required
  - `featureImageCaption` string, nullable, required
  - `customExcerpt` string, nullable, required
  - `readingTimeMin` number, nullable, required
  - `seoTitle` string, nullable, required
  - `seoDescription` string, nullable, required
  - `canonicalUrl` string, nullable, required
  - `publishedAt` string, nullable, required
  - `createdAt` string, required
  - `updatedAt` string, nullable, required
  - `html` string, nullable, required

## Other responses

- `404`: Blog post not found.
- `409`: The post is not currently published.

## Changes

- **2026-10-19** `c34152c38176`: 2 info
  - added the optional property `error/upgrade` to the response with the `404` status
  - added the optional property `error/upgrade` to the response with the `409` status

[Operation history](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/changes/blog/posts/:id/unpublish/post.md)

---

[API](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api.md) · [All operations](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/revisions/d5974dabff14?raw)
