Licenses

Read, create, edit, and run actions on application licenses.

All license routes require applicationId and check access to that application.

Duration format

License durations use compact unit strings:

UnitMeaningMax per part
sseconds59
mminutes59
hhours23
ddays365
wweeks52
yyears100

Examples: 30d, 1h30m, 1y.

Get licenses metadata

GET /api/v1/panel/get-licenses-metadata

Required scope: licenses:read

curl "https://api.blazeauth.net/api/v1/panel/get-licenses-metadata?applicationId=123456789" \
  -H "Authorization: Bearer $BLAZEAUTH_MANAGEMENT_API_KEY"
{
  "success": true,
  "message": "Successfully fetched licenses metadata",
  "data": {
    "totalLicenses": 120,
    "availableLicenses": 30,
    "pausedLicenses": 5,
    "activeLicenses": 80,
    "expiredLicenses": 3,
    "blacklistedLicenses": 2
  }
}

Get licenses table

GET /api/v1/panel/get-licenses-table

Required scope: licenses:read

curl "https://api.blazeauth.net/api/v1/panel/get-licenses-table?applicationId=123456789&currentPage=1" \
  -H "Authorization: Bearer $BLAZEAUTH_MANAGEMENT_API_KEY"

Optional searchParams is a URL-encoded JSON string:

{
  "searchString": "ABCDEF",
  "categories": ["License", "IPv4", "Client id"]
}
{
  "success": true,
  "message": "Successfully fetched licenses table",
  "data": [
    {
      "id": "7001",
      "license": "ABCDEF-123456",
      "clientId": "client-001",
      "ipAddress": "203.0.113.10",
      "pausedAt": null,
      "createdAt": "2026-05-12T09:00:00.000Z",
      "expiresAt": "2026-06-11T09:00:00.000Z",
      "applicationId": "123456789",
      "comment": "main seat",
      "applicationLicenseSettings": {
        "requiresClientId": true,
        "levels": ["pro"],
        "durationSeconds": 2592000,
        "status": "activated"
      },
      "applicationUsers": {
        "login": "john@example.com"
      }
    }
  ],
  "totalPages": 3
}
Query fieldTypeRequiredNotes
applicationIdstringYesTarget application id.
currentPagenumberYesPositive integer.
searchParamsstring | nullNoJSON string with searchString and categories.

Create licenses

POST /api/v1/panel/create-licenses

Required scope: licenses:create

curl "https://api.blazeauth.net/api/v1/panel/create-licenses?applicationId=123456789" \
  -X POST \
  -H "Authorization: Bearer $BLAZEAUTH_MANAGEMENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "count": 2,
    "license": "PREMIUM-******",
    "comment": "batch import",
    "clientId": "client-001",
    "ipAddress": "203.0.113.10",
    "licensesSettings": {
      "levels": ["pro"],
      "durationSeconds": "30d",
      "requiresClientId": true
    }
  }'
Body fieldTypeRequiredNotes
countnumberYesMaximum 256.
licensestringYes6-64 characters.
commentstringNoMaximum 64 characters.
clientIdstringNoMaximum 64 characters.
ipAddressstringNoMaximum 64 characters.
licensesSettings.levelsstring[]YesAt least one level.
licensesSettings.durationSecondsstringYesDuration string such as 30d.
licensesSettings.requiresClientIdbooleanYesWhether license activation requires a client id.
{
  "success": true,
  "message": "Successfully created licenses.",
  "createdLicenses": ["PREMIUM-A1B2C3", "PREMIUM-D4E5F6"]
}

Edit licenses

PATCH /api/v1/panel/edit-licenses

Required scope: licenses:update

The route uses the same body schema as create. Include count even though the edit handler ignores it; 1 is a safe compatibility value.

curl "https://api.blazeauth.net/api/v1/panel/edit-licenses?applicationId=123456789&licenseId=7001" \
  -X PATCH \
  -H "Authorization: Bearer $BLAZEAUTH_MANAGEMENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "count": 1,
    "license": "ABCDEF-123456",
    "comment": "renewed seat",
    "clientId": "client-001",
    "ipAddress": "203.0.113.10",
    "licensesSettings": {
      "levels": ["pro"],
      "durationSeconds": "60d",
      "requiresClientId": true
    }
  }'
Query fieldTypeRequiredNotes
applicationIdstringYesTarget application id.
licenseIdstringYesLicense row to update.
{
  "success": true,
  "message": "Successfully updated license.",
  "createdLicenses": []
}

License action

POST /api/v1/panel/license-action

Delete actions require licenses:delete. All other actions require licenses:update.

curl "https://api.blazeauth.net/api/v1/panel/license-action?applicationId=123456789" \
  -X POST \
  -H "Authorization: Bearer $BLAZEAUTH_MANAGEMENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "extend_duration_license",
    "licenseId": "7001",
    "durationSeconds": "30d"
  }'
Body fieldTypeRequiredNotes
actionstringYesOne of the actions below.
licenseIdstringAction-specificRequired for single-license actions.
durationSecondsstringAction-specificRequired for add/extend time actions.
userLoginstringAction-specificRequired for link_license_to_user.
ActionRequired scopeRequired extra fields
add_time_to_every_licenselicenses:updatedurationSeconds
pause_every_licenselicenses:updateNone
unpause_every_licenselicenses:updateNone
delete_every_licenselicenses:deleteNone
extend_duration_licenselicenses:updatelicenseId, durationSeconds
reset_client_id_licenselicenses:updatelicenseId
pause_licenselicenses:updatelicenseId
unpause_licenselicenses:updatelicenseId
delete_licenselicenses:deletelicenseId
blacklist_licenselicenses:updatelicenseId
unblacklist_licenselicenses:updatelicenseId
reinitialize_licenselicenses:updatelicenseId
link_license_to_userlicenses:updatelicenseId, userLogin

Many actions notify connected client sessions for the application.

{
  "success": true,
  "message": "Action completed successfully."
}

On this page