---
title: "List project comment threads"
method: GET
path: "/projects/{projectId}/comment-threads"
tags: ["Comments"]
---

# List project comment threads

`GET /projects/{projectId}/comment-threads`

## Request

- Base URL: `https://app.flora.ai/api/v1`
- URL: `https://app.flora.ai/api/v1/projects/{projectId}/comment-threads`
- Auth: HTTP bearer

Returns comment threads in the project, newest first within the matched set. Filter with `status` (`open`, `resolved`, or `all`), `anchor` (`canvas`, `generation`, or `all`), `node_id` (canvas node UUID or short id such as n7; unknown short ids are rejected), and `query` (plain-text match across live comments). Generation review threads include `generation_id`. Missing and inaccessible projects both return 404. Guests who can view or comment on the project can list threads; they do not need edit or generate permission.

## Path parameters

- `projectId` string, required: Project identifier

## Query parameters

- `limit` integer: Maximum number of results to return
- `cursor` string: Opaque cursor for fetching the next page
- `query` string: Search query
- `status` 'open' | 'resolved' | 'all': Filter by thread status. Omit or `all` for every thread.
- `node_id` string: Only threads pinned to this canvas node
- `anchor` 'canvas' | 'generation' | 'all': Filter by pin location. Omit or `all` for every thread.

## Response `200`

Comment threads returned.

- object
  - `comment_threads` object[], required
    - `comment_thread_id` string, required: Comment thread identifier
    - `project_id` string, required: Project identifier
    - `workspace_id` string, required: Workspace identifier
    - `status` 'open' | 'resolved', required: Whether the thread is still open
    - `resolved_at` number, nullable, required: When the thread was resolved, as a Unix timestamp in milliseconds. Null while open.
    - `created_at` number, required: When the thread was created, as a Unix timestamp in milliseconds
    - `last_comment_at` number, nullable, required: When the latest live comment was created, as a Unix timestamp in milliseconds. Null when the thread has no live comments.
    - `comment_count` integer, required: Number of live comments in the thread
    - `anchor` 'canvas' | 'generation', required: Where the thread is pinned. `canvas` is a pin on the project canvas. `generation` is a review thread on a generation.
    - `generation_id` string: Public run id of the generation this review thread is pinned to. Absent on canvas threads.
    - `position` object, required
      - `x` number, required: Canvas X coordinate of the pin
      - `y` number, required: Canvas Y coordinate of the pin
      - `node_id` string: Canvas node the pin is attached to, when pinned to a node
    - `preview` object, nullable, required: The first live comment in the thread. Null when the thread has no live comments.
      - `comment_id` string, required: Comment identifier
      - `body` string, required: Plain-text comment body
      - `author` object, required
        - `type` 'user' | 'anonymous' | 'flora', required: Author kind
        - `name` string, required: Display name
        - `profile_image_url` string, uri: Author profile image URL
      - `created_at` number, required: When the comment was created, as a Unix timestamp in milliseconds
  - `meta` object, required
    - `next_cursor` string, nullable, required: Opaque cursor for fetching the next page
    - `total_estimate` integer, nullable: Estimated total matching items

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `403`: 403
- `404`: 404
- `409`: 409
- `429`: 429
- `500`: 500
- `503`: 503

## Changes

- **2026-10-28** `a8351619f225`: 9 warning
  - added the new `not_configured` enum value to the `error/code` response property for the response status `400`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `401`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `402`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `403`
  - …5 more
- **2026-10-16** `e54130373b10`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/changes/projects/:projectId/comment-threads/get.md)

---

[API](https://skmtc.dev/florafauna-ai/apis/flora-ai-api.md) - [All operations](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/revisions/87cfe2c4ac29?raw)
