Skip to content

API Reference

LicenseDock provides a REST API for license management, update checks, and secure downloads. Use it to integrate license activation into your software.

Base URL

https://yoursite.com/api/index.php/v1/licensedock/

Authentication

License-key based. Pass license_key in the request body (or query string for GET endpoints). Joomla token auth is not used – the routes are public and authenticated by the license key itself.

For compatibility with Joomla's update system, the dlid parameter is accepted as an alias for license_key on every endpoint.

Response Format

Success

json
{
  "data": {
    "key": "value"
  }
}

HTTP 200. Always JSON, Content-Type: application/json.

Error

json
{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable description"
  }
}

The HTTP status reflects the error class (see the table below).

Error Codes

CodeHTTPWhen
INVALID_REQUEST400Missing or malformed parameters
LICENSE_NOT_FOUND403The supplied key doesn't exist
LICENSE_INACTIVE403License exists but its status isn't active
LICENSE_EXPIRED403License expires_at is in the past
ACTIVATION_LIMIT_REACHED403License has no free activation slots
ACTIVATION_NOT_FOUND404No activation matches the supplied identifier
PRODUCT_MISMATCH403License doesn't match the requested product
DOWNLOAD_NOT_FOUND404Product has no published download
FILE_NOT_FOUND404Download record exists but the file is missing on disk
RATE_LIMITED429Too many requests (60/minute per IP)
INTERNAL_ERROR500Unhandled server exception – check Joomla error log

The validate endpoint is special: it never returns LICENSE_INACTIVE or LICENSE_EXPIRED errors. It always returns 200 with valid: false instead, so a caller can read the status without exception handling.

Rate Limiting

All endpoints are rate-limited to 60 requests per 60 seconds per IP. When exceeded, the response is 429 RATE_LIMITED.

Identifier Normalisation

Endpoints that take an identifier parameter normalise it based on the plan's activation type:

TypeInputStored as
domainhttps://www.Example.com/pathexample.com
seatUser@Example.comuser@example.com
deviceMacBook-Pro-ABC123unchanged
instanceprod-api-01unchanged

Conventions

  • Dates are ISO 8601 in UTC: 2026-03-20T03:21:26Z
  • Absent values are null, not empty strings
  • JSON is encoded with JSON_UNESCAPED_SLASHES
  • License keys are case-sensitive

Endpoints

MethodEndpointPurpose
POST/licenses/activateRegister an activation
POST/licenses/deactivateRemove an activation
POST/licenses/validateCheck license status
GET/updates/:product_idCheck for a newer version
GET/downloads/:product_idDownload the latest published file

Joomla Extensions by Contona