Add Modsy login to your desktop app
Link an installer, launcher, updater, configuration tool, or companion app to one of your mods and let Modsy return a product-specific entitlement decision.
On this page
Desktop App Login is a creator integration
The feature lets a creator integrate their own software with a linked Modsy mod. It is not a separate subscription that players purchase, and it does not replace the mod's public, Patreon, or Lemon Squeezy access rules.
How it works
- Your desktop app asks Modsy to start a short-lived login session.
- It opens a Modsy URL in the user's normal browser.
- The user signs in, compares the displayed code, and approves or denies the request.
- Your app polls Modsy with its per-login proof verifier.
- Modsy returns authentication tokens and the current entitlement for the linked mod.
- Your app unlocks only when the entitlement permits access and checks it again over time.
The desktop app never talks directly to Patreon or Lemon Squeezy. It does not need provider campaign IDs, product IDs, credentials, or business rules.
Before you start
You need:
- A paid Creator Membership plan that currently includes Desktop App Login.
- An approved, non-archived Modsy mod that you own.
- A desktop application able to open the system browser and make HTTPS requests.
- A secure operating-system credential store for refresh tokens.
- A stable random installation identifier that contains no personal information.
The linked mod may be public, Patreon-protected, Lemon Squeezy-protected, or allow either provider. Desktop entitlement automatically follows the mod's current access configuration.
Register your app
- Open Modder Dashboard → Mods.
- Open the action menu for an approved, non-archived mod.
- Select Desktop App Login.
- Enter a globally unique app ID using lowercase letters, numbers, and hyphens. A useful pattern is
your-mod-slug-installer. - Select Submit for review.
- Wait for Modsy's administrator review before enabling login in a public release.
The app ID becomes immutable
Treat the approved app ID as a permanent public protocol identifier. Changing it would break released clients. It is not a secret and must not be used to prove that an executable is genuine.
Registration status
- Pending: the request is waiting for review and cannot start login sessions.
- Approved and active: the app may use the desktop authentication endpoints.
- Approved but disabled: the creator disabled the integration; existing sessions are revoked.
- Changes requested: review the administrator's note, correct the request, and resubmit.
- Revoked: an administrator stopped the registration. Contact Modsy support before shipping another client.
- Paused — paid plan required: the registration remains recorded, but runtime access is unavailable until an eligible paid Creator Membership is active again.
Build the login flow
Every new integration must use a fresh S256 proof key for every login attempt:
- Generate a cryptographically random
code_verifiercontaining 43–128 valid characters. - Hash it with SHA-256 and Base64URL-encode the result without padding to create
code_challenge. - Send the challenge when starting login.
- Keep the verifier in memory until polling finishes. Do not log it or treat it as a reusable account credential.
- Poll no faster than the interval returned by Modsy.
- Stop on approval, denial, expiry, or when the session lifetime ends.
Open the complete Desktop Auth API reference for endpoint payloads, response examples, entitlement values, and error handling.
Handle authentication and entitlement separately
An approved login proves that the user authenticated their Modsy account. It does not prove that the user can access the linked product.
Unlock protected functionality only when entitlement.access is:
activegrace
Keep the product locked for no_access, expired, revoked, or banned. Re-check entitlement when the app starts, before protected actions, after refreshing a token, and periodically while the app is running.
For public mods, the entitlement is active while the linked mod and app registration remain available. For protected mods, Modsy resolves the current Patreon, Lemon Squeezy, or manual entitlement server-side.
Release the installer safely
- Publish the official installer through the linked Modsy mod page.
- Sign executable releases with the operating system's code-signing mechanism.
- Show the Modsy user code in your app so the user can compare it with the browser page.
- Never embed a reusable client secret in the executable; it can be extracted.
- Never store or request Patreon or Lemon Squeezy credentials.
- Store Modsy refresh tokens in the OS credential store and never include them in logs or crash reports.
- Use a random stable installation ID, not an email address, username, or machine name.
The exact-code confirmation and linked publisher/mod details help users notice an impersonating client. The S256 proof key prevents another process from redeeming a login session without the matching verifier.
Test the integration
Before release, verify all of these cases:
- The browser opens the complete verification URL and displays the same user code as the app.
- Denial and expiry stop polling without unlocking the product.
- An authenticated user without entitlement receives
approvedwithno_accessand remains locked. - An entitled user receives
activeorgraceand is unlocked. - Refresh rotates both tokens and the previous refresh token no longer works.
- Logout clears local tokens and revokes the session.
- Revoking the session from Profile Settings → Security stops refresh and entitlement checks.
- Disabling the creator integration stops pending and active sessions.
- Archiving or unpublishing the linked mod prevents continued product access.
Disable or revoke access
An owner can select Disable and revoke sessions in the Desktop App Login dialog. This stops new login sessions and revokes existing sessions for that app. Re-enabling requires an eligible paid Creator Membership.
Users can revoke their own desktop sessions from Profile Settings → Security. Your client must handle TOKEN_REVOKED by clearing local tokens and returning to a signed-out state.