/v1/blogs/{subdomain}/postsReturns a paginated list of published posts for the given blog. Results can be filtered by tag slug or a full-text search query, and sorted by any supported field. Only posts with status `PUBLISHED` are returned — drafts and scheduled posts are never included. Posts with `accessMode: PAID` are included in the listing but their full content is only accessible via the single-post endpoint for authenticated subscribers.
| Name | In | Type | Description |
|---|---|---|---|
subdomain* | path | string | Subdomain of the blog (e.g. `alice` for `alice.writizzy.com`) |
page | query | integer (int32) default: 0 | Zero-based page index |
limit | query | integer (int32) default: 20 | Number of posts per page. Clamped to a maximum of 1000. |
tag | query | string | Filter posts by tag slug. Use the `slug` field from the Tags endpoint. |
search | query | string | Full-text search query applied to post titles and content excerpts |
sort | query | string default: publishedAt | Field to sort by. Supported values: `publishedAt`, `updatedAt`, `title`, `claps`. |
order | query | string default: desc | Sort direction: `asc` for ascending, `desc` for descending. |
Posts on the current page
Unique post identifier
Post title
URL-safe slug used to fetch the full post via GET /posts/{slug}
Short excerpt or teaser text, if provided by the author
Date the post was published (ISO 8601 date). Null if the post is not yet published.
Date and time the post was last updated (ISO 8601 datetime)
URL of the post cover image
Canonical public URL of the post
Content access mode: FREE (visible to all readers) or PAID (requires an active paid subscription)
Total number of claps / reactions the post has received
Tags associated with this post
Human-readable tag name
URL-safe slug — use as the `tag` query parameter when filtering posts
Authors credited on this post
Display name of the author
URL of the author's avatar image
Short one-line biography suitable for bylines
Zero-based current page index
Maximum number of posts per page as requested
Total number of matching posts across all pages
Total number of pages available
/v1/blogs/{subdomain}/postscurl -X GET \
-H "Accept: application/json" \
"http://localhost:8080/v1/blogs/<subdomain>/posts"/v1/blogs/{subdomain}/postscurl -X GET \
-H "Accept: application/json" \
"http://localhost:8080/v1/blogs/<subdomain>/posts"