License yoursoftware.Not your time.
A server-enforced license layer for small software teams. Issue keys, scope sellers, bind devices, and validate with one call — without exposing your database or your margins.
POST /api/v1
x-api-key: pk_live_••••••••••••
{
"projectId": "7c2a4e18-94b1-4f0c-b83a-2d1e5f6a9c10",
"licenseKey": "ARN-8FK2Q-M9X4T-...",
"hardwareId": "device-fingerprint-01"
}Nothing sent yet
Run the sample request to inspect a real-shaped response.
API endpoints to validate
y
Maximum key lifetime
Internal IDs exposed
%
Rules enforced server-side
The product surface
Everything between the purchase and the padlock.
Not a spreadsheet with an API bolted on. Every key, seller, dollar, warning, and device is a server-side record with a guard in front of it.
Profiles with a fence
Every seller gets app-scoped duration profiles. Each profile carries a key limit, counted only when a key is created. A seller can never use another seller's allowance.
Hardware binding
The validation endpoint registers a hashed device fingerprint. A key stops at its device ceiling. Resets belong to the seller or owner, never the public API.
Custom durations
Create any duration your app allows. Set a default key limit, then adjust it per seller. Existing keys keep the duration they were issued with.
Opaque by default
Screens speak in UUIDs, public IDs, and opaque cursors. Convex document IDs never leave the server. API keys are stored hashed and displayed once.
Seats that behave
Invites are claimed by verified email. Removing a seller revokes access but preserves the keys already issued under that seller.
One-second keys
Durations run from one second to one thousand years, starting when the first device registers. Your plan sets the ceiling, your app narrows it, and every validation re-checks it.
Scoped by construction
A seller sees one app, one allowance, one set of keys.
Memberships join a seller to a single application. Every seller-facing query uses that membership. Every mutation re-derives it on the server. The UI cannot widen the scope.
Read the security modelAperture
3 active keys · 7 of 10 keys left
Ledgerline
18 active keys · 2 profiles assigned
Private developer app
Not visible to sellers
Authorization is re-derived, not trusted
How it works
Three moves from file to license.
No SDK required. The API is a plain POST with a JSON body and an app-scoped key. Integrate it in an afternoon.
Create the application
Set the download link, version, maximum key duration, device ceiling, and custom key profiles. You get a UUID project ID and a one-time public API key.
Create an appInvite sellers. Or don't.
Sellers accept by email and issue keys only within the profiles and per-profile limits you assign. Developer accounts are blocked at the door with a permanent owner warning.
How profiles workValidate in one call
Your app sends a key and a hardware ID. ARN AUTH checks the credentials, project, key state, expiry, and device slot. No secret ever reaches the browser.
Read the APISecurity model
Trust the server.Not the request.
Clerk proves who is calling. Convex decides what they may touch. The client is treated as a rendering surface, never as an authority.
const app = await findByHash(publicKeyHash)
if (!app || app.archivedAt) fail(401)
const license = await findByHash(keyHash)
if (license.appId !== app._id) fail(404)
if (license.disabled) fail(403)
if (license.expiresAt > 0 && license.expiresAt <= now) fail(403)
if (!deviceBound && bindings >= limit) fail(409)
bindDevice(license, hardwareHash)
if (license.expiresAt === 0) startExpiry(license)Pricing
Start small. Stay exact.
Every plan includes the public validation API, server-side authorization, device binding, and per-seller profile limits. Limits are enforced in code, not in a tooltip.
Free
Start without a card.
Permanent free plan · no card required
Start free- 1 application
- 1 seller per application
- 10 license keys
- 30-day maximum key duration
- 5 devices per key
- Server-to-server validation API
Pro
Run a real distribution.
Secure Razorpay checkout · prepaid · no auto-renew
Choose Pro- 25 applications
- 75 sellers per application
- 25,000 license keys
- Keys up to 1,000 years
- 250 devices per key
- Everything in Free, at production ceilings
Free includes 1 app, 1 seller, 10 keys, 30-day keys, and 5 devices per key. Pro raises the ceilings for growing distributions. Refund rules and Terms apply.
Questions with edges
The partspeople ask about.
If a rule is not enforced on the server, it is not a rule. These are the boundaries that matter after launch.
Read the docsStop shipping keys in a spreadsheet.
Create an application, invite a seller, and run your first validation before the coffee goes cold.