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.bin

What's enforced

  • The session must be valid (not expired, banned or blacklisted).
  • The user's level must be ≥ requiredLevel, else 403.
  • 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.