---
title: "Search blog posts"
method: POST
path: "/blog/posts/search"
tags: ["Blog posts"]
---

# Search blog posts

`POST /blog/posts/search`

## Request

- Base URL: `https://api.cavuno.com/v1`
- URL: `https://api.cavuno.com/v1/blog/posts/search`
- Auth: HTTP bearer

Lexical title search across all statuses (includes drafts). Optionally narrow to a single `status`.

## Request body

- SearchBlogPostsBody
  - `query` string
  - `status` 'draft' | 'scheduled' | 'published'
  - `cursor` string, nullable
  - `limit` integer

## Response `200`

Successful response.

- object
  - `object` 'search_result', required
  - `url` string, required
  - `hasMore` boolean, required
  - `nextCursor` string, nullable, required
  - `data` BlogPostSummary[], required
    - `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

## Other responses

- `default`: An error. Every non-2xx response uses the same envelope; see the Errors section of the introduction.

## Changes

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

[Operation history](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/changes/blog/posts/search/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)
