List comments
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Returns the app's open comment threads with all their comments, newest first. Set include_resolved to true to include resolved threads too.
Each branch has its own comment threads. Set branch_id to work with a branch's threads. Leave it out for main's. Merging or deleting a branch deletes its threads, so treat a merged branch's threads as gone.
Threads are ordered by when they were created, newest first. A page holds up to limit threads, 500 by default. While has_more is true, request the next page with cursor set to next_cursor and the same branch_id, and nothing else beside them. A cursor works for 24 hours, only on this app and branch. A thread created after you start paging shows up on a fresh first page, not in later pages.
Screenshot links in the response work for one hour. Call this again for fresh ones, or use Create comment screenshot link for a link that lasts a year.
This is limited to 600 requests per minute per app, shared by List comments and List mentionable users. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit. Every request that counts against the limit gets X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix time in seconds) headers, and a 429 also gets Retry-After in seconds. If the limiter itself is unavailable, requests go through without these headers.
<Note>Call this as an editor of the app, with a personal access token sent as a Bearer token or from a signed-in session. A read-only token works here. Workspace API keys aren't accepted.</Note>
<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>
Request
- Base URLhttps://app.base44.com
- URLhttps://app.base44.com/api/apps/{app_id}/comments
- AuthHTTP bearer
Path parameters
ID of the app.
Query parameters
Set to true to include resolved threads. Defaults to false.
Threads per page, 1 to 500. Defaults to 500.
next_cursor from the previous page. Send it on its own: it carries include_resolved and limit, so sending either beside it returns a 400.
ID of the branch to work on, as returned by List branches. Omit it to work on the app's main branch.
Response
One page of the app's comment threads, newest first.
Example response
{
"items": [
{
"comment": {
"content": "Make this button match the header color.",
"created_date": "2026-10-05T09:14:22.512000Z",
"id": "68e2b7c4d4f0a9001c3e5a1c",
"reactions": {},
"sender_id": "6820f41be7b91d003c45a20a",
"sender_name": "Dana Levi"
},
"reactor_names": {},
"replies": [],
"thread": {
"anchor": {
"element_tag": "button",
"source_location": "pages/Pricing.jsx:42:8"
},
"created_date": "2026-10-05T09:14:22.512000Z",
"id": "68e2b7c1d4f0a9001c3e5a17",
"last_activity_at": "2026-10-05T09:14:22.512000Z",
"message_count": 0,
"page_path": "/pricing",
"unread": true
}
}
],
"next_cursor": "gAAAAABn7vJ0q2kX"
}Changes
- breaking
queryrequest parametercursorlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterinclude_resolvedlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterlimitlist-of-types was narrowed by removing typesnull - breaking
for the
queryrequest parameterinclude_resolved, the type changed from no type toboolean - breaking
for the
queryrequest parameterlimit, the type changed from no type tointeger - warning
for the
queryrequest parameterlimit, the max was set to500.00 - warning
for the
queryrequest parameterlimit, the min was set to1.00 - info
added the new optional
queryrequest parameterbranch_id - info
for the
queryrequest parametercursor, the type was generalized from no type tostring
- breaking
- info
the endpoint scheme security
PersonalAccessTokenAuthwas added to the API
- info