Skip to content

Developer reference

Documentation

A concise reference for reading your published onwrite content from another site, application, or workflow.

Quick start

Create an account, write a post, and publish it. Published content is then readable through the API, scoped to the blog it belongs to — pass that blog's onwrite address as the subdomain parameter and you have a feed you can render anywhere.

Accounts on a paid plan can hold several blogs. Each one is a separate site with its own subdomain, its own API access setting, and its own key, so a request never crosses from one blog into another.

Authentication

Your account

Sign-in is passwordless: enter your email and we send a 6-digit code. There is no password to store or rotate.

API access

Each blog is public or private on its own. A public blog can be read without a key; a private one needs the key issued for that blog under Settings → API keys.

Plan

The read API is a Pro entitlement. Requests for a blog on a plan without API access return 403.

API reference

All read endpoints are scoped to one blog via the required subdomain query parameter. If that blog's API access is private, also pass its key as an x-api-key request header (or a key query parameter). List endpoints accept limit (1–100, default 50) and offset.

GET/api/posts?subdomain=yourblog

Retrieve all published posts

Response

{
  "posts": [
    {
      "id": "uuid",
      "title": "Post Title",
      "excerpt": "Post excerpt...",
      "content_html": "<p>Content...</p>",
      "slug": "post-title",
      "published_at": "2024-01-01T00:00:00Z",
      "author": {
        "full_name": "John Doe"
      }
    }
  ]
}
GET/api/posts/[slug]?subdomain=yourblog

Retrieve a specific post by slug

Response

{
  "post": {
    "id": "uuid",
    "title": "Post Title",
    "excerpt": "Post excerpt...",
    "content_html": "<p>Content...</p>",
    "content_json": {},
    "slug": "post-title",
    "published_at": "2024-01-01T00:00:00Z",
    "feature_image": "url",
    "author": {
      "full_name": "John Doe",
      "profile_image": "url"
    },
    "tags": [
      {
        "name": "Technology",
        "slug": "technology"
      }
    ]
  }
}
GET/api/tags?subdomain=yourblog

Retrieve all tags

Response

{
  "tags": [
    {
      "id": "uuid",
      "name": "Technology",
      "slug": "technology",
      "description": "Tech related posts"
    }
  ]
}

Fair use

Please use the API responsibly. We may apply limits to protect the service from abuse. If you expect high-volume access, contact support so we can plan for it.

Security

  • All API requests must use HTTPS.
  • Row-level security ensures users can only access their own drafts.
  • Published content is publicly accessible via the API.
  • Authentication is required for every write operation.