Desktop update & download endpoints

How the app updates itself and where the installers actually come from.


These are the endpoints behind the desktop app and the Downloads page. They take no authentication, by necessity: an app checking for an update has no session, and an installer download is public.

Checking for an update

GET /api/desktop/updater/{target}/{arch}/{version}?bundle={type}

The app fills all four in for itself. Two answers, and only two:

StatusMeans
200There is an update. The body is { version, notes, pub_date, url, signature }.
204Nothing to do.
204 also means "we couldn't offer you something trustworthy"

No newer release, no artefact matching your install form, and no valid signature all answer 204 rather than an error. That is deliberate: the alternative is handing the app an update it would download and then refuse, which looks to the user like a broken app rather than an unsigned build.

Fetching the bytes

  • GET /api/desktop/artifact/{name} — the update payload the manifest points at. 404 if that name isn't an asset of the current release, so it can't be used to reach anything else.
  • GET /api/download/{platform} — the installers behind the Downloads page. Platforms are windows, mac, mac-arm, linux, deb and rpm. 404 for an unknown platform or a release with no build for it, 502 if the release can't be reached, 503 if downloads aren't configured on the server.
Everything streams from noots.ai

No response here ever hands you a link to the release repository, because that repository is private — a link to it would 404 for every real user. The bytes are proxied through Noots instead.

Still stuck? Open a support ticket and we'll help you out — tracked right inside Noots.