---
title: "Update intent content fields (title, objective, outcomes, constraints, etc.). Does NOT change status — use the /status endpoint."
method: PATCH
path: "/api/v1/intents/{id}"
tags: ["intents"]
---

# Update intent content fields (title, objective, outcomes, constraints, etc.). Does NOT change status — use the /status endpoint.

`PATCH /api/v1/intents/{id}`

Content-only update; status/shipped_at/verified_at are NOT touched here. Always sets updated_at. Requires at least one updatable field (otherwise 400). When edgeCases is provided, the prior intent state is snapshotted first so a failed edge-case sync can roll back. Response is re-fetched with INTENT_WITH_RELATIONS_SELECT so edgeCases/evidenceIds/relations are fully populated. No rate limiting on this PATCH.

## Path parameters

- `id` string, required

## Query parameters

- `workspace_id` string

## Request body

- object
  - `expectedVersion` string — The specVersion this edit was based on, from a previous read. When supplied and no longer current, the update is refused with 409 and code VERSION_CONFLICT rather than silently overwriting whoever moved it. Opaque: carry it, do not compute or compare it — the value is derived server-side and the algorithm can change without a client release.
  - `title` string — Non-empty after trim if provided. Stored as user_goal.
  - `objective` string — Non-empty after trim if provided.
  - `currentState` string — Author-written as-is behavior (max 4000 chars). An empty string clears the field (net-new capability has no current state).
  - `outcomes` string[] — Replaces both outcomes_v2 and the flat outcomes text list.
  - `constraints` string[] — Replaces constraints (coerced to trimmed non-empty strings).
  - `healthMetrics` string[] — Replaces health_metrics (coerced to trimmed non-empty strings).
  - `edgeCases` object[] — Replace-all semantics via replaceIntentEdgeCasesRpc; on failure the intent is rolled back to its prior snapshot and 500 returned.
  - `verification` object — Replaces verification plan.
  - `problemSeverity` 'low' | 'medium' | 'high' | 'critical' — Nullable severity enum.
  - `evidenceAnchors` string — Map of anchor key (e.g. 'objective', 'outcome:0', 'edgeCase:<uuid>') to evidence id arrays.
  - `scope` string — Nullable scope object.

## Response `200`

OK — returns the full updated intent (re-fetched with relations)

- object

## Other responses

- `400` — Invalid request body (zod) — { error, details }; OR no updatable field provided ('At least one field must be provided to update'); OR cookie-session auth missing workspace_id
- `401` — Invalid/expired API key, or no Bearer key and no valid session cookie
- `403` — Lacks write scope; OR cookie auth not a member of the workspace
- `404` — Intent not found (PGRST116) within this workspace (on snapshot or update)
- `409` — code VERSION_CONFLICT: expectedVersion no longer matches. Re-read the intent, reapply the edit on top, and retry with the new specVersion.
- `500` — DB error, edge-case sync failure (intent rolled back to prior snapshot), or unexpected internal error

## Changes

- **2026-08-27** `e419abb0a327` — 2 breaking, 5 info
  - request property `outcomes/items/` was restricted to a list of enum values
  - the `edgeCases/items/` request property type/format changed from `string`/`` to `object`/``
  - added the new optional request property `expectedVersion`
  - added the new `could` enum value to the request property `outcomes/items/`
  - …3 more
- **2026-08-23** `155c812b368b` — 6 info
  - added the new optional request property `currentState`
  - added the optional property `details` to the response with the `400` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `details` to the response with the `403` status
  - …2 more

[Change history](https://skmtc.dev/pathmode/apis/pathmode-api/changes/api/v1/intents/:id/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-service-production.skmtc.workers.dev/v1/apis/pathmode/pathmode-api/revisions/e419abb0a327/schema)
