Licensing & activation
Use Phantom as your license server.
You buy Phantom once. Your players get keys you issue. Your client, bot, or panel talks to Phantom with an API key you create in the dashboard.
What this system is
Phantom is an obfuscation tool and a license server in one. You upload a plain jar, get a protected build with native bridge applied automatically, and separately run licensing for the people who buy your client.
- Phantom access — your team's subscription to use the dashboard and engine.
- Your products — the Minecraft clients or loaders you sell (for example "Atlas Client").
- Player licenses — keys you issue to buyers of your product. Those keys bind to HWID.
- API keys — secrets your bot, store panel, or runtime uses to call Phantom on behalf of a product.
Dashboard workflow
- Sign in with Discord at the Phantom portal.
- Open Products and create a product for each client you ship.
- Open API keys, create a key for that product, and store the secret once.
- Open Player licenses and issue keys (optional expiry, notes, later HWID reset/revoke).
- Integrate activation from your client or backend using the endpoint below.
Player activation endpoint
Call this from your loader, launcher, or backend. Send the player's license key and a stable local hardware id. The first success binds that device. Later calls with the same key + HWID succeed and refresh last-seen.
POST https://tryphantom.app/api/v1/licenses/activate
Authorization: Bearer phk_your_api_key
Content-Type: application/json
{
"licenseKey": "2UMQ4-KA29N-ZCD38-W4L34",
"hwid": "your-locally-generated-hardware-id"
}On success:
200 OK
{
"key": "2UMQ4-KA29N-ZCD38-W4L34",
"status": "active",
"hwidBound": true,
"activatedAt": "2026-08-01T12:00:00.000Z",
"productId": "uuid-of-your-product"
}On failure, the response is a 409 with one of:
license_not_foundlicense_inactivelicense_expiredhwid_mismatchproduct_mismatch— key belongs to a different product than the API key
Missing or invalid API keys return 401.
Choosing a hardware identifier
Any value that is stable across restarts and reasonably unique to the machine works. Phantom only compares it for equality and never interprets the format.
Support recovery
If a player changes machines, reset HWID from the dashboard license row. The next activation from any device binds that device. Revoke keys when a sale is refunded or abused.
Protection builds
Jar protection is separate from licensing. Upload a plain jar on the Protect jar tab. Phantom applies the client protection profile with native bridge enabled automatically and returns a protected jar. Wire licensing into your own runtime using this page and an API key.