Skip to content

Move notes in and out in bulk

Documented Checked against the CLI's current help and source. Not run end to end. CLI 0.3.1, checked 2026-11-04.

Can I bring my notes with me, and take them away?

Load a folder of markdown files in one job, export them as a zip with their properties intact, import a zip, and undo a batch in one command.

What you get: your notes are never stuck. Many notes go in as one job you can undo, and they come out as plain markdown files. You need: NotesQ and a signed-in profile. About 6 minutes.

Each file is one note. Front matter at the top can set the title, tags and collection. In this run the folder site-visits held three files like this one:

---
title: Visit Harbour Street
tags: [visits]
---
# Visit Harbour Street
Boiler checked, pressure fine.
dry run
quox notes batch ./site-visits --collection "Site visits"Dry run: 3 notes, 0 attachments. Nothing written.Collection     NotesSite visits    3tags: visitssample: Visit Harbour Street | Visit Mill Lane | Visit Orchard RoadRe-run with --yes to write these 3 notes.
From a real run on the demo profile.

Without --yes, nothing is written: you see what would be created. --collection puts every note in one collection, whatever the files say.

batch
quox notes batch ./site-visits --collection "Site visits" --yesbatch cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e started (check: quox notes import-status cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e)🌌 QORTEX │ batch │ 3 created, 0 skipped, 0 failedtag: batch-cbdcccc9  (quox notes ls --scope all --tag batch-cbdcccc9)undo: quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e --yesquox notes import-status cbdcccc9-d683-4968-bc0e-a4dfe60b7a1estatus: done3 created, 0 skipped, 0 failed of 3quox notes ls --collection "Site visits"ID                                          Title                   Scope    Collection     Tags                     Updated3f3abb825c6a82d8be177f0b201a9697deb062a7    Visit Orchard Road      org      Site visits    batch-cbdcccc9,visits    2026-11-04T23:16:17.133Z65ccfa0489979b002353f033b6769e7cb0de0663    Visit Harbour Street    org      Site visits    batch-cbdcccc9,visits    2026-11-04T23:16:17.105Zec1cd948987b69ea739833985ef163552592715b    Visit Mill Lane         org      Site visits    batch-cbdcccc9,visits    2026-11-04T23:16:17.070Z🌌 QORTEX │ notes ls │ 3 of 3
From a real run on the demo profile.

Every note the batch made carries the batch’s tag, so you can always find the lot, and the batch prints its own undo command. A batch takes up to 200 notes, from a folder, a .jsonl file, or JSON lines on standard input (-).

export
quox notes export --collection "Site visits" --out site-visits.zip🌌 QORTEX │ notes export │ 3 notesExported 3 notes to ~/site-visits.zip.
From a real run on the demo profile. Home folder path shortened.

Inside the zip, each note is a markdown file in a folder named after its collection, such as Site visits/Visit Mill Lane ec1cd948.md, with its properties kept as front matter. Narrow the export with --tag or --scope, or add --with-attachments for a complete offline copy.

batch-undo
quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1ewould delete: Visit Orchard Road  /notes?note=3f3abb825c6a82d8be177f0b201a9697deb062a7would delete: Visit Harbour Street  /notes?note=65ccfa0489979b002353f033b6769e7cb0de0663would delete: Visit Mill Lane  /notes?note=ec1cd948987b69ea739833985ef163552592715bRe-run with --yes to delete these 3 notes.quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e --yes🌌 QORTEX │ batch-undo │ 3 deleted, 0 failed of 3quox notes ls --collection "Site visits"No results.🌌 QORTEX │ notes ls │ 0 of 0
From a real run on the demo profile.

Like the batch itself, the undo shows what it would remove until you add --yes. Each removed note keeps its revisions.

import
quox notes import site-visits.zip --collection "Site visits" --dry-runDry run (obsidian): 3 notes, 0 attachments. Nothing written.Collection     NotesSite visits    3tags: batch-cbdcccc9, visitssample: Visit Harbour Street | Visit Mill Lane | Visit Orchard Roadquox notes import site-visits.zip --collection "Site visits"import job 0a3b157f-f8a3-4049-9753-d16561abdab8 started (check any time: quox notes import-status 0a3b157f-f8a3-4049-9753-d16561abdab8)importing 0/3 (created 0, skipped 0, failed 0)🌌 QORTEX │ import │ 3 created, 0 skipped, 0 failedImported 3 notes (0 already present).quox notes import-status 0a3b157f-f8a3-4049-9753-d16561abdab8status: done3 created, 0 skipped, 0 failed of 3
From a real run on the demo profile.

The zip we exported came straight back as three notes, tags included. Import also reads an Evernote export (.enex), an Obsidian vault as a .zip, and single markdown files; it works out which from the file, or you can say with --format. --dry-run writes nothing.

Files attached to a note live in your organisation’s file store. List a note’s files, then download one by its file id:

attachments
quox notes new --title "Visit Mill Lane" --tag visitsCreated note 222a63fa9780b4bdb209f5736388652fce3c95e3 (Visit Mill Lane).quox notes attach 222a63fa9780b4bdb209f5736388652fce3c95e3 mill-lane-checklist.txtAttached mill-lane-checklist.txt to note 222a63fa9780b4bdb209f5736388652fce3c95e3 (file 01K6KHSEBE4CGP8GRWCDQ54P7H).quox notes attachments 222a63fa9780b4bdb209f5736388652fce3c95e3Name                              File ID                       URLmill-lane-checklist.txt (64 B)    01K6KHSEBE4CGP8GRWCDQ54P7H    /api/orgs/01M50FWN7T8XG9K9P9JN0TA5WF/files/01K6KHSEBE4CGP...quox notes download 01K6KHSEBE4CGP8GRWCDQ54P7H --out back/mill-lane-checklist.txtSaved ~/back/mill-lane-checklist.txt (64 B).quox notes download 01K6KHSEBE4CGP8GRWCDQ54P7H --out back/mill-lane-checklist.txt✖ ~/back/mill-lane-checklist.txt already exists. Use --force to overwrite.sha256sum mill-lane-checklist.txt back/mill-lane-checklist.txt7f301dbc0d31b7838fc5f80752eeb1b692ff6dc0a3fd5866982faaba04a7234b  mill-lane-checklist.txt7f301dbc0d31b7838fc5f80752eeb1b692ff6dc0a3fd5866982faaba04a7234b  back/mill-lane-checklist.txt
From a real run on the demo profile with quoxcli 0.4.0. Path and URL shortened.

The file came back byte for byte. Download never overwrites a file that is already there unless you add --force; without --out it saves under the original name in the current folder.

The batch and the import each ran as one job on your Quox, with a job id you can check at any time with quox notes import-status. That command exits non-zero if the job or any note in it failed, so a script can rely on it.

quox notes ls --collection "Site visits" after each step: three notes after steps 3 and 6, none after step 5.

After this run we removed the three imported notes one at a time with quox notes rm <id> --yes, taking the ids from quox notes ls --collection "Site visits".