Posts
API endpoints for listing and creating posts.
List posts
Retrieve approved posts for a board, sorted by vote count (highest first). Returns up to 50 posts. No authentication required.
GET /api/v1/public/boards/:id/postsQuery parameters
| Parameter | Type | Description |
|---|---|---|
tags | string | Comma-separated tag slugs. Only posts matching all specified tags are returned. |
Response
Returns a flat JSON array of posts:
[
{
"id": "uuid",
"title": "Dark mode support",
"description": "It would be great to have a dark theme option",
"status": "planned",
"statusLabel": "Planned",
"statusColour": "#3b82f6",
"voteCount": 42,
"hasVoted": false,
"tags": [
{ "id": "uuid", "slug": "ui", "name": "UI", "colour": "#3b82f6" }
]
}
]The hasVoted field reflects whether the current caller has voted, based on IP address and User-Agent.
Submit post
Create a new post on a board. Requires an API key.
POST /api/v1/public/boards/:id/postsRequest body
{
"title": "Add keyboard shortcuts",
"description": "It would be great to navigate with j/k keys",
"email": "user@example.com",
"name": "Jane Doe"
}| Field | Required | Description |
|---|---|---|
title | Yes | Post title (max 120 characters) |
description | No | Post body (max 50,000 characters) |
email | Yes | Submitter email |
name | No | Submitter display name (max 100 characters) |
Response (201 Created)
{
"id": "uuid",
"title": "Add keyboard shortcuts",
"description": "It would be great to navigate with j/k keys",
"voteCount": 0,
"status": "under_review",
"statusLabel": "Under Review",
"statusColour": "#a1a1aa",
"hasVoted": false
}Posts may require approval before appearing publicly, depending on the board's auto-publish setting.