Nodes
Workspace tree: folders, Bases, files, agents.
Query Parameters
Node to start from. Omit or null to start from the space root.
How many levels beneath the start point to eagerly include (default 2 once either field is set). Capped at 5.
1 <= value <= 5active walks the live TREE. archived returns a FLAT list of soft-archived nodes (the Trash view) with no parent/depth walk — so the response shape you can rely on differs between the two, not just the rows.
"active"Value in
- "active"
- "archived"
Return a flat list of lightweight summaries for these node types instead of the tree. Read one node's full detail with GET /nodes/{nodeId}.
Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes"[ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }]Query Parameters
Matched against node NAMES only. Use /api/v1/search to search content.
1 <= lengthResults to return. Capped at 50 here, unlike most listings' 100.
1 <= value <= 5020Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/search?query=string"[ { "id": "string", "type": "folder", "name": "string", "slug": "string", "path": "string", "updatedAt": "string", "icon": { "type": "emoji", "value": "string" } }]Path Parameters
The node walked UPWARDS from — the possible descendant.
Query Parameters
The node looked for on the way up. Answers "is nodeId inside this one?", not the reverse — swapping the two silently returns the wrong answer rather than an error.
Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/string/is-descendant?potentialAncestorId=string"{ "isDescendant": true}Path Parameters
Node id, or a slug that is unique within its type.
Query Parameters
Optional disambiguation hint, only needed when nodeId is a slug that exists under more than one node type.
Value in
- "folder"
- "base"
- "skill"
- "drive"
- "airapp"
- "file"
- "doc"
- "form"
- "whiteboard"
- "workflow"
- "html"
Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/string/ancestors"{ "ancestorIds": [ "string" ]}Path Parameters
Node id, or a slug that is unique within its type.
Query Parameters
Optional disambiguation hint, only needed when nodeId is a slug that exists under more than one node type.
Value in
- "folder"
- "base"
- "skill"
- "drive"
- "airapp"
- "file"
- "doc"
- "form"
- "whiteboard"
- "workflow"
- "html"
Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/route-state/string"{ "status": "active", "nodeId": "string"}Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/change-requests" \ -H "Content-Type: application/json" \ -d '{ "operations": [ { "kind": "create", "nodeType": "folder", "slug": "string", "name": "string" } ] }'{ "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "status": "in_review", "submittedBy": "string", "submittedByUser": null, "sourceAttribution": { "displayName": "string", "ownerName": "string", "channel": "web_ui" }, "sourceMeta": { "property1": null, "property2": null }, "reviewPolicySnapshot": { "property1": null, "property2": null }, "mergeSummary": { "property1": null, "property2": null }, "rejectedReason": "string", "reviewedAt": "string", "mergedAt": "string", "createdAt": "string", "updatedAt": "string", "base": { "id": "string", "nodeId": "string", "slug": "string", "name": "string", "description": "string", "reviewPolicy": { "kind": "single", "requiredApprovals": 0 }, "createdAt": "string", "fields": [ { "id": "string", "baseId": "string", "slug": "string", "name": "string", "type": "text", "required": true, "position": 0, "options": {} } ] }, "node": { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }, "operations": [ { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } } ], "primaryOperation": { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } }, "operationCount": 0, "reviews": [ { "id": "string", "changeRequestId": "string", "reviewerId": "string", "reviewer": null, "verdict": "approved", "reason": "string", "visibleOperationHeads": { "property1": "string", "property2": "string" }, "createdAt": "string" } ]}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/string/move" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "status": "in_review", "submittedBy": "string", "submittedByUser": null, "sourceAttribution": { "displayName": "string", "ownerName": "string", "channel": "web_ui" }, "sourceMeta": { "property1": null, "property2": null }, "reviewPolicySnapshot": { "property1": null, "property2": null }, "mergeSummary": { "property1": null, "property2": null }, "rejectedReason": "string", "reviewedAt": "string", "mergedAt": "string", "createdAt": "string", "updatedAt": "string", "base": { "id": "string", "nodeId": "string", "slug": "string", "name": "string", "description": "string", "reviewPolicy": { "kind": "single", "requiredApprovals": 0 }, "createdAt": "string", "fields": [ { "id": "string", "baseId": "string", "slug": "string", "name": "string", "type": "text", "required": true, "position": 0, "options": {} } ] }, "node": { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }, "operations": [ { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } } ], "primaryOperation": { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } }, "operationCount": 0, "reviews": [ { "id": "string", "changeRequestId": "string", "reviewerId": "string", "reviewer": null, "verdict": "approved", "reason": "string", "visibleOperationHeads": { "property1": "string", "property2": "string" }, "createdAt": "string" } ]}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PATCH "https://example.com/api/v1/nodes/string/metadata" \ -H "Content-Type: application/json" \ -d '{ "metadata": { "property1": null, "property2": null } }'{ "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PATCH "https://example.com/api/v1/nodes/string/settings" \ -H "Content-Type: application/json" \ -d '{ "settings": {} }'{ "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true}curl -X GET "https://example.com/api/v1/nodes/string/agent-prompts"{ "nodeId": "string", "agentPrompts": [ { "key": "string", "intent": "read-only", "label": "string", "body": "string" } ]}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/api/v1/nodes/string/agent-prompts" \ -H "Content-Type: application/json" \ -d '{ "agentPrompts": [ { "key": "string", "label": "string", "body": "string" } ] }'{ "nodeId": "string", "agentPrompts": [ { "key": "string", "intent": "read-only", "label": "string", "body": "string" } ]}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/api/v1/nodes/string/content" \ -H "Content-Type: application/json" \ -d '{ "content": { "kind": "doc", "body": "string" } }'{ "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "status": "in_review", "submittedBy": "string", "submittedByUser": null, "sourceAttribution": { "displayName": "string", "ownerName": "string", "channel": "web_ui" }, "sourceMeta": { "property1": null, "property2": null }, "reviewPolicySnapshot": { "property1": null, "property2": null }, "mergeSummary": { "property1": null, "property2": null }, "rejectedReason": "string", "reviewedAt": "string", "mergedAt": "string", "createdAt": "string", "updatedAt": "string", "base": { "id": "string", "nodeId": "string", "slug": "string", "name": "string", "description": "string", "reviewPolicy": { "kind": "single", "requiredApprovals": 0 }, "createdAt": "string", "fields": [ { "id": "string", "baseId": "string", "slug": "string", "name": "string", "type": "text", "required": true, "position": 0, "options": {} } ] }, "node": { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }, "operations": [ { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } } ], "primaryOperation": { "id": "string", "changeRequestId": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operation": "node_create", "status": "pending", "targetRecordId": "string", "targetViewId": "string", "filePath": "string", "sourceRecordId": "string", "sourceCommitId": "string", "baseCommitId": "string", "headCommitId": "string", "deleteMode": "archive", "mergedRecordId": "string", "mergedViewId": "string", "position": 0, "createdAt": "string", "updatedAt": "string", "headCommit": { "id": "string", "baseId": "string", "targetType": "base", "nodeId": "string", "operationId": "string", "parentCommitId": "string", "payload": { "property1": null, "property2": null }, "operation": "node_create", "message": "string", "author": "string", "authorUser": null, "createdAt": "string" }, "baseFields": { "property1": null, "property2": null } }, "operationCount": 0, "reviews": [ { "id": "string", "changeRequestId": "string", "reviewerId": "string", "reviewer": null, "verdict": "approved", "reason": "string", "visibleOperationHeads": { "property1": "string", "property2": "string" }, "createdAt": "string" } ]}Path Parameters
Query Parameters
First line to read. 1-indexed, and INCLUSIVE.
1 <= value <= 9007199254740991Last line to read, INCLUSIVE. A range wider than 2000 lines is silently narrowed to the first 2000 rather than rejected — the response reports lineCountCapped when that happened, so check it before concluding the file ends there.
1 <= value <= 9007199254740991Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/string/lines?startLine=1&endLine=1"{ "lines": [ "string" ], "startLine": -9007199254740991, "endLine": -9007199254740991, "totalLines": 0, "truncated": true}Path Parameters
Node id, or a slug that is unique within its type.
Query Parameters
Optional disambiguation hint, only needed when nodeId is a slug that exists under more than one node type.
Value in
- "folder"
- "base"
- "skill"
- "drive"
- "airapp"
- "file"
- "doc"
- "form"
- "whiteboard"
- "workflow"
- "html"
Response Body
application/json
curl -X GET "https://example.com/api/v1/nodes/string"{ "node": { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }, "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true } ], "type": "folder"}curl -X DELETE "https://example.com/api/v1/nodes/string"{ "purged": true}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/string/visibility" \ -H "Content-Type: application/json" \ -d '{ "visibility": "private" }'{ "updated": true}curl -X POST "https://example.com/api/v1/nodes/string/favorite"{ "favorited": true}curl -X GET "https://example.com/api/v1/nodes/favorites"[ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ { "id": "string", "parentId": "string", "type": "folder", "slug": "string", "name": "string", "description": "string", "metadata": {}, "settings": {}, "explicitVisibility": null, "icon": null, "position": 0, "createdAt": "string", "updatedAt": "string", "baseId": "string", "children": [ null ], "hasChildren": true, "shared": true } ], "hasChildren": true, "shared": true }]curl -X GET "https://example.com/api/v1/nodes/string/principals"[ { "id": "string", "nodeId": "string", "principalType": "user", "principalId": "string", "role": "read", "grantedBy": "string", "createdAt": "string", "updatedAt": "string" }]Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/string/principals" \ -H "Content-Type: application/json" \ -d '{ "principalType": "user", "principalId": "string", "role": "read" }'{ "granted": true}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X DELETE "https://example.com/api/v1/nodes/string/principals" \ -H "Content-Type: application/json" \ -d '{ "principalType": "user", "principalId": "string" }'{ "removed": true}curl -X GET "https://example.com/api/v1/node-shares"[ { "nodeId": "string", "name": "string", "slug": "string", "type": "folder", "icon": null, "capability": "read", "hasPassword": true, "expiresAt": "string", "createdAt": "string" }]curl -X GET "https://example.com/api/v1/nodes/string/share"{ "nodeId": "string", "scope": "none", "capability": "read", "hasPassword": true, "expiresAt": "string", "updatedAt": "string"}Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/string/share" \ -H "Content-Type: application/json" \ -d '{ "scope": "none" }'{ "nodeId": "string", "scope": "none", "capability": "read", "hasPassword": true, "expiresAt": "string", "updatedAt": "string"}curl -X DELETE "https://example.com/api/v1/nodes/string/share"{ "nodeId": "string", "scope": "none", "capability": "read", "hasPassword": true, "expiresAt": "string", "updatedAt": "string"}Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/icon/upload-urls" \ -H "Content-Type: application/json" \ -d '{ "fileName": "string", "mimeType": "string", "sizeBytes": -9007199254740991, "nodeId": "string" }'{ "uploadUrl": "string", "storageKey": "string", "publicUrl": "string", "expiresIn": 0, "duplicate": true, "attachmentId": "string", "assetId": "string"}Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v1/nodes/icon/confirmations" \ -H "Content-Type: application/json" \ -d '{ "storageKey": "string", "fileName": "string", "mimeType": "string", "sizeBytes": -9007199254740991, "nodeId": "string" }'{ "success": true, "attachmentId": "string", "assetId": "string", "storageKey": "string", "publicUrl": "string"}