Skip to content

get --id returns "file doesn't exist" on sync v4, while path-based get works #70

Description

@delize

Summary

On the v4 sync API (after the mirror fix from #62 landed in v0.0.34), rmapi get --id <uuid> fails with Error: file doesn't exist for every document, even though:

  • rmapi stat "<path>" resolves that path to the same UUID, and
  • rmapi get "<path>" downloads the document fine.

So listing/mirroring works, path-based download works, but ID-based download is broken on v4. The trace shows get --id loads the node with the requested docid into the tree and then fails the local lookup — it never issues a blob request.

This breaks any tool that downloads by document ID (e.g. Scrybble's sync, which fetches by rm_file_id); the only workaround is to download by path.

Version / environment

  • rmapi v0.0.34 (latest release)
  • reMarkable cloud sync v4 (GET /sync/v4/root, schemaVersion: 3)
  • Auth is fine (mirror, ls, stat, and path-based get all succeed with the same config)

Reproduction

$ rmapi stat "/Daily Journal/2026-05-31 copy"
{
  "ID": "473b7bf1-6a06-44ff-a2da-a343bb36029c",
  "Name": "2026-05-31 copy",
  "Version": 0,
  "Type": "DocumentType"
}

# ID-based download — the same UUID stat just returned:
$ rmapi get --id 473b7bf1-6a06-44ff-a2da-a343bb36029c
ERROR: main.go:86: Error:  file doesn't exist          # exit 1, nothing downloaded

# Path-based download — same document:
$ rmapi get "/Daily Journal/2026-05-31 copy"
downloading: [/Daily Journal/2026-05-31 copy]...
OK                                                      # downloads the .rmdoc

This reproduces for every document in the account — freshly created on the tablet, on-device duplicates, and reMarkable's own shipped "Getting started" notebook alike. All of them currently report Version: 0.

Trace (RMAPI_TRACE=1, auth token redacted)

$ rmapi get --id 473b7bf1-6a06-44ff-a2da-a343bb36029c
request: GET /sync/v4/root HTTP/1.1                     # sync v4
HTTP/2.0 200 OK  {"hash":"a790186c…","generation":1780251186051790,"schemaVersion":3}
got root gen: 1780251186051790
Writing cache: .../rmapi/tree.cache
...
adding: 2026-05-31 copy docid: 473b7bf1-6a06-44ff-a2da-a343bb36029c   # <- node IS loaded with this exact id
...
ERROR: main.go:86: Error:  file doesn't exist          # <- lookup fails; NO blob GET is ever made

For contrast, rmapi get "<path>" on the same document issues several GET requests (root + content blobs) and writes the file. So the failure is purely in the get --id node lookup against the v4 tree, not the document, the auth, or the network.

Notes

  • rmapi get --help documents only get <remote_file>--id isn't listed, so it may simply not have been carried forward to the v4 code path.
  • Happy to test patches or provide more traces.

Related: #62 (v4 migration — mirror/rm-filename, fixed in v0.0.34).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions