---
title: "A signed-in writer accepts, rejects or waives one graded item of one pre-merge run with a reason. The GitHub check run is re-posted so the decision shows on the pull request."
method: POST
path: "/api/v1/intents/{id}/premerge-reviews/{reviewId}/resolutions"
tags: ["pre-merge review"]
---

# A signed-in writer accepts, rejects or waives one graded item of one pre-merge run with a reason. The GitHub check run is re-posted so the decision shows on the pull request.

`POST /api/v1/intents/{id}/premerge-reviews/{reviewId}/resolutions`

One resolution per itemKey per run; a later decision replaces the earlier one on the run (both remain in analytics). When the PR receives a new head, resolutions carry to the new run only for items whose judgment is unchanged (same key, same status), and the carried copy names the run where the person decided (carriedFrom). The merge path copies the run that graded the merged head, with its resolutions, into the intent's verification_result.premerge and the implementation note. Resolutions are deliberate human judgment and count toward the loop metric; automatic runs do not.

## Path parameters

- `id` string, required
- `reviewId` string, required

## Request body

- object
  - `itemKey` string, required — The item's key as returned by GET (verification:<checkId> or <category>:<item text>).
  - `action` string, required — accept (the drift is real and will be fixed), reject (the grader is wrong), or waive (real, merging anyway).
  - `reason` string, required — Why (max 4000 chars). Required for all three actions.

## Response `200`

Decision stored; returns the updated run

- object

## Other responses

- `400` — Invalid body (unknown action, missing reason)
- `401` — Missing or invalid session
- `403` — Lacks write permission, or an API key attempted to resolve (SESSION_REQUIRED)
- `404` — Run not found for this intent/workspace, or no graded item with that itemKey (ITEM_NOT_FOUND)
- `409` — The run was unavailable and has no verdict (REVIEW_UNAVAILABLE), or it changed while deciding (VERSION_CONFLICT)
- `500` — DB error storing the decision

## Changes

- **2026-09-04** `35441fda7ae7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pathmode/apis/pathmode-api/changes/api/v1/intents/:id/premerge-reviews/:reviewId/resolutions/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/c7d545bf359b?raw)
