Documentation
License-gated downloads
Serve your program, updates or assets only to users with a valid license at the right level — the bytes never sit on a public URL.
Upload files under Files in the dashboard and give each a requiredLevel. Your app downloads a file by id through the client API; LumenAuth checks the user's session and level, then streams the raw bytes.
curl
curl -X POST function(){throw Error("Attempted to call BASE() from the server but BASE is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")}/api/1.x/file \
-H "Authorization: Bearer <app-session>" \
-H "Content-Type: application/json" \
-d '{"session":"<user-session-id>","fileId":"<file-uuid>"}' \
--output payload.binWhat's enforced
- The session must be valid (not expired, banned or blacklisted).
- The user's level must be
≥ requiredLevel, else403. - The file must belong to the app making the call.
On success you get the raw bytes (JSON only on error). SDK helper: file("<file-id>") returns the payload as a byte array. Great for gating an updater, a cheat/module, or premium assets behind a paid tier.