Licers

Licers › Documentation

Licers — Full Reference

Licers (https://licers.com) is a software license-key management platform for developers. Issue license keys, bind them to devices/hardware, and validate them at runtime with tamper-proof Ed25519-signed responses that a cracked "fake license server" cannot forge. It works with Python via an official SDK and with any language over a simple REST API. Free to start.

This document gives language models a complete overview of what Licers does and how to integrate it. Canonical pages: Home https://licers.com/ · Docs https://licers.com/docs · Blog https://licers.com/blog · Sign up https://licers.com/register

Why signed validation matters

Most licensing schemes fail to one trick: a fake local server (or patched DLL) that always answers "valid". Licers defeats this by signing every validation response with an Ed25519 private key that never leaves the server. Your application embeds only the matching public key and verifies the signature locally, so a forged or replayed reply is cryptographically impossible. Each request carries a client-generated nonce and the response includes a timestamp, which the SDK checks to reject stale or replayed messages.

Core concepts

Quickstart (Python SDK)

Install:

pip install pylicensify

Validate a key:

from pylicensify import LicenseClient

client = LicenseClient(public_key="YOUR_PUBLIC_KEY") result = client.validate("PY-XXXXXXXXXXXXXXXX") if result: print("Licensed. Features:", result.features) if result.feature("pro"): enable_pro_features() else: print("Not licensed:", result.error) raise SystemExit(1)

validate() sends a nonce, verifies the Ed25519 signature, and rejects stale/replayed responses automatically. It raises SignatureError on tampering and NetworkError if the server is unreachable. Get your product's public key from the Licers dashboard → Integration page; it is safe to embed in distributed apps because the private key never leaves the server.

REST API (any language)

Base URL: https://licers.com. The validation endpoint is public (no auth) and returns a signed payload you verify with the product public key.

Automation endpoints for managing products, keys, and releases are authenticated with an API key you create in the dashboard.

Floating (concurrent) licenses in Python

from pylicensify import LicenseClient, SeatUnavailable

client = LicenseClient(public_key="YOUR_PUBLIC_KEY") try: with client.session("PY-XXXX...") as sess: print("Seat acquired:", sess.seats) # {'used': 1, 'max': 5} run_app() # released automatically on exit except SeatUnavailable: print("All seats are in use — try again later.")

Offline license files (air-gapped)

Issue a signed .lic file from a license in the dashboard, ship it with the app, and verify it locally with no network:

from pylicensify import verify_offline_license

data = verify_offline_license("YOUR_PUBLIC_KEY", "license.lic") print("Valid for:", data.get("customer"), data.get("features"))

Verification checks the signature, expiry, device binding, and OS lock.

Update checks in Python

info = client.check_update("PY-XXXX...", current_version="1.0.0") if info["update_available"]: print("New version:", info["version"], info["notes"]) # info["download_url"] is a license-gated download link

Custom hardware id

By default the SDK derives a machine id from uuid.getnode(). Pass your own for a stronger fingerprint:

client.validate(key, hwid=my_custom_fingerprint())

Errors (Python SDK)

All inherit from LicenseError.

Hardening

Obfuscate your client so the license check itself cannot be trivially patched out — for example with PyObfuscate (https://pyobfuscate.com).

Links

Start issuing license keys

Signed validation, device binding, floating seats and offline files — free.

Create your free account