---
title: "Reject an unworkable open request, withdraw it from a signed-in workspace session, or accept a pending agent proposal (signed-in only) so the repository agent may consume and apply it. Applied/superseded states remain server-owned."
method: PATCH
path: "/api/v1/intents/{id}/change-requests/{requestId}"
tags: ["change requests"]
---

# Reject an unworkable open request, withdraw it from a signed-in workspace session, or accept a pending agent proposal (signed-in only) so the repository agent may consume and apply it. Applied/superseded states remain server-owned.

`PATCH /api/v1/intents/{id}/change-requests/{requestId}`

accept stamps a pending agent proposal as human-accepted (status stays open; it becomes consumable). applied is set only by the revision settlement transaction after a request-scoped repo sync satisfies the operation; unrelated body movement supersedes the request.

## Path parameters

- `id` string, required
- `requestId` string, required

## Request body

- object
  - `action` string, required — reject, withdraw, or accept. API keys may reject; only a signed-in writer may withdraw or accept. Accept applies only to an open, unaccepted agent proposal.
  - `reason` string — Concrete resolution reason (max 4000 chars). Required for reject and withdraw.

## Response `200`

Open request closed with actor/principal and reason

- object

## Other responses

- `400` — Invalid action or missing reason
- `401` — Missing or invalid API key/session
- `403` — Lacks write permission, or an API key attempted withdraw/accept (SESSION_REQUIRED)
- `404` — Request not found for this intent/workspace, or an agent proposal this API key may not see (another key's pending proposal)
- `409` — Request is no longer open (CHANGE_REQUEST_NOT_OPEN), or no pending proposal to accept (PROPOSAL_NOT_PENDING)
- `500` — DB error closing the request
- `503` — SCHEMA_MIGRATION_PENDING: the change-request functions in the database are out of date

## Changes

- **2026-09-04** `35441fda7ae7` — 3 info
  - the request property `reason` became optional
  - added the non-success response with the status `404`
  - added the non-success response with the status `503`
- **2026-09-01** `a660c0d36148` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pathmode/apis/pathmode-api/changes/api/v1/intents/:id/change-requests/:requestId/patch.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/f72c39208839?raw)
