Skip to content
Hoody.com

The Notes Collaboration APIs control who can access a notebook, what role they hold, and how users interact with content. Use these endpoints to invite users to a notebook and assign notebook-wide roles, attach per-node collaborators with finer-grained roles on sections, pages, and databases, and add or remove emoji reactions on individual nodes.

Manage per-node collaborator membership and roles. Each collaborator has a role scoped to a single node (section, page, or database). The valid node-scoped roles are admin, editor, collaborator, and viewer. Only node admins may add, update, or remove collaborators.

GET /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators

Section titled “GET /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators”

Returns all collaborators on a node with their roles and user info.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
Terminal window
curl -X GET "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators" \
-H "Authorization: Bearer <token>"

POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators

Section titled “POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators”

Adds a user as a collaborator on a node with a specified role. Requires admin permission.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
FieldTypeRequiredDescription
collaboratorIdstringYesThe user ID of the collaborator to add
rolestringYesNode-scoped role. One of: admin, editor, collaborator, viewer
Terminal window
curl -X POST "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"collaboratorId": "a1b2c3d4e5f678901234abcd",
"role": "editor"
}'

PATCH /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}

Section titled “PATCH /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}”

Changes the role of an existing collaborator. Requires admin permission.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
collaboratorIdpathstringYesThe collaborator user identifier
FieldTypeRequiredDescription
rolestringYesThe new node-scoped role. One of: admin, editor, collaborator, viewer
Terminal window
curl -X PATCH "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "role": "editor" }'

DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}

Section titled “DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}”

Removes a collaborator from a node. Requires admin permission.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
collaboratorIdpathstringYesThe collaborator user identifier
Terminal window
curl -X DELETE "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/collaborators/{collaboratorId}" \
-H "Authorization: Bearer <token>"

Add or remove emoji reactions on individual notebook nodes. Reactions are scoped to a single node and attributed to the collaborator who reacted.

GET /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions

Section titled “GET /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions”

Returns all reactions on a node with the collaborator who reacted.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
Terminal window
curl -X GET "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions" \
-H "Authorization: Bearer <token>"

POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions

Section titled “POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions”

Adds an emoji reaction to a node on behalf of the current user.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
FieldTypeRequiredDescription
reactionstringYesThe reaction string, between 1 and 64 characters
Terminal window
curl -X POST "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "reaction": "\uD83D\uDE00" }'

DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions/{reaction}

Section titled “DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions/{reaction}”

Removes an emoji reaction from a node for the current user.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
nodeIdpathstringYesThe node identifier
reactionpathstringYesThe reaction string to remove (URL-encoded)
Terminal window
curl -X DELETE "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/reactions/%F0%9F%98%80" \
-H "Authorization: Bearer <token>"

Invite users to a notebook and manage their notebook-wide role. These endpoints operate on the notebook as a whole and are distinct from the per-node collaborator endpoints above.

POST /api/v1/notes/notebooks/{notebookId}/users

Section titled “POST /api/v1/notes/notebooks/{notebookId}/users”

Creates one or more users in the notebook by username. Returns the created users along with any per-user errors. Up to 50 users may be invited per request.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
FieldTypeRequiredDescription
usersarrayYesList of users to invite, maximum 50 entries

Each entry in users has the following fields:

FieldTypeRequiredDescription
usernamestringYesThe username to invite
rolestringYesNotebook-wide role. One of: owner, admin, collaborator, guest, none
Terminal window
curl -X POST "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/users" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"users": [
{ "username": "ada", "role": "collaborator" },
{ "username": "grace", "role": "admin" }
]
}'

PATCH /api/v1/notes/notebooks/{notebookId}/users/{userId}/role

Section titled “PATCH /api/v1/notes/notebooks/{notebookId}/users/{userId}/role”

Changes the notebook-wide role of a user. Requires owner or admin permission.

NameInTypeRequiredDescription
notebookIdpathstringYesThe notebook identifier
userIdpathstringYesThe user identifier
FieldTypeRequiredDescription
rolestringYesThe new notebook-wide role. One of: owner, admin, collaborator, guest, none
Terminal window
curl -X PATCH "https://{projectId}-{containerId}-notes-1.{server}.containers.hoody.com/api/v1/notes/notebooks/{notebookId}/users/{userId}/role" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "role": "admin" }'