GET
/tickets/{ticketId}/messagesList messages in a ticket thread
Returns a ticket thread oldest-first. Internal teammate notes are excluded unless includeInternal=true. Requires a team-role API key.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
ticketIdrequired | path | string | Ticket ID |
includeInternal | query | boolean | Include internal teammate notes (default: false) |
before | query | string | Message ID cursor for the next older page (from meta.pagination.cursor) |
Response
List of messages
Returns an array of objects:
| Field | Type | Description |
|---|---|---|
idrequired | string | TypeID - a type-prefixed UUID |
ticketIdrequired | string | TypeID - a type-prefixed UUID |
senderTyperequired | "visitor" | "agent" | "system" | Who sent the message |
isInternalrequired | boolean | Whether this is an internal teammate note not visible to the requester |
authorPrincipalIdrequired | string | null | Principal ID of the author, null for system messages |
authorNamerequired | stringnull | Display name of the author, null for system messages |
contentrequired | string | Markdown content. Derived from contentJson when it carries an image (restores `` that plain markdown storage would otherwise lose), else the stored text verbatim. |
contentJsonrequired | object | null | Rich text content as TipTap JSON, null for plain-text messages |
attachmentsrequired | object[] | null | Image/file attachments, null if none |
createdAtrequired | string | ISO 8601 timestamp |
meta
| Field | Type | Description |
|---|---|---|
paginationrequired | object |
Errors
401Unauthorized404Ticket not foundExample request
curl \
"https://feedback.quackback.io/api/v1/tickets/:ticketId/messages" \
-H "Authorization: Bearer qb_your_api_key_here"