Skip to main content
To retrieve a file from Cascade, Lumera Protocol’s permanent storage service, you only need the action_id returned during upload. Knowing the four steps behind a download helps you show progress in your app and handle failures cleanly.
1

Authenticate

Every download request is authenticated with an ADR-036 signature. ADR-036 is the Cosmos standard for signing arbitrary data outside a transaction. The SDK signs the action_id string with the connected wallet.
This proves the requester holds the private key for their Lumera address. Any wallet can download a public file. Only authorized wallets can download a private file.
2

Request the download

The SDK sends a download request to the SN-API, the HTTP API served by SuperNodes.
The SN-API responds with a task_id that tracks the download preparation. The SDK retries this request up to 3 times on transient server errors (HTTP 500). SuperNodes may need time to locate and gather the required chunks.
3

Monitor progress

The SDK monitors download progress over Server-Sent Events (SSE), a one-way HTTP stream of status updates.
In browsers the SDK uses the native EventSource API. In Node.js it uses a custom fetch-based SSE parser.
4

Stream the file

Once the task completes, the file is available as a binary stream.
The SDK returns a ReadableStream<Uint8Array> that your application consumes.

Download task states

Convenience methods

Basic download

Download with options

Private download

The call is identical for private files. The auth signature restricts who can download.

SN-API fallback

The SN-API client tries versioned endpoints first (/api/v1/...). On a 404 response it falls back to legacy paths (/api/...). This keeps the SDK compatible across SN-API versions.

Next steps

Upload lifecycle

What happens between selecting a file and permanent storage.

Erasure coding

How SuperNodes reconstruct your file from a subset of symbols.

JavaScript SDK reference

Full method reference for uploads, downloads, and task options.