---
title: "Update Node"
method: PUT
path: "/v1/nodes/{node_id}"
tags: ["nodes"]
---

# Update Node

`PUT /v1/nodes/{node_id}`

## Request

- Base URL: `https://api.june.januraine.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.june.januraine.ai/v1/nodes/{node_id}`
- Auth: none declared

In-place content edit (2026-08-11). Fenced like every write: the node is loaded with
workspace in the WHERE clause, and the re-``ingest`` (NodeUpsert on the SAME id) carries
the caller's ctx — so an edit physically cannot cross a workspace. 404 = "no live node
with this id in your workspace". Reversible: the prior content is one more edit away, and
the node was never deleted.

## Path parameters

- `node_id` string, uuid, required

## Headers

- `X-Canvas` string, nullable
- `X-API-Key` string, nullable
- `Authorization` string, nullable

## Request body

- NodeUpdateIn: Edit a node's human text in place — the inline-edit contract for view rows/cards. ``text`` is the new content. For a block-style node (page block, i.e. one carrying ``extra['text']`` or ``subtype == 'block'``) the body becomes ``text`` and the label is re-derived as its 80-char preview, so a view row and the page editor stay in sync. For any other node (an entity, a decision) the ``text`` IS the label — this is a rename. Either way the write rides the same workspace-fenced ``ingest`` seam every mutation uses; full ``extra`` is preserved (only the touched keys change), so nothing else about the node is disturbed.
  - `text` string, required
  - `node_type` string, nullable

## Response `200`

Successful Response

- NodeDetailListOut: A node_id may exist under several types (same contract as DELETE below): no ``node_type`` returns every live row for the id, an explicit type narrows.
  - `node_id` string, required
  - `items` NodeDetailOut[], required
    - `node_id` string, required
    - `node_type` string, required
    - `label` string, required
    - `source_app` string, required
    - `text` string, required
    - `raw_text` string
    - `context` string, nullable
    - `extra` object, required
    - `created_at` string, nullable
    - `updated_at` string, nullable
    - `community_id` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/januraine/apis/june-ai.md) · [All operations](https://skmtc.dev/januraine/apis/june-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/januraine/apis/june-ai/revisions/097b95b163c7?raw)
