---
title: "Resolve comment thread"
method: POST
path: "/api/apps/{app_id}/comments/threads/{thread_id}/resolve"
---

# Resolve comment thread

`POST /api/apps/{app_id}/comments/threads/{thread_id}/resolve`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/comments/threads/{thread_id}/resolve`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Marks a comment thread as resolved. Any editor of the app can resolve any thread. Resolving a thread that's already resolved records the new time.

Resolved threads are left out of [List comments](/api-reference/list-comments) unless you set `include_resolved`. Reopen one with [Reopen comment thread](/api-reference/reopen-comment-thread). Anyone with the app open in the builder sees the change right away.

This is limited to 120 requests per minute per app, shared by every other comments endpoint. 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. Viewers in the app's workspace, read-only tokens, and workspace API keys are refused.</Note>

## Path parameters

- `app_id` string, required: ID of the app.
- `thread_id` string, required: ID of the comment thread, from `thread.id` in [List comments](/api-reference/list-comments) called with the same `branch_id`.

## Query parameters

- `branch_id` string: ID of the branch to work on, as returned by [List branches](/api-reference/list-branches). Omit it to work on the app's main branch.

## Response `200`

The thread is resolved.

- ResolvedThread
  - `resolved_at` string, date-time, required: When the thread was resolved, in UTC.

## Other responses

- `401`: Missing or invalid credentials.
- `403`: You don't have editor access to this app, you're a viewer in the app's workspace, the app is blocked, or your token is read-only or a workspace API key.
- `404`: App or comment thread not found, or no branch you can see has this `branch_id`. A thread is found only with the `branch_id` it was created on, or with no `branch_id` for a thread on main.
- `409`: Your workspace requires an unlocked SSO session.
- `429`: Rate limit exceeded. Wait the number of seconds in `Retry-After` before retrying.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-21** `c23775445de2`: 1 breaking, 1 info
  - `query` request parameter `branch_id` list-of-types was narrowed by removing types `null`
  - for the `query` request parameter `branch_id`, the type was generalized from no type to `string`
- **2026-10-21** `4e0beb03385b`: 1 info
  - added the new optional `query` request parameter `branch_id`
- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-06** `dddf17e0f9f0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/comments/threads/:thread_id/resolve/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
