---
title: "List comment threads"
method: GET
path: "/reports/{id}/comments"
tags: ["Comments"]
---

# List comment threads

`GET /reports/{id}/comments`

## Request

- Base URL: `https://commareports.com/api/v1`
- URL: `https://commareports.com/api/v1/reports/{id}/comments`
- Auth: HTTP bearer

All comments with replies, anchors, and resolve state, oldest first. Cursor-paginated: pass the previous page's opaque `nextCursor` to fetch the next page. Each comment embeds up to 50 replies; `replies_truncated` marks a thread with more (read it via `GET /comments/{id}/replies`). Scope: `comments:read`.

## Query parameters

- `cursor` string
- `limit` integer

## Response `200`

A page of comments.

- CommentsPage
  - `comments` Comment[], required
    - `id` string, uuid, required
    - `body` string, required
    - `status` 'open' | 'resolved', required
    - `author` CommentAuthor, required
      - `id` string, uuid, nullable, required: null for agent / system (auto-changelog) comments.
      - `name` string, nullable
      - `email` string, nullable
    - `author_type` 'user' | 'agent' | 'system'
    - `block_id` string, nullable
    - `anchor` Anchor
      - `text` string, required
      - `prefix` string, nullable
      - `suffix` string, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `replies` Reply[], required
      - `id` string, uuid, required
      - `body` string, required
      - `author` CommentAuthor, required
        - `id` string, uuid, nullable, required: null for agent / system (auto-changelog) comments.
        - `name` string, nullable
        - `email` string, nullable
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `replies_truncated` boolean: True when the thread has more than the 50 embedded replies.
  - `nextCursor` string, nullable, required: Pass as ?cursor= to fetch the next page; null when exhausted.

## Other responses

- `401`: Missing, invalid, revoked, or expired token.
- `403`: Token missing the required scope, or no access to the resource.
- `404`: Resource not found (also returned instead of 403 where existence must not leak).
- `429`: Rate limit exceeded. Rate limit: per-token sliding window (plan-aware — Free 60 req/min, Pro 600, Team/Enterprise 6000 by default); 429 responses carry a Retry-After header.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/commareports/apis/comma-api.md) · [All operations](https://skmtc.dev/commareports/apis/comma-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commareports/apis/comma-api/revisions/cd5263522ade?raw)
