API Endpoint

POST /deactivate

Release one fingerprint binding so a seat can be reused on another device.

POST /deactivate

Endpoint context

Use these endpoints for license lifecycle operations. /generate and /revoke require a generated active server API key. Runtime endpoints use license_key plus fingerprint.

  • Useful for reinstalls, hardware replacement, and seat transfer flows.
  • Behavior is idempotent by state: repeated calls do not double-release seats.
  • Idempotency-Key header is not required for this endpoint.
bash
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"
  }'

Request body

json
{
  "license_key": "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
  "fingerprint": "abc123-machine-fingerprint",
  "reason": "user_device_replaced"
}

Response body

json
{
  "valid": true,
  "released": true,
  "status": "inactive",
  "active_seats": 0,
  "max_activations": 3,
  "expires_at": "2026-10-20T12:00:00Z"
}

Response field types

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.

Error codes

400

Invalid JSON or missing required fields.

404

License not found.

500

Unexpected server or storage error.

Back to API overview