Posts API reference

Posts endpoints of the Quackback REST API: paths, parameters, request fields and responses.

JM
James Morton
Written By James MortonLast updated 3 days ago

This is the reference for the Posts endpoints of the Quackback REST API: every endpoint, its parameters, request fields and response fields. It is generated from the API's OpenAPI description, so it matches what the API accepts.

All paths are relative to /api/v1 on your workspace's address (for example https://feedback.example.com/api/v1). Authenticate with an API key in the Authorization: Bearer qb_... header. For keys, errors, pagination and rate limits, see API overview. Every workspace also serves an interactive reference at /api/v1/docs.

Endpoints

  • GET /posts: List posts
  • POST /posts: Create a post
  • GET /posts/{postId}: Get a post
  • PATCH /posts/{postId}: Update a post
  • DELETE /posts/{postId}: Delete a post
  • GET /posts/{postId}/activity: Get post activity
  • POST /posts/{postId}/merge: Merge a duplicate post
  • POST /suggestions/{suggestionId}/accept: Accept a merge suggestion
  • POST /suggestions/{suggestionId}/dismiss: Dismiss a merge suggestion
  • POST /suggestions/{suggestionId}/restore: Restore a dismissed merge suggestion

List posts

GET /api/v1/posts

Returns a paginated list of posts with optional filtering

Parameters

Name

In

Type

Required

Description

boardId

query

string

No

Filter by board ID

status

query

string

No

Filter by status slug

tagIds

query

string

No

Filter by tag IDs (comma-separated)

search

query

string

No

Search in title and content

sort

query

string (newest, oldest, votes)

No

Sort order

cursor

query

string

No

Pagination cursor from previous response

limit

query

integer

No

Items per page (max 100)

Response 200: returns id, title, content, voteCount, commentCount, boardId, boardSlug, boardName, statusId, authorName, ownerId, tags, createdAt, updatedAt.

Create a post

POST /api/v1/posts

Create a new feedback post. The post is created on behalf of the authenticated API key holder.

Request body

Field

Type

Required

Description

title

string

Yes

Post title

content

string

Yes

Post content (optional)

boardId

string

Yes

Board ID

statusId

string

No

Initial status ID

tagIds

array of string

No

PostTag IDs to assign

Response 201: returns id, title, content, voteCount, boardId, statusId, authorName, createdAt, updatedAt.

Get a post

GET /api/v1/posts/{postId}

Get a single post by ID with full details

Parameters

Name

In

Type

Required

Description

postId

path

string

Yes

Post ID

Response 200: returns id, title, content, contentJson, voteCount, commentCount, boardId, boardSlug, boardName, statusId, authorName, authorEmail, ownerId, tags, pinnedComment, eta, createdAt, updatedAt, deletedAt.

Update a post

PATCH /api/v1/posts/{postId}

Update an existing post

Parameters

Name

In

Type

Required

Description

postId

path

string

Yes

Post ID

Request body

Field

Type

Required

Description

title

string

No

content

string

No

statusId

string

No

Status ID (set to null to clear)

tagIds

array of string

No

ownerId

string

No

Assigned team member ID (set to null to unassign)

Response 200: returns id, title, content, contentJson, voteCount, boardId, statusId, authorName, ownerId, createdAt, updatedAt.

Delete a post

DELETE /api/v1/posts/{postId}

Delete a post by ID

Parameters

Name

In

Type

Required

Description

postId

path

string

Yes

Post ID

Get post activity

GET /api/v1/posts/{postId}/activity

Returns the 200 most recent activity entries for a post, newest first. Requires the post.view_private permission.

Parameters

Name

In

Type

Required

Description

postId

path

string

Yes

Post ID

Response 200: returns id, postId, principalId, actorName, type, metadata, createdAt.

Merge a duplicate post

POST /api/v1/posts/{postId}/merge

Merges this post (the duplicate) into a canonical post. Requires the post.merge permission.

Parameters

Name

In

Type

Required

Description

postId

path

string

Yes

Post ID

Request body

Field

Type

Required

Description

canonicalPostId

string

Yes

The post that survives. Votes and comments move onto it.

Response 200: returns canonicalPost, duplicatePost.

Accept a merge suggestion

POST /api/v1/suggestions/{suggestionId}/accept

Accepts a suggested post-to-post merge. The body is optional. Requires the suggestion.manage permission.

Parameters

Name

In

Type

Required

Description

suggestionId

path

string

Yes

Merge suggestion ID (post_merge_sug_...)

Request body

Field

Type

Required

Description

swapDirection

boolean

No

Merge the suggestion target into the source instead of the reverse

Response 200: returns accepted, id.

Dismiss a merge suggestion

POST /api/v1/suggestions/{suggestionId}/dismiss

Requires the suggestion.manage permission.

Parameters

Name

In

Type

Required

Description

suggestionId

path

string

Yes

Merge suggestion ID (post_merge_sug_...)

Response 200: returns dismissed, id.

Restore a dismissed merge suggestion

POST /api/v1/suggestions/{suggestionId}/restore

Returns a dismissed suggestion to pending. Requires the suggestion.manage permission.

Parameters

Name

In

Type

Required

Description

suggestionId

path

string

Yes

Merge suggestion ID (post_merge_sug_...)

Response 200: returns restored, id.

Was this helpful?

Your feedback shapes what we write next.