Documentation
How to use Tether to license your Minecraft plugins.
Getting started
1. Create an account and a workspace. 2. Add a product for each plugin. 3. Issue licenses to customers. 4. Call the verification API from your plugin when it starts.
Products
Each plugin is a product. The slug is used by the API and should be stable. Version rules can pin or require a minimum plugin version.
Licenses
Licenses carry a key, expiry, activation limit and IP limit. Activation counts are tied to a stable fingerprint from the server running the plugin.
Verification
POST /api/verify with the license key, fingerprint, server name and plugin version. The response returns valid, code, entitlements and expiry.
POST /api/verify
Content-Type: application/json
{
"key": "TETH-XXXX-XXXX-XXXX",
"fingerprint": "paper-server-id",
"serverName": "play.example.com",
"version": "1.21.4",
"address": "203.0.113.10"
}Java plugin
Add a small check to your plugin on startup. Store the returned status and disable the plugin if the license is not valid.
TetherClient tether = TetherClient.builder()
.endpoint("https://your-tether.example/api/verify")
.build();
Verification result = tether.verify(
licenseKey,
plugin.getDescription().getVersion(),
serverFingerprint
);
if (!result.valid()) {
getLogger().warning("License check: " + result.reason());
getServer().getPluginManager().disablePlugin(this);
}Discord
Set the Discord guild ID in Integrations, then register the interaction URL in the Developer Portal. The bot responds to /license commands.
API
Management endpoints use an API key. Create one in API keys and send it as a Bearer token. Verification does not require an API key.