Skip to content

The Notes Document Versions API lets you capture, retrieve, restore, and delete version snapshots for documents within a notebook. Use these endpoints to implement version history, audit trails, undo flows, or branching workflows for collaborative notes.

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

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

Lists all versions for a document, ordered by revision descending.

NameInTypeRequiredDescription
notebookIdpathstringYesID of the notebook that contains the document
nodeIdpathstringYesID of the document node
limitqueryintegerNoMaximum number of versions to return. Default: 20
offsetqueryintegerNoNumber of versions to skip for pagination. Default: 0
{
"versions": [
{
"id": "vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA",
"documentId": "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
"revision": 12,
"createdAt": "2026-01-15T14:22:09.512Z",
"createdBy": "usr_01HXVZ0Y1X2W3V4U5T6S7R8Q9P"
},
{
"id": "vrs_01HXY7J8B1N2M3L4K5J6I7H8GWA",
"documentId": "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
"revision": 11,
"createdAt": "2026-01-14T09:45:31.000Z",
"createdBy": "usr_01HXVZ0Y1X2W3V4U5T6S7R8Q9P"
}
],
"total": 12
}
const { versions, total } = await client.notes.versions.list({
notebookId: "ntb_01HXY1Z2A3B4C5D6E7F8G9H0J",
nodeId: "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
limit: 50,
offset: 0,
});
Terminal window
curl -X GET "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXY1Z2A3B4C5D6E7F8G9H0J/nodes/nd_01HXY2A3B4C5D6E7F8G9H0J1KA/versions?limit=20&offset=0" \
-H "Authorization: Bearer <token>"

GET /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/versions/{versionId}

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

Retrieves a specific document version by ID, including the full stored content.

NameInTypeRequiredDescription
notebookIdpathstringYesID of the notebook that contains the document
nodeIdpathstringYesID of the document node
versionIdpathstringYesID of the version to retrieve
{
"id": "vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA",
"documentId": "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
"revision": 12,
"content": {
"type": "doc",
"content": [
{
"type": "paragraph",
"text": "Updated onboarding checklist for Q1."
}
]
},
"createdAt": "2026-01-15T14:22:09.512Z",
"createdBy": "usr_01HXVZ0Y1X2W3V4U5T6S7R8Q9P"
}
const version = await client.notes.versions.get({
notebookId: "ntb_01HXY1Z2A3B4C5D6E7F8G9H0J",
nodeId: "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
versionId: "vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA",
});
Terminal window
curl -X GET "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXY1Z2A3B4C5D6E7F8G9H0J/nodes/nd_01HXY2A3B4C5D6E7F8G9H0J1KA/versions/vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA" \
-H "Authorization: Bearer <token>"

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

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

Captures the current document content as a new version snapshot. Each call increments the document’s revision counter.

NameInTypeRequiredDescription
notebookIdpathstringYesID of the notebook that contains the document
nodeIdpathstringYesID of the document node to snapshot
{
"id": "vrs_01HXY9L0D3Q4R5S6T7U8V9W0XBY",
"documentId": "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
"revision": 13,
"createdAt": "2026-01-16T11:08:42.219Z",
"createdBy": "usr_01HXVZ0Y1X2W3V4U5T6S7R8Q9P"
}
const snapshot = await client.notes.versions.create({
notebookId: "ntb_01HXY1Z2A3B4C5D6E7F8G9H0J",
nodeId: "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
});
Terminal window
curl -X POST "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXY1Z2A3B4C5D6E7F8G9H0J/nodes/nd_01HXY2A3B4C5D6E7F8G9H0J1KA/versions" \
-H "Authorization: Bearer <token>"

POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/versions/{versionId}/restore

Section titled “POST /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/versions/{versionId}/restore”

Restores a document to a previous version by updating its content to match the snapshot. The restore itself produces a new revision so the prior state is preserved in history.

NameInTypeRequiredDescription
notebookIdpathstringYesID of the notebook that contains the document
nodeIdpathstringYesID of the document node to restore
versionIdpathstringYesID of the version to restore from
{
"success": true
}
const result = await client.notes.versions.restore({
notebookId: "ntb_01HXY1Z2A3B4C5D6E7F8G9H0J",
nodeId: "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
versionId: "vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA",
});
Terminal window
curl -X POST "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXY1Z2A3B4C5D6E7F8G9H0J/nodes/nd_01HXY2A3B4C5D6E7F8G9H0J1KA/versions/vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA/restore" \
-H "Authorization: Bearer <token>"

DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/versions/{versionId}

Section titled “DELETE /api/v1/notes/notebooks/{notebookId}/nodes/{nodeId}/versions/{versionId}”

Deletes a specific document version. The version is permanently removed and cannot be restored through the API.

NameInTypeRequiredDescription
notebookIdpathstringYesID of the notebook that contains the document
nodeIdpathstringYesID of the document node
versionIdpathstringYesID of the version to delete
{
"success": true
}
const result = await client.notes.versions.delete({
notebookId: "ntb_01HXY1Z2A3B4C5D6E7F8G9H0J",
nodeId: "nd_01HXY2A3B4C5D6E7F8G9H0J1KA",
versionId: "vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA",
});
Terminal window
curl -X DELETE "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXY1Z2A3B4C5D6E7F8G9H0J/nodes/nd_01HXY2A3B4C5D6E7F8G9H0J1KA/versions/vrs_01HXY8K9C2P3N4Q5R6S7T8U9VA" \
-H "Authorization: Bearer <token>"