---
title: "/discussions/:discussionId/comments"
method: GET
path: "/v1/discussions/{discussionId}/comments"
tags: ["Discussions"]
---

# /discussions/:discussionId/comments

`GET /v1/discussions/{discussionId}/comments`

## Request

- Base URL: `api.air.inc` (relative, and the document’s source URL is not known)
- URL: `api.air.inc/v1/discussions/{discussionId}/comments`
- Auth: one of:
  - API key in header `x-api-key` and API key in header `x-air-workspace-id`
  - HTTP bearer and API key in header `x-air-workspace-id`
- TypeScript: <https://skmtc.dev/air/apis/air-api/docs/v1/discussions/:discussionId/comments/get.ts> (a function with typed inputs; its response is checked against the schema)

List every comment on a discussion, oldest first.

The cursor from `GET /v1/discussions` is accepted here. Comment bodies
are user-generated. Escape them before rendering HTML. A deleted
comment is absent. Polling this list does not tell you that a comment
was deleted.

Requires the `comments.read` OAuth scope.

## Query parameters

- `limit` string
- `cursor` string

## Response `200`

Comments listed, oldest first

- CommentList
  - `data` DiscussionComment[], required
    - `id` string, uuid, required
    - `discussionId` string, uuid, required
    - `body` string, required: Plain text with mentions rendered as `@Display Name`. Escape this before rendering HTML.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required: Equal to `createdAt` until the first edit that changes the stored text. An edit is `updatedAt !== createdAt`.
    - `author` DiscussionAuthor, required
      - `type` 'workspace_account' | 'anonymous', required
      - `id` string, uuid: Present when `type` is `workspace_account`. The account id.
      - `displayName` string, nullable, required
    - `mentions` DiscussionMention[], required
      - `id` string, uuid, required: Account id. The same id as `GET /v1/members` `id`.
      - `displayName` string, nullable, required
  - `pagination` CursorPage, required
    - `hasMore` boolean, required
    - `cursor` string, nullable, required: Present when `hasMore` is true. Send it as the next `cursor`.
  - `total` integer, required

## Other responses

- `400`: Invalid cursor
- `404`: Discussion not found, or you cannot view it

## Changes

- **2026-11-03** `8e6005b272a1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/air/apis/air-api/changes/v1/discussions/:discussionId/comments/get.md)

---

[API](https://skmtc.dev/air/apis/air-api.md) - [All operations](https://skmtc.dev/air/apis/air-api/llms.txt) - [OpenAPI document](https://skmtc.dev/air/apis/air-api/revisions/8e6005b272a1?raw)
