Skip to content

Validate License

Check whether a license is still valid. Optionally check whether a specific identifier is currently activated.

This endpoint always returns 200 – an inactive or expired license comes back with valid: false rather than an error code. That makes integration simpler for clients that just want to know "should I unlock the feature?".

Request

POST /api/index.php/v1/licensedock/licenses/validate

Parameters

ParameterTypeRequiredNotes
license_keystringYesThe license key (or use dlid)
identifierstringNoIf provided, the response confirms whether this identifier is activated
dlidstringAlias for license_key

Example

bash
curl -X POST https://yoursite.com/api/index.php/v1/licensedock/licenses/validate \
  -H "Content-Type: application/json" \
  -d '{
    "license_key": "A1B2C3D4-E5F6A7B8-C9D0E1F2-A3B4C5D6",
    "identifier": "example.com"
  }'

Response

Success (200)

json
{
  "data": {
    "valid": true,
    "status": "active",
    "license_key": "A1B2C3D4-E5F6A7B8-C9D0E1F2-A3B4C5D6",
    "product": "My Extension",
    "plan": "Developer",
    "activation_type": "domain",
    "activation_limit": 5,
    "activations_used": 2,
    "expires_at": "2027-03-20T03:21:26Z",
    "identifier_activated": true
  }
}
FieldNotes
validtrue only if status is active and the license isn't expired
statusactive, expired, suspended, revoked, or cancelled. Reflects the live state
expires_atnull for lifetime licenses
identifier_activatedtrue when no identifier was supplied. Otherwise true if that identifier is activated on this license

Errors

CodeHTTPWhen
INVALID_REQUEST400Missing license_key
LICENSE_NOT_FOUND403License key doesn't exist
RATE_LIMITED429More than 60 requests in 60 seconds from this IP

The validate endpoint never emits LICENSE_INACTIVE or LICENSE_EXPIRED – read valid and status instead.

Side Effects

Each validate call updates last_check_at, last_check_ip, and increments check_count on the license, so admins can see when the customer last phoned home.

Joomla Extensions by Contona