Axsync API v2

Notebooks

Notebooks group notes. They can be nested up to five levels deep.

The notebook object

FieldTypeDescription
idstringUnique identifier, prefixed with nb_.
name requiredstringDisplay name, up to 100 characters.
colorstringAccent colour as a hex value.
iconstringIcon name from the built-in set.
parent_idstring|nullParent notebook, or null for a top-level notebook.
note_countintegerNumber of notes directly inside.
created_attimestampCreation time, RFC 3339 in UTC.
updated_attimestampLast 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.

Required scope: notes:read

Query parameters

FieldTypeDescription
limitintegerPage size, 1–100. Default 25.
cursorstringCursor from the previous page.
sortstringField to sort by, prefix - for descending.
filterstringFilter 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.

Required scope: notes:write

Body parameters

FieldTypeDescription
name requiredstringDisplay name, up to 100 characters.
colorstringAccent colour as a hex value.
iconstringIcon name from the built-in set.
parent_idstring|nullParent 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.

Required scope: notes:read

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.

Required scope: notes:write

Body parameters

FieldTypeDescription
name requiredstringDisplay name, up to 100 characters.
colorstringAccent colour as a hex value.
iconstringIcon name from the built-in set.
parent_idstring|nullParent 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.

Required scope: notes:write

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.

Required scope: notes:write

Body parameters

FieldTypeDescription
name requiredstringDisplay name, up to 100 characters.
colorstringAccent colour as a hex value.
iconstringIcon name from the built-in set.
parent_idstring|nullParent 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"
}