Request body
{
"license_key": "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
"fingerprint": "abc123-machine-fingerprint",
"reason": "user_device_replaced"
}API Endpoint
Release one fingerprint binding so a seat can be reused on another device.
POST /deactivate
Use these endpoints for license lifecycle operations. /generate and /revoke require a generated active server API key. Runtime endpoints use license_key plus fingerprint.
curl -X POST http://localhost:8080/deactivate \
-H "Content-Type: application/json" \
-d '{
"license_key": "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
"fingerprint": "abc123-machine-fingerprint",
"reason": "user_device_replaced"
}'{
"license_key": "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
"fingerprint": "abc123-machine-fingerprint",
"reason": "user_device_replaced"
}{
"valid": true,
"released": true,
"status": "inactive",
"active_seats": 0,
"max_activations": 3,
"expires_at": "2026-10-20T12:00:00Z"
}valid
boolean
Whether the request completed successfully.
released
boolean
True when a seat was released for this fingerprint.
status
"inactive" | "active" | "revoked"
License status after deactivation logic is applied.
active_seats
number
Current active seat count after this request.
max_activations
number
Seat limit from slug policy.
expires_at
string | null
RFC3339 timestamp when the license expires, or null when it does not expire.
Invalid JSON or missing required fields.
License not found.
Unexpected server or storage error.