---
title: "A signed-in reviewer confirms, rejects, or withdraws their judgment of ONE claim (objective, outcome, constraint or edge case) in an agent-originated proposal. The judgment is recorded under the reviewer's name and sent to the agent; it neither authorizes nor blocks implementation."
method: POST
path: "/api/v1/intents/{id}/claim-confirmations"
tags: ["intents"]
---

# A signed-in reviewer confirms, rejects, or withdraws their judgment of ONE claim (objective, outcome, constraint or edge case) in an agent-originated proposal. The judgment is recorded under the reviewer's name and sent to the agent; it neither authorizes nor blocks implementation.

`POST /api/v1/intents/{id}/claim-confirmations`

Claim judgments are stored in the same column as readiness confirmations but are returned separately, as claimConfirmations on GET /api/v1/intents/:id; the confirmations field carries readiness records only. They never feed the readiness verdict and never change the repository body revision. A judgment is live while the claim still reads as judged; an edited claim shows its judgment as covering the earlier wording. Amending a claim is a change request, not a judgment.

## Path parameters

- `id` string, required

## Query parameters

- `workspace_id` string, required

## Request body

- object
  - `claim` string, required — Claim key: 'objective', 'outcome:<id>', 'constraint:<index>', or 'edgeCase:<id>'.
  - `action` string, required — 'confirm', 'reject', or 'clear' (withdraw your judgment).
  - `anchor` string — Required to confirm or reject: the digest of the claim text you read. A mismatch with the stored text is a 409, never a judgment of text you did not see.
  - `reason` string — Required to reject (max 600 chars): what is wrong with the claim. The agent receives it.

## Response `200`

Judgment recorded (or nothing to withdraw) — returns the intent's claimConfirmations and the new record

- object

## Other responses

- `400` — Invalid body; a rejection without a reason (REASON_REQUIRED); or the intent is not agent-originated (NOT_A_PROPOSAL)
- `401` — No valid session
- `403` — An API key (SESSION_REQUIRED): an agent cannot judge its own proposal; or the member is not an owner/admin/editor
- `404` — Intent not found, or the proposal no longer makes that claim (CLAIM_NOT_FOUND)
- `409` — The claim text changed after it was read (CLAIM_CHANGED, with currentText); or the row kept changing mid-write (VERSION_CONFLICT)
- `422` — The intent already holds the maximum number of claim judgments (CLAIM_LIMIT)
- `500` — DB error or unexpected internal error

## Changes

- **2026-09-23** `c014a089aa9c` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pathmode/apis/pathmode-api/changes/api/v1/intents/:id/claim-confirmations/post.md)

---

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