Apps API reference
Apps endpoints of the Quackback REST API: paths, parameters, request fields and responses.
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 appGET /apps/search: Search postsGET /apps/suggest: Suggest similar postsGET /apps/linked: List posts linked to an external ticketPOST /apps/link: Link an external ticket to a postPOST /apps/unlink: Unlink an external ticket from a postPOST /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 |
|---|---|---|---|---|
| query | string | No | Search text |
| 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 |
|---|---|---|---|---|
| query | string | Yes | Text to match, for example a ticket subject |
| 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 |
|---|---|---|---|---|
| query | string | Yes | Integration key |
| 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 |
|---|---|---|---|
| string | Yes | TypeID - a type-prefixed UUID |
| string | Yes | Integration key |
| string | Yes | Ticket ID in the external system |
| string | No | |
| 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 |
|---|---|---|---|
| string | Yes | TypeID - a type-prefixed UUID |
| string | Yes | |
| 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 |
|---|---|---|---|
| string | Yes | TypeID - a type-prefixed UUID |
| string | Yes | |
| string | No | Markdown body, default empty |
| object | No | Link the external ticket to the new post |
| 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.
