---
title: "Update knowledge node"
method: PATCH
path: "/v1/kb/nodes/{node_id}"
tags: ["kb"]
---

# Update knowledge node

`PATCH /v1/kb/nodes/{node_id}`

Partial update of a knowledge node. Requires a token with `read_write` access.

## Path parameters

- `node_id` string, required — Knowledge node id (24 hex characters).

## Query parameters

- `workspace_id` string, required — Workspace to query.

## Request body

- object
  - `title` string — New display title.
  - `body` string — New markdown or plain-text body. Triggers re-indexing.
  - `parent_id` string, nullable — Set to null to move the node to the workspace root. Omit to leave the parent unchanged.
  - `entity_ids` string[] — Replaces the full entity scope. Pass `[]` to make the node workspace-wide.
  - `metadata` object — Replaces the full metadata object. Pass `{}` to clear.
  - `enabled` boolean — Toggle agent visibility. Disabled nodes are excluded from search.
  - `tags` string[] — Replaces the full tag set. Pass `[]` to clear.

## Response `200`

Knowledge node updated

- object
  - `data` object, required
    - `id` string, required
    - `workspace_id` string, required
    - `title` string, required
    - `body` string, required
    - `chunk_body` boolean, required — True when the body is chunked and embedded for search.
    - `entity_ids` string[], required
    - `parent_id` string, nullable, required
    - `ancestors` string[], required — Ordered ancestor node ids from root to immediate parent.
    - `depth` number, required — Depth in the tree, 0 = root.
    - `source` 'google_drive' | 'notion' | 'airtable' | 'link' | 'pms' | 'ingest' | 'manual', required
    - `source_type` 'pdf' | 'csv' | 'excel' | 'docx' | 'text' | 'html', nullable, required
    - `source_id` string, nullable, required
    - `is_directory` boolean, required — True for folder nodes that group children.
    - `metadata` object, nullable, required
    - `enabled` boolean, required
    - `created_by` string, nullable, required
    - `embed_status` string, nullable, required — Embedding pipeline state (pending, ready, failed).
    - `chunk_count` number, nullable, required
    - `version` number, required
    - `tags` string[], required
    - `created_at` string, required
    - `updated_at` string, required

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `429` — Rate limit exceeded
- `500` — Internal error
- `503` — Knowledge service temporarily unavailable

---

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