Blog API and CLI
Manage blog posts, authors, and tags programmatically via the REST API, the cavuno CLI, or the TypeScript SDK.
A
JAll blog resources are available through the Cavuno REST API under /v1/blog/. Authenticate with an API key from Settings → API keys.
Manage posts via API
GET /v1/blog/posts— list posts, filter bystatus(draft,scheduled,published)GET /v1/blog/posts/:id— retrieve a single post including rendered HTMLPOST /v1/blog/posts— create a post (defaults todraft)PATCH /v1/blog/posts/:id— update title, slug, content, authors, or tagsDELETE /v1/blog/posts/:id— delete a post
Use POST /v1/blog/posts/:id/publish and POST /v1/blog/posts/:id/unpublish for lifecycle transitions. Use POST /v1/blog/posts/:id/toggle-featured to toggle the featured flag. To search by title across all statuses, use POST /v1/blog/posts/search.
Batch posts
Send up to 50 create, update, delete, publish, or unpublish operations in a single request to POST /v1/blog/posts/batch. Each sub-operation runs independently; a failure in one does not abort the rest.
Manage authors via API
GET /v1/blog/authors— list authorsGET /v1/blog/authors/:id— retrieve an authorPOST /v1/blog/authors— create an authorPATCH /v1/blog/authors/:id— update name, slug, bio, or emailDELETE /v1/blog/authors/:id— delete an author (posts keep the author ID)
Manage tags via API
GET /v1/blog/tags— list tagsPOST /v1/blog/tags— create a tagPATCH /v1/blog/tags/:id— update name, slug, description, or visibilityDELETE /v1/blog/tags/:id— delete a tag (posts keep the tag ID)
Read blog data anonymously
Public read routes for board visitors and external integrations require no authentication:
The :identifier path segment is your board slug.
GET /v1/boards/:identifier/blog/posts— list published posts for a boardGET /v1/boards/:identifier/blog/posts/:postSlug— retrieve a published postPOST /v1/boards/:identifier/blog/search— search published posts by titleGET /v1/boards/:identifier/blog/tags— list tagsGET /v1/boards/:identifier/blog/tags/:tagSlug— retrieve a tagGET /v1/boards/:identifier/blog/authors— list authorsGET /v1/boards/:identifier/blog/authors/:authorSlug— retrieve an author
Use the CLI
The cavuno blog command group mirrors the REST API. Install the CLI and authenticate with an API key.
12345cavuno blog posts list --status draftcavuno blog posts create --title "Hiring trends"cavuno blog posts publish <id>cavuno blog authors create --name "Alex Chen"cavuno blog tags create --name "Hiring"
Run cavuno blog --help to see all subcommands for posts, authors, and tags.
Use the TypeScript SDK
Import createBlogClient from @kit/api-client:
1234567import { createBlogClient } from '@kit/api-client';const blog = createBlogClient({ apiKey: 'cavuno_live_...', baseUrl: 'https://api.cavuno.com/v1' });const posts = await blog.list({ status: 'published' });await blog.create({ title: 'Hiring trends' });await blog.publish(postId);
The client exposes list, get, create, update, remove, publish, unpublish, toggleFeatured, search, and batch for posts, plus authorsList, authorsGet, authorsCreate, authorsUpdate, authorsDelete, and the equivalent tags* methods.