The Notes service models content as a tree of nodes inside a notebook: sections, pages, channels, databases, and records. The endpoints on this page let you list, create, read, update, and delete nodes; read, write, merge, and append document content on page-bearing nodes; export content as HTML or SVG; and record per-user open/seen interactions.
Base URL template used by all cURL examples below:
https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.icu
Returns a paginated list of nodes the user has access to. Filterable by type, parentId, and rootId.
Name In Type Required Description typequery string No Restrict results to a node type (for example page, section) parentIdquery string No Restrict to direct children of the given node rootIdquery string No Restrict to descendants of the given root node limitquery integer No Maximum number of results (default 50) offsetquery integer No Number of results to skip (default 0) notebookIdpath string Yes Notebook identifier
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes?type=page&limit=25 " \
-H " Authorization: Bearer <token> "
await client . notes . nodes . list ( " nb_abc123 " , { type : " page " , limit : 25 });
" parentId " : " node_root01 " ,
" message " : " You do not have access to this node. " ,
{ " path " : " notebookId " , " message " : " nb_abc123 " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
Returns the full details of a single node by ID.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b " \
-H " Authorization: Bearer <token> "
await client . notes . nodes . get ( " nb_abc123 " , " node_8f3a2b " );
" parentId " : " node_root01 " ,
" description " : " First page new collaborators see " ,
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-15T11:24:00.000Z " ,
" updatedBy " : " user_def456 "
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
Resolves a page node by its safe alias within the notebook scope.
Name In Type Required Description notebookIdpath string Yes Notebook identifier aliaspath string Yes Safe alias of the page node
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/alias/onboarding " \
-H " Authorization: Bearer <token> "
await client . notes . nodes . getByAlias ( " nb_abc123 " , " onboarding " );
" parentId " : " node_root01 " ,
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-15T11:24:00.000Z " ,
" updatedBy " : " user_def456 "
" message " : " Invalid alias format. " ,
{ " path " : " alias " , " message " : " on boarding " }
" message " : " You do not have access to this node. " ,
{ " path " : " notebookId " , " message " : " nb_abc123 " }
" message " : " Node not found. " ,
{ " path " : " alias " , " message " : " onboarding " }
Returns a paginated list of direct children of the specified node.
Name In Type Required Description limitquery integer No Maximum number of results (default 50) offsetquery integer No Number of results to skip (default 0) notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Parent node identifier
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_root01/children?limit=10 " \
-H " Authorization: Bearer <token> "
await client . notes . nodes . listChildren ( " nb_abc123 " , " node_root01 " , { limit : 10 });
" parentId " : " node_root01 " ,
" attributes " : { " name " : " Step 1 " }
" parentId " : " node_root01 " ,
" attributes " : { " name " : " Step 2 " }
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_root01 " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_root01 " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
Creates a new node (section, page, channel, message, database, or record) in the notebook.
Name In Type Required Description notebookIdpath string Yes Notebook identifier
Field Type Required Description idstring No Optional client-supplied node ID typestring Yes Node type (for example page, section, channel, database) parentIdstring No Parent node ID; omit to create a top-level node attributesobject Yes Free-form attributes object (name, alias, icon, description, etc.)
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"parentId": "node_root01",
"name": "Onboarding Checklist",
await client . notes . nodes . create ( " nb_abc123 " , {
name : " Onboarding Checklist " ,
" parentId " : " node_root01 " ,
" name " : " Onboarding Checklist " ,
" createdAt " : " 2026-01-15T10:30:00.000Z " ,
" createdBy " : " user_abc123 "
" message " : " Invalid node type. " ,
{ " path " : " type " , " message " : " unknown type " }
Error Code Title Description Resolution bad_requestInvalid node data The request body is invalid — missing required fields or unsupported node type Check the node type is valid and all required attributes are provided
" message " : " You do not have permission to perform this action. " ,
{ " path " : " notebookId " , " message " : " nb_abc123 " }
Error Code Title Description Resolution forbiddenInsufficient permissions User role does not have permission for this action Request a higher role from the notebook or node admin
" message " : " Idempotency key conflict. " ,
{ " path " : " Idempotency-Key " , " message " : " key_123 " }
Error Code Title Description Resolution bad_requestIdempotency conflict A different request was already made with the same idempotency key Use a new idempotency key for a different request
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Updates node attributes (name, description, etc.). type and parentId cannot be changed.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Description attributesobject Yes Free-form attributes object containing the fields to update
curl -X PATCH " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"name": "Welcome (renamed)",
"description": "Updated onboarding landing page"
await client . notes . nodes . update ( " nb_abc123 " , " node_8f3a2b " , {
name : " Welcome (renamed) " ,
description : " Updated onboarding landing page "
" parentId " : " node_root01 " ,
" name " : " Welcome (renamed) " ,
" description " : " Updated onboarding landing page "
" updatedAt " : " 2026-01-16T14:22:11.000Z " ,
" updatedBy " : " user_def456 "
" message " : " Attribute cannot be changed. " ,
{ " path " : " type " , " message " : " type is immutable " }
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " Concurrent modification detected. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Permanently deletes a node and its associated data (documents, files, reactions).
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
curl -X DELETE " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b " \
-H " Authorization: Bearer <token> "
await client . notes . nodes . delete ( " nb_abc123 " , " node_8f3a2b " );
" message " : " You do not have permission to perform this action. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenInsufficient permissions User role does not have permission for this action Request a higher role from the notebook or node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Retrieves document content for a node. Supports block filtering via blockIds and line range queries via lines.
Name In Type Required Description blockIdsquery string No Comma-separated list of block IDs to include linesquery string No Line range expression (for example 1-10) outputquery string No Output format; one of json, md, html includeCommentsquery string No none (default) or appendixticketquery string No Export ticket required for output=html notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/document?output=md&includeComments=none " \
-H " Authorization: Bearer <token> "
await client . notes . documents . get ( " nb_abc123 " , " node_8f3a2b " , {
{ " type " : " text " , " text " : " Onboarding " }
{ " type " : " text " , " text " : " Welcome to the team. " }
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-16T14:22:11.000Z " ,
" updatedBy " : " user_def456 "
" message " : " Missing or invalid export ticket. " ,
{ " path " : " ticket " , " message " : " required for output=html " }
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Document not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundDocument not found No document content exists for this node, or the node type does not support documents Create document content with putDocument first
Creates a new document or fully replaces an existing document for a node.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Description contentobject Yes Full ProseMirror-style document tree (replaces the existing content)
curl -X PUT " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/document " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"content": [{ "type": "text", "text": "Welcome" }]
"content": [{ "type": "text", "text": "Hello, team." }]
await client . notes . documents . put ( " nb_abc123 " , " node_8f3a2b " , {
content : [{ type : " text " , text : " Welcome " }]
content : [{ type : " text " , text : " Hello, team. " }]
" content " : [{ " type " : " text " , " text " : " Welcome " }]
" content " : [{ " type " : " text " , " text " : " Hello, team. " }]
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-16T14:22:11.000Z " ,
" updatedBy " : " user_def456 "
" message " : " Node type does not support documents. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution bad_requestUnsupported node type This node type does not support document content Only page, channel, and similar node types support documents
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin forbiddenInsufficient permissions User role does not have permission for this action Request a higher role from the notebook or node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Merges content into an existing document at the top level. Existing blocks are preserved unless overwritten.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Description contentobject Yes Partial ProseMirror-style document tree to merge at the top level
curl -X PATCH " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/document " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"attrs": { "id": "block_a1b2c3" },
"content": [{ "type": "text", "text": "Updated paragraph." }]
await client . notes . documents . patch ( " nb_abc123 " , " node_8f3a2b " , {
attrs : { id : " block_a1b2c3 " },
content : [{ type : " text " , text : " Updated paragraph. " }]
" attrs " : { " id " : " block_a1b2c3 " },
" content " : [{ " type " : " text " , " text " : " Updated paragraph. " }]
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-16T14:22:11.000Z " ,
" updatedBy " : " user_def456 "
" message " : " Node type does not support documents. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution bad_requestUnsupported node type This node type does not support document content Only page, channel, and similar node types support documents
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin forbiddenInsufficient permissions User role does not have permission for this action Request a higher role from the notebook or node admin
" message " : " Document not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundDocument not found No document exists for this node — create it with putDocument first Use putDocument to create the document before patching
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Appends one or more blocks to the END of a node’s rich-text document. The server assigns each block id, parentId, and index — any client-supplied id, parentId, or index (including attrs.id) is rejected. Provide either text (a single block from plain text; newlines are NOT split — the text is stored as one literal block) OR blocks (flat root blocks), never both. If the document does not exist yet it is created. Pass X-Idempotency-Key to make retries safe (a repeated key plus identical body replays the original response; a different body with the same key returns 409). Appendable block types: paragraph, heading1, heading2, heading3, codeBlock, horizontalRule.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier X-Idempotency-Keyheader string No Optional idempotency key (max 256 chars). Reusing the same key with an identical request body and node replays the original response; reusing it with a different body or node returns 409.
The body is one of two shapes (never both).
Shape A — plain text (single block):
Field Type Required Description textstring Yes Plain text content (newlines are not split, the text becomes one literal block) typestring No Block type; one of paragraph, heading1, heading2, heading3, codeBlock (default paragraph) attrsobject | null No Optional block attributes
Shape B — explicit blocks (flat root blocks):
Field Type Required Description blocksarray Yes Array of 1 to 100 root blocks to append blocks[].typestring No One of paragraph, heading1, heading2, heading3, codeBlock, horizontalRule (default paragraph) blocks[].contentarray No Inline content nodes; each node has type: "text", text, and optional marks blocks[].attrsobject | null No Optional block attributes
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/document/append " \
-H " Authorization: Bearer <token> " \
-H " X-Idempotency-Key: key_123 " \
-H " Content-Type: application/json " \
"text": "Second section begins here.",
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/document/append " \
-H " Authorization: Bearer <token> " \
-H " X-Idempotency-Key: key_124 " \
-H " Content-Type: application/json " \
{ "type": "text", "text": "Hello world." }
await client . notes . documents . appendDocument (
content : [{ type : " text " , text : " Hello world. " }]
{ type : " horizontalRule " }
{ XIdempotencyKey : " key_124 " }
" attrs " : { " id " : " block_a1b2c3 " },
" content " : [{ " type " : " text " , " text " : " Hello world. " }]
" type " : " horizontalRule " ,
" attrs " : { " id " : " block_d4e5f6 " }
" createdAt " : " 2026-01-10T08:00:00.000Z " ,
" createdBy " : " user_abc123 " ,
" updatedAt " : " 2026-01-16T14:22:11.000Z " ,
" updatedBy " : " user_def456 " ,
" appendedBlockIds " : [ " block_a1b2c3 " , " block_d4e5f6 " ]
" message " : " This node type does not support documents. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution bad_requestInvalid append request The request body is invalid — provide exactly one of text or blocks, a non-empty text, an allowed block type, no server-managed fields (id/parentId/index/attrs.id), at most 100 blocks, and content under the size limit. Also returned when the node type does not support documents. Send a valid append payload to a page (or other document-bearing) node
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin forbiddenInsufficient permissions User role does not have permission for this action Request a higher role from the notebook or node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " Idempotency key already used with a different request. " ,
{ " path " : " X-Idempotency-Key " , " message " : " key_124 " }
Error Code Title Description Resolution bad_requestIdempotency key conflict The X-Idempotency-Key was already used with a different request body or node Use a fresh X-Idempotency-Key for a different append, or resend the identical request to replay
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Creates a short-lived export ticket for static HTML document delivery. The ticket is required to fetch output=html from getDocument.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Default Description outputstring No "html"Output format; only "html" is supported includeCommentsstring No "none"none or appendixincludeBackgroundboolean No trueInclude the page background in the export themeModestring No "dark"light or darkthemeIdstring | null No — Optional theme identifier (max 64 chars) themeVariablesobject No — Map of theme variable name to string value fileNamestring No — Suggested file name for the export (max 128 chars)
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/export-ticket " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"includeComments": "appendix",
"fileName": "Onboarding.html"
await client . notes . documents . createExportTicket ( " nb_abc123 " , " node_8f3a2b " , {
includeComments : " appendix " ,
fileName : " Onboarding.html "
" ticket " : " tkt_4f1a2b3c8d9e " ,
" expiresAt " : " 2026-01-15T11:00:00.000Z " ,
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Renders a drawing block as an SVG image. Supports an optional background color and scale factor. The response is a raw image/svg+xml payload.
Name In Type Required Description bgquery string No Background color (for example "transparent", "#ffffff") scalequery number No Render scale factor notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier blockIdpath string Yes Drawing block identifier
curl -X GET " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/blocks/block_d12/svg?bg=transparent&scale=2 " \
-H " Authorization: Bearer <token> "
await client . notes . documents . exportBlockSvg (
{ bg : " transparent " , scale : 2 }
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< svg xmlns = " http://www.w3.org/2000/svg " viewBox = " 0 0 400 300 " >
< rect width = " 100% " height = " 100% " fill = " transparent " />
< path d = " M10 80 Q 95 10 180 80 T 390 80 " stroke = " #222 " fill = " none " stroke-width = " 2 " />
Records that the current user has opened the node. Tracks first and last opened timestamps.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Description openedAtstring No Optional ISO 8601 timestamp; defaults to the current server time
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/interactions/opened " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
await client . notes . interactions . markOpened ( " nb_abc123 " , " node_8f3a2b " , {});
" collaboratorId " : " user_abc123 " ,
" firstOpenedAt " : " 2026-01-15T10:30:00.000Z " ,
" lastOpenedAt " : " 2026-01-15T10:30:00.000Z "
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " Idempotency key conflict. " ,
{ " path " : " Idempotency-Key " , " message " : " key_456 " }
Error Code Title Description Resolution bad_requestIdempotency conflict A different request was already made with the same idempotency key Use a new idempotency key for a different request
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support
Records that the current user has seen the node. Tracks first and last seen timestamps.
Name In Type Required Description notebookIdpath string Yes Notebook identifier nodeIdpath string Yes Node identifier
Field Type Required Description seenAtstring No Optional ISO 8601 timestamp; defaults to the current server time
curl -X POST " https://proj_demo1-cont_main-notes-1.us-east-1.containers.hoody.icu/api/v1/notes/notebooks/nb_abc123/nodes/node_8f3a2b/interactions/seen " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
await client . notes . interactions . markSeen ( " nb_abc123 " , " node_8f3a2b " , {});
" collaboratorId " : " user_abc123 " ,
" firstSeenAt " : " 2026-01-15T10:29:55.000Z " ,
" lastSeenAt " : " 2026-01-15T10:29:55.000Z " ,
" message " : " You do not have access to this node. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution forbiddenAccess denied User does not have permission to access this node Check collaborator list or request access from the node admin
" message " : " Node not found. " ,
{ " path " : " nodeId " , " message " : " node_8f3a2b " }
Error Code Title Description Resolution not_foundNode not found No node exists with the provided ID in this notebook Verify node ID using listNodes or listNodeChildren
" message " : " Idempotency key conflict. " ,
{ " path " : " Idempotency-Key " , " message " : " key_789 " }
Error Code Title Description Resolution bad_requestIdempotency conflict A different request was already made with the same idempotency key Use a new idempotency key for a different request
" message " : " An unexpected error occurred. " ,
Error Code Title Description Resolution unknownInternal server error An unexpected error occurred while processing the request Retry the request; if it persists, contact support