Apps API reference

Apps 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 Apps 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 /apps/boards: List boards for an embedded app
  • GET /apps/search: Search posts
  • GET /apps/suggest: Suggest similar posts
  • GET /apps/linked: List posts linked to an external ticket
  • POST /apps/link: Link an external ticket to a post
  • POST /apps/unlink: Unlink an external ticket from a post
  • POST /apps/posts: Create a post from an external ticket

List boards for an embedded app

GET /api/v1/apps/boards

Returns the boards the API key owner can see, with name and slug only.

Response 200: returns boards.

Search posts

GET /api/v1/apps/search

Text search across posts, ordered by votes. An empty query returns no posts. Requires the post.view_private permission.

Parameters

Name

In

Type

Required

Description

q

query

string

No

Search text

limit

query

integer

No

Maximum results (capped at 20)

Response 200: returns posts.

Suggest similar posts

GET /api/v1/apps/suggest

Finds posts similar to a piece of text. Uses semantic similarity when AI is configured and falls back to text search otherwise, in which case similarity is null. Requires the post.view_private permission.

Parameters

Name

In

Type

Required

Description

text

query

string

Yes

Text to match, for example a ticket subject

limit

query

integer

No

Maximum results (capped at 20)

Response 200: returns posts.

List posts linked to an external ticket

GET /api/v1/apps/linked

Requires the integration.view permission.

Parameters

Name

In

Type

Required

Description

integrationType

query

string

Yes

Integration key

externalId

query

string

Yes

Ticket ID in the external system

Response 200: returns posts.

Link an external ticket to a post

POST /api/v1/apps/link

Links the ticket to the post. Linking again is idempotent. When a requester is given, a vote is recorded for them. Requires the post.vote_on_behalf permission.

Request body

Field

Type

Required

Description

postId

string

Yes

TypeID - a type-prefixed UUID

integrationType

string

Yes

Integration key

externalId

string

Yes

Ticket ID in the external system

externalUrl

string

No

requester

object

No

When given, a vote is recorded for this person

Response 201: returns linkId, voted, voteCount, principalId.

Unlink an external ticket from a post

POST /api/v1/apps/unlink

Requires the post.vote_on_behalf permission.

Request body

Field

Type

Required

Description

postId

string

Yes

TypeID - a type-prefixed UUID

integrationType

string

Yes

externalId

string

Yes

Response 200: returns success.

Create a post from an external ticket

POST /api/v1/apps/posts

Creates a post, optionally authored by a requester and linked to the external ticket. Skips moderation because the API key is a team credential. Requires the post.create permission.

Request body

Field

Type

Required

Description

boardId

string

Yes

TypeID - a type-prefixed UUID

title

string

Yes

content

string

No

Markdown body, default empty

link

object

No

Link the external ticket to the new post

requester

object

No

Author and first voter of the post. Defaults to the API key owner.

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

Was this helpful?

Your feedback shapes what we write next.