---
title: "Update a note"
method: PATCH
path: "/api/v4/workspaces/{workspace}/notes/{noteId}"
tags: ["Knowledge Base"]
---

# Update a note

`PATCH /api/v4/workspaces/{workspace}/notes/{noteId}`

Partial update — omitted fields are left unchanged. Externally-synced notes (sourceKind != manual) are read-only and return 409.

## Path parameters

- `workspace` string, required
- `noteId` string, uuid, required

## Request body

- NoteUpdateV4 — Partial update — omitted fields are left unchanged.
  - `title` string, nullable
  - `content` string
  - `resourcePaths` string[]
  - `resourceSelectors` ResourceSelectorV4[]
    - `matchTags` object — Tag key/value equalities, ANDed together
  - `abstractEntities` string[]
  - `tags` string[]
  - `status` 'active' | 'deprecated'
  - `verified` boolean

## Response `200`

Updated note

- NoteResponseV4 — Full note response. Notes feed the Knowledge Overlay Graph that AI Assistants consult during investigations.
  - `noteId` string, uuid — Unique note identifier
  - `title` string, nullable — Short note title
  - `content` string — Note content (max 20000 chars)
  - `resourcePaths` string[] — Authored explicit resource paths
  - `resourceSelectors` ResourceSelectorV4[] — Authored tag selectors
    - `matchTags` object — Tag key/value equalities, ANDed together
  - `resourceLinks` NoteResourceLinkV4[] — Resolved concrete attachments (reconciler-owned)
    - `resourcePath` string — Concrete resource path the note attaches to
    - `matchReason` string — "explicitPath" | "selector"
    - `matchedSelector` integer, nullable — Index into resourceSelectors (null for explicit paths)
  - `lastResolvedAt` string, date-time, nullable
  - `resolutionState` string, nullable — ok | pending | error
  - `indexingState` string, nullable — USearch index state (completed | failed | queued | ...)
  - `abstractEntities` string[]
  - `tags` string[] — Author-facing labels
  - `status` string — Note lifecycle status (active | deprecated)
  - `verified` boolean — Whether note is human-verified
  - `authorEmail` string, nullable
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `sourceKind` string — Origin: "manual" or external (e.g. "git")
  - `source` string, nullable — Origin/collection (e.g. repo URL)
  - `sourceId` string, nullable — Identifier within the source (e.g. file path)
  - `sourceRef` string, nullable — Version pointer at last sync (e.g. commit)
  - `readOnly` boolean — True for externally-synced notes (edit at source)

## Other responses

- `404` — Note not found
- `409` — Note is externally owned — edit at source

---

[API](https://skmtc.dev/runwhen/apis/runwhen-platform-api.md) · [All operations](https://skmtc.dev/runwhen/apis/runwhen-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runwhen/runwhen-platform-api/revisions/9d1a64d4b1c1/schema)
