GET
/api/public/v1/tickets/{ticketId}/comments

List comments on a ticket

The discussion on one work item, oldest first. Mentions appear inline in `body` as `<@employeeId>`, with the same ids repeated in `mentionedEmployeeIds` so you need not parse the text. Files posted with a comment come back under `attachments`, each with a short-lived signed `url` — read it now rather than storing it; the same files are listed on the ticket. `reactions` is the emoji people have put on each comment, already grouped — one entry per emoji with everybody who picked it, and `mine` saying whether the authenticated caller is one of them.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Settings → Company → API, and to a teammate under Employee → Permissions.

projects:admin

Path Parameters

NameTypeRequiredDescription
ticketIdstringRequiredTicket ID.
GETExample request
curl
curl -X GET "https://www.pxb.app/api/public/v1/tickets/{ticketId}/comments" \
  -H "Authorization: Bearer your_access_token"
200Example response
json
{
  "message": "Comments retrieved successfully!",
  "content": {
    "comments": [
      {
        "id": "cmt_88aa",
        "body": "Blocked on the tax categories — <@emp_44f1> can you confirm?",
        "mentionedEmployeeIds": [
          "emp_44f1"
        ],
        "author": {
          "employeeId": "emp_12ab",
          "name": "Sam Okafor",
          "email": null,
          "avatarUrl": null
        },
        "attachments": [
          {
            "id": "att_31cd",
            "fileName": "tax-categories.png",
            "mimeType": "image/png",
            "sizeBytes": 184320,
            "url": "https://storage.pixelbase.co/priv/…"
          }
        ],
        "reactions": [
          {
            "emoji": "👍",
            "count": 2,
            "mine": false,
            "employeeIds": [
              "emp_44f1",
              "emp_90de"
            ]
          }
        ],
        "canDelete": true,
        "createdAt": "2026-08-20T09:41:00.000Z",
        "updatedAt": "2026-08-20T09:41:00.000Z"
      }
    ]
  }
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

Projects
/projects
  1. Open a ticket and read its comment thread.