Getting Started

Use Writizzy as a headless CMS — fetch your blog content via the public API to power any frontend.

The Writizzy public API lets you use your blog as a headless CMS. Write and publish in Writizzy, then pull your content into any frontend — Next.js, Astro, a mobile app, or anything that can make an HTTP request.

What the API gives you

The v1 API exposes your blog's public content in read-only mode:

ResourceDescription
BlogMetadata — name, description, language, logo, navigation
PostsPaginated list, or a single post by slug
TagsAll tags with metadata and post counts
AuthorPublic profile of the blog's author

All content is returned as raw Markdown so you can render it with your own tooling.

Requirements

The public API is available on Starter plans and above. It is not available on the free plan.

Get your API key

Your API key is scoped to a single blog. To generate one:

  1. Open your Blog Settings from the dashboard
  2. Navigate to Developer API
  3. Click Generate API key
  4. Copy the key immediately — it is shown only once

Your key looks like this:

wz_yourblog_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keep it secret. Anyone with this key can read all published content on your blog, including premium posts.

Revoking a key

To invalidate a key and issue a new one, click Revoke & regenerate in the same settings panel. The old key stops working immediately.

Authenticate your requests

Pass the key as a Bearer token in the Authorization header on every request:

GET /v1/blogs/yourblog/posts
Authorization: Bearer wz_yourblog_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

There is no OAuth flow, no token expiry, and no refresh step — just the key.

Your first request

Fetch the list of published posts on your blog:

curl https://writizzy.com/v1/blogs/yourblog/posts \
  -H "Authorization: Bearer wz_yourblog_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

A successful response looks like:

{
  "posts": [...],
  "page": 0,
  "limit": 20,
  "total": 42,
  "totalPages": 3
}

Error responses

All errors follow a consistent format:

{
  "error": "NOT_FOUND",
  "message": "Post not found",
  "status": 404
}
StatusMeaning
401Missing or invalid API key
403Key is revoked or does not match this blog
404Resource does not exist
429Daily rate limit exceeded
500Server error

Rate limits

The API is designed for static site builds — you can fetch your entire blog in one pass.

LimitValue
Requests per day10,000 per key
Max posts per page1,000 (for builds)

When the limit is exceeded you receive a 429 response with a Retry-After header.