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

# Create a Knowledge Base note

`POST /api/v4/workspaces/{workspace}/notes`

Create a note. Leave resourcePaths empty for a global note, or set them to scope the note to specific resources. Use resourceSelectors with tag matchTags to attach the note to every resource carrying a given tag.

## Path parameters

- `workspace` string, required

## Request body

- NoteCreateV4
  - `title` string, nullable — Short note title
  - `content` string, required — Note content
  - `resourcePaths` string[] — Canonical resource paths to scope the note. Omit or leave empty for a global note.
  - `resourceSelectors` ResourceSelectorV4[] — Tag selectors resolved to resources by the platform
    - `matchTags` object — Tag key/value equalities, ANDed together
  - `abstractEntities` string[] — Normalized entity tokens (optional)
  - `tags` string[] — Author-facing labels
  - `status` 'active' | 'deprecated'

## Response `201`

Note created

- 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)

---

[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)
