API Reference

Verify License

Checks a license's status (exists, not banned, not paused, not expired) without logging it in. Read-only: no device is registered, no session or license login fields are updated, and no usage is tracked.

Endpoint

POST /api/v2/licenses/verify https://authly.cc

Parameters

FieldDescription
session_id Required Active session from a successful Init call.
license_key Required The license key to check.

Example Request

{
  "session_id": "dc1ce...a3a75",
  "license_key": "XXXXX-XXXXX-XXXXX-XXXXX"
}

Responses

License is valid. Returns license details. No devices, session fields, or usage counters are modified.

{
  "success": true,
  "valid": true,
  "message": "License is valid",
  "license": {
    "license_key": "XXXXX-XXXXX-XXXXX-XXXXX",
    "owner_id": "uuid",
    "app_name": "MyApp",
    "subscription": "Premium",
    "subscription_level": 2,
    "expiry_date": "2026-12-31 23-59-59",
    "days_left": 214,
    "max_devices": 2,
    "email": "[email protected]",
    "last_login": "2026-05-29 10-30-00",
    "registered_at": "2026-01-04 09-12-00"
  }
}

MISSING_FIELDS - One or more required fields were not sent.

{
  "success": false,
  "code": "MISSING_FIELDS",
  "message": "Required fields are missing"
}

Session check failed. Codes: INVALID_SESSION, SESSION_EXPIRED.

{
  "success": false,
  "code": "INVALID_SESSION",
  "message": "Invalid or expired session"
}

License is blocked. Codes: LICENSE_BANNED, LICENSE_PAUSED, LICENSE_EXPIRED.

{
  "success": false,
  "code": "LICENSE_EXPIRED",
  "message": "This license has expired"
}

LICENSE_NOT_FOUND - No license matched the given key in this app.

{
  "success": false,
  "code": "LICENSE_NOT_FOUND",
  "message": "License not found"
}

INTERNAL - Unexpected server-side error.

{
  "success": false,
  "code": "INTERNAL",
  "message": "An internal server error occurred"
}

Verify vs. Login

Use /api/v2/licenses/verify when you only need to know whether a license is currently usable (e.g. periodic background re-checks). It does not register a device, does not enforce max_devices, and does not update sid, ip_address, or last_login on the license. Use License Key Login (/api/v2/licenses) for the actual activation flow, which registers the device and updates the session.