Notebooks
Notebooks group notes. They can be nested up to five levels deep.
The notebook object
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier, prefixed with nb_. |
name required | string | Display name, up to 100 characters. |
color | string | Accent colour as a hex value. |
icon | string | Icon name from the built-in set. |
parent_id | string|null | Parent notebook, or null for a top-level notebook. |
note_count | integer | Number of notes directly inside. |
created_at | timestamp | Creation time, RFC 3339 in UTC. |
updated_at | timestamp | Last modification time, RFC 3339 in UTC. |
Example
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}GET /notebooks
List notebooks. Returns a paginated list of notebooks.
Query parameters
| Field | Type | Description |
|---|---|---|
limit | integer | Page size, 1–100. Default 25. |
cursor | string | Cursor from the previous page. |
sort | string | Field to sort by, prefix - for descending. |
filter | string | Filter expression, see Filtering and sorting. |
Request
curl -X GET "https://api.axnode.net/v2/notebooks" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/notebooks', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.get(
'https://api.axnode.net/v2/notebooks',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"data": [
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}
],
"has_more": false,
"next_cursor": null
}POST /notebooks
Create a notebook. Creates a notebook.
Body parameters
| Field | Type | Description |
|---|---|---|
name required | string | Display name, up to 100 characters. |
color | string | Accent colour as a hex value. |
icon | string | Icon name from the built-in set. |
parent_id | string|null | Parent notebook, or null for a top-level notebook. |
Request
curl -X POST "https://api.axnode.net/v2/notebooks" \
-H "Authorization: Bearer $AXSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Projects"}'const res = await fetch('https://api.axnode.net/v2/notebooks', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"name": "Projects"})
});
const data = await res.json();import requests
res = requests.post(
'https://api.axnode.net/v2/notebooks',
headers={'Authorization': f'Bearer {token}'}, json={"name": "Projects"},
)
data = res.json()Response 201
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}GET /notebooks/{id}
Retrieve a notebook. Retrieves a notebook by its identifier.
Request
curl -X GET "https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm', {
method: 'GET',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.get(
'https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}PATCH /notebooks/{id}
Update a notebook. Updates fields of a notebook. Only supplied fields change.
Body parameters
| Field | Type | Description |
|---|---|---|
name required | string | Display name, up to 100 characters. |
color | string | Accent colour as a hex value. |
icon | string | Icon name from the built-in set. |
parent_id | string|null | Parent notebook, or null for a top-level notebook. |
Request
curl -X PATCH "https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm" \
-H "Authorization: Bearer $AXSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Projects"}'const res = await fetch('https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm', {
method: 'PATCH',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"name": "Projects"})
});
const data = await res.json();import requests
res = requests.patch(
'https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm',
headers={'Authorization': f'Bearer {token}'}, json={"name": "Projects"},
)
data = res.json()Response 200
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}DELETE /notebooks/{id}
Delete a notebook. Permanently deletes a notebook. This cannot be undone.
Request
curl -X DELETE "https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm" \
-H "Authorization: Bearer $AXSYNC_TOKEN"const res = await fetch('https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm', {
method: 'DELETE',
headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();import requests
res = requests.delete(
'https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm',
headers={'Authorization': f'Bearer {token}'},
)
data = res.json()Response 200
{
"deleted": true,
"id": "nb_8f3k2Q9xLm"
}POST /notebooks/{id}/move
Move a notebook. Changes the parent notebook. Moving into a descendant is rejected.
Body parameters
| Field | Type | Description |
|---|---|---|
name required | string | Display name, up to 100 characters. |
color | string | Accent colour as a hex value. |
icon | string | Icon name from the built-in set. |
parent_id | string|null | Parent notebook, or null for a top-level notebook. |
Request
curl -X POST "https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm/move" \
-H "Authorization: Bearer $AXSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Projects"}'const res = await fetch('https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm/move', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"name": "Projects"})
});
const data = await res.json();import requests
res = requests.post(
'https://api.axnode.net/v2/notebooks/nb_8f3k2Q9xLm/move',
headers={'Authorization': f'Bearer {token}'}, json={"name": "Projects"},
)
data = res.json()Response 200
{
"id": "nb_8f3k2Q9xLm",
"name": "Projects",
"color": "#5b5bf0",
"icon": "folder",
"parent_id": null,
"note_count": 38,
"created_at": "2026-09-14T08:21:07Z",
"updated_at": "2026-10-02T17:40:55Z"
}