---
title: "List comments on a deal"
method: GET
path: "/public-api/v1/deals/{deal_id}/comments"
tags: ["Comments"]
---

# List comments on a deal

`GET /public-api/v1/deals/{deal_id}/comments`

## Request

- Base URL: `https://app.hellobonsai.com`
- URL: `https://app.hellobonsai.com/public-api/v1/deals/{deal_id}/comments`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://app.hellobonsai.com/oauth/authorize`
    - Token URL: `https://app.hellobonsai.com/oauth/token`
  - HTTP bearer

Lists the comments on one deal, newest first.

Comments always belong to a deal or a
task, so there is no
endpoint that lists them all — you read them per record. A
deal you cannot see returns `404`.

Two kinds of entry live in this thread: comments people wrote
(`user_created`) and the activity Bonsai records on its own
(`event`) — status changes, reassignments and the like. Only the
written comments come back by default; use `filter[kind]` to get the
activity entries instead, or both together.

## Path parameters

- `deal_id` string, required

## Query parameters

- `filter[kind]` 'user_created' | 'events' | 'all'
- `page[number]` integer
- `page[size]` integer

## Response `200`

A page of comments, newest first.

- object
  - `data` Comment[], required
    - `id` integer, required: Unique identifier for the comment.
    - `kind` 'user_created' | 'event', required: `user_created` for a comment someone wrote, `event` for an entry Bonsai recorded automatically, such as a status change or a reassignment.
    - `commentable_type` string, nullable, required: Type of record the comment is attached to — `Task` or `Deal`.
    - `created_at` string, date-time, required: When the comment was posted.
    - `body_plain_text` string, nullable, required: The comment body with all HTML removed.
    - `commentable_id` string, nullable, required: Identifier of the record the comment is attached to, always serialized as a string: the task's `uuid` for a task comment, the numeric id for a deal comment.
    - `author_member_id` integer, nullable, required: Team member id of the author, or `null` when the author is no longer a member of your account.
  - `meta` PaginatedMeta, required: Metadata returned alongside every list response.
    - `request_id` string, required: Identifier for this request. Quote it when contacting support about a specific call.
    - `pagination` Pagination, required: Where the returned page sits in the full result set.
      - `page` integer, required: The page that was returned.
      - `page_size` integer, required: How many records this page can hold.
      - `has_more` boolean, required: Whether at least one more page follows this one. Keep incrementing `page[number]` while this is `true`.

## Other responses

- `400`: `filter[kind]` is not `user_created`, `events` or `all`.
- `401`: The access token is missing, expired or invalid.
- `403`: This token is not allowed to read this record's comments.
- `404`: No such deal in your account, or this token cannot see it.
- `429`: Rate limit exceeded. Wait at least `Retry-After` seconds before trying again.

---

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