Skip to content

Public Endpoints

The License Server exposes a public REST API for client plugins and themes to manage activations and check for updates.

Base Namespace:

/wp-json/license-server/v1

Registers a specific domain or environment against a license key.

FieldTypeRequiredDescription
license_keystringYesThe license key provided to the customer.
slugstringYesThe software slug (e.g., my-cool-plugin).
domainstringYesThe normalized host name of the client site.
{
"license_key": "WPAB-6638C488-ABCD",
"slug": "my-cool-plugin",
"domain": "example.com"
}
{
"success": true,
"message": "License activated successfully.",
"license": "valid",
"expires_at": "2025-12-31 23:59:59"
}
  • 400 Bad Request: Missing required parameters or slug mismatch.
  • 403 Forbidden: Activation limit reached or license inactive/expired.
  • 404 Not Found: Invalid license key.

Verifies the current status of a license.

ParameterTypeRequiredDescription
license_keystringYesThe license key to check.
slugstringYesThe software slug.
domainstringNoIf provided, also verifies if the license is active for this domain.
{
"success": true,
"license": "valid",
"expires_at": "2025-12-31 23:59:59",
"activation_limit": 3
}

3. Update Check (GET /update-check/{slug}/{license_key})

Section titled “3. Update Check (GET /update-check/{slug}/{license_key})”

Returns metadata in a format compatible with the WordPress.org Plugin API and the Plugin Update Checker (PUC) library.

  • {slug}: The software slug.
  • {license_key}: The customer’s license key.
  • host: The host URL requesting the update (for logging).
{
"name": "My Cool Plugin Pro",
"slug": "my-cool-plugin",
"version": "2.1.0",
"download_url": "https://server.com/wp-json/license-server/v1/download/my-cool-plugin/WPAB-...",
"package": "https://server.com/wp-json/license-server/v1/download/my-cool-plugin/WPAB-...",
"homepage": "https://server.com",
"requires": "5.0",
"tested": "6.5",
"sections": {
"description": "Full plugin description...",
"changelog": "<h4>2.1.0</h4><ul><li>Bug fixes...</li></ul>"
}
}

4. Protected Download (GET /download/{slug}/{license_key})

Section titled “4. Protected Download (GET /download/{slug}/{license_key})”

Streams the latest release zip file. This endpoint performs full license validation before initiating the stream.

  • {slug}: The software slug.
  • {license_key}: The customer’s license key.

The response is returned with standard file-stream headers:

  • Content-Type: application/zip
  • Content-Disposition: attachment; filename="slug-version.zip"

To prevent abuse, the following limits are enforced per IP address:

EndpointLimitWindow
/activate10 requests60 seconds
/check60 requests60 seconds
/update-check60 requests60 seconds
/download60 requests60 seconds