---
title: "Set or clear a Brainstorming Review feedback stance. When countAgentSignals is enabled, registered agent aliases can provide independent signals."
method: POST
path: "/api/v1/draft-reviews/{sessionId}/comments/{threadId}/feedback"
tags: ["Draft reviews"]
---

# Set or clear a Brainstorming Review feedback stance. When countAgentSignals is enabled, registered agent aliases can provide independent signals.

`POST /api/v1/draft-reviews/{sessionId}/comments/{threadId}/feedback`

## Request

- Base URL: `https://commentary.dev`
- URL: `https://commentary.dev/api/v1/draft-reviews/{sessionId}/comments/{threadId}/feedback`
- Auth: HTTP bearer

## Path parameters

- `sessionId` string, required
- `threadId` string, required

## Headers

- `X-Commentary-Workspace-Id` string
- `X-Correlation-Id` string

## Request body

- ThreadFeedbackRequest
  - `signal` 'agree' | 'object' | 'blocker' | 'needs_clarification' | 'addressed', required: agree, object, blocker, and needs_clarification are exclusive reviewer stances per actor and thread. addressed is owner-only and clears unresolved feedback.
  - `active` boolean
  - `agentAlias` string, nullable
  - `clientName` string, nullable

## Response `200`

Successful response.

- object
  - `ok` unknown
  - `thread` ReviewThread
    - `id` string
    - `filePath` string
    - `status` 'open' | 'resolved'
    - `anchorStatus` string
    - `blockId` string
    - `nodeType` string
    - `sourceLineStart` integer
    - `sourceLineEnd` integer
    - `selectedText` string, nullable
    - `prefixText` string, nullable
    - `suffixText` string, nullable
    - `artifactKind` 'markdown' | 'html' | 'form' | 'image' | 'svg' | 'mermaid'
    - `visualTarget` ReviewVisualTarget
      - `surfaceKind` 'raster_image' | 'svg' | 'mermaid', required
      - `surfaceId` string, required
      - `occurrenceId` string, required
      - `sourceKind` 'repository' | 'draft' | 'embedded' | 'external', required
      - `sourcePath` string, nullable
      - `sourceRef` string, nullable
      - `sourceHash` string, nullable
      - `sourceLanguage` 'binary' | 'svg' | 'mermaid' | 'markdown' | 'html', required
      - `intrinsicWidth` integer, nullable
      - `intrinsicHeight` integer, nullable
      - `viewBox` string, nullable
      - `region` VisualRegion, required
        - `x` number, required
        - `y` number, required
        - `width` number, required
        - `height` number, required
      - `hostArtifactKind` 'markdown' | 'html' | 'form' | 'image' | 'svg' | 'mermaid', required
      - `hostFilePath` string, required
      - `hostBlockId` string, required
      - `sourceLineStart` integer, nullable
      - `sourceLineEnd` integer, nullable
      - `slideId` string, nullable
      - `elementHint` object, nullable
        - `id` string, nullable
        - `tagName` string, nullable
        - `accessibleName` string, nullable
        - `title` string, nullable
      - `editable` boolean, required
    - `feedbackSignals` object[]
    - `feedbackSummary` object, nullable
    - `consensus` object, nullable
    - `comments` object[]
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `threadId` string
  - `commentId` string
  - `status` string

## Other responses

- `400`: The request was invalid.
- `401`: Authentication is required.
- `403`: The token or session does not have permission for this resource.
- `404`: The resource was not found.
- `429`: The request was rate limited.

---

[API](https://skmtc.dev/commentary/apis/commentary-public-api.md) · [All operations](https://skmtc.dev/commentary/apis/commentary-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commentary/apis/commentary-public-api/revisions/7aaafc198c52?raw)
