Skip to main content

List Boards

Get all public boards for a workspace.
const res = await client.board.byWorkspaceSlug.$get({ 
  slug: "acme" 
})
const { boards } = await res.json()
Type: Public Procedure
slug
string
required
Workspace slug
boards
array

Get Board Settings

Get detailed settings for all boards (admin view).
const res = await client.board.settingsByWorkspaceSlug.$get({ 
  slug: "acme" 
})
const { boards } = await res.json()
Type: Private Procedure
boards
array
Array of boards with additional settings like visibility, sort order, and post counts

Create Board

Create a new feedback board.
const res = await client.board.create.$post({
  slug: "acme",
  name: "Feature Requests",
  boardSlug: "features",
  isPublic: true
})
const { board } = await res.json()
Type: Private Procedure (requires board manager permission)
slug
string
required
Workspace slug
name
string
required
Board name (1-64 characters)
boardSlug
string
Custom board slug (auto-generated if not provided)
isPublic
boolean
Whether board is publicly accessible (default: true)
Plan Limits:
  • Free: 3 non-system boards
  • Starter: 10 boards
  • Professional: Unlimited boards

Update Board Settings

Update settings for a specific board.
const res = await client.board.updateSettings.$post({
  slug: "acme",
  boardSlug: "features",
  patch: {
    isPublic: false,
    allowAnonymous: true,
    allowComments: true,
    hidePublicMemberIdentity: false
  }
})
Type: Private Procedure (requires board manager permission)
slug
string
required
Workspace slug
boardSlug
string
required
Board slug to update
patch
object
required

Update Global Settings

Apply settings to all non-system boards.
const res = await client.board.updateGlobalSettings.$post({
  slug: "acme",
  patch: {
    allowAnonymous: false,
    allowComments: true
  }
})
Type: Private Procedure (requires board manager permission)

Delete Board

Delete a board and all its posts.
const res = await client.board.delete.$post({
  slug: "acme",
  boardSlug: "old-board"
})
Type: Private Procedure (requires board manager permission)
System boards (Roadmap, Changelog) cannot be deleted.

Tags Management

List Tags

Get all tags for a workspace with usage counts.
const res = await client.board.tagsByWorkspaceSlug.$get({ 
  slug: "acme" 
})
const { tags } = await res.json()
Type: Public Procedure
tags
array

Create Tag

const res = await client.board.tagsCreate.$post({
  slug: "acme",
  name: "Enhancement",
  color: "#3b82f6"
})
Type: Private Procedure (requires board manager permission)
slug
string
required
Workspace slug
name
string
required
Tag name (1-64 characters)
color
string
Hex color code (e.g., “#3b82f6”)
Plan Limits:
  • Free: 10 tags
  • Starter: 50 tags
  • Professional: Unlimited tags

Delete Tag

const res = await client.board.tagsDelete.$post({
  slug: "acme",
  tagSlug: "old-tag"
})
Type: Private Procedure (requires board manager permission)

Search Posts

Search posts across all boards.
const res = await client.board.searchPostsByWorkspaceSlug.$get({
  slug: "acme",
  q: "dark mode"
})
const { posts } = await res.json()
Type: Public Procedure
slug
string
required
Workspace slug
q
string
required
Search query (2-128 characters)
posts
array
Up to 15 matching posts, sorted by relevance (upvotes + recency)

Get Post Count

Get total post count with optional filters.
const res = await client.board.postCountByWorkspaceSlug.$get({
  slug: "acme",
  statuses: ["planned", "progress"],
  boardSlugs: ["features"],
  tagSlugs: ["ui"],
  search: "dark mode"
})
const { count } = await res.json()
Type: Public Procedure
slug
string
required
Workspace slug
statuses
string[]
Filter by roadmap statuses
boardSlugs
string[]
Filter by board slugs
tagSlugs
string[]
Filter by tag slugs
Search query

Posts by Board

Get all posts for a specific board.
const res = await client.board.postsByBoard.$get({
  slug: "acme",
  boardSlug: "features"
})
const { posts } = await res.json()
Type: Private Procedure
posts
array

Get Post Detail

Get full details for a single post.
const res = await client.board.postDetail.$get({ 
  postId: "post-123" 
})
const { post, board, tags, comments, author } = await res.json()
Type: Private Procedure
post
object
Complete post object with all metadata
board
object
Board information
tags
array
Tags assigned to this post
comments
array
All comments on this post
author
object | null
Post author details

Update Post Metadata

Update post status, pins, and locks.
const res = await client.board.updatePostMeta.$post({
  postId: "post-123",
  roadmapStatus: "progress",
  isPinned: true,
  isLocked: false,
  isFeatured: true
})
Type: Private Procedure (requires moderation permission)
postId
string
required
Post ID
roadmapStatus
string
New status (pending, planned, progress, review, completed, closed)
isPinned
boolean
Pin to top of board
isLocked
boolean
Lock from new comments
Mark as featured

Move Post to Board

Move a post to a different board.
const res = await client.board.updatePostBoard.$post({
  postId: "post-123",
  boardSlug: "bugs"
})
Type: Private Procedure (requires moderation permission)

Build docs developers (and LLMs) love