License REST API

This is the reference for the license endpoints on your Avenia Digital Products store. Use it together with Licensing Integration Guide, which shows how to add a license field to your plugin or theme and when to call each endpoint.

For Dashboard plugin/theme updates (get-version / plugin-information), see WordPress Plugin and Theme Updates Guide .

Store owners who only enable keys on products should read License Keys instead.

Base Url

https://your-store.com/wp-json/avenia-digital-products/v1/

Replace your-store.com with your real domain. No API key is required. Requests are rate-limited per IP address (Settings → Product licenses → API Rate Limit on the store, default 100 per hour).

Validate License

POST /validate-license

JSON body:

{
  "license_key": "XXXX-XXXX-XXXX-XXXX",
  "product_id": 123,
  "domain": "example.com",
  "activation_key": "optional-activation-key"
}

product_id is required. domain is optional; when provided, an active activation for that domain is required.

Example success response:

{
  "valid": true,
  "status": "active",
  "expires_at": "2026-12-31 23:59:59",
  "activations_count": 1,
  "max_activations": 3
}

A key is treated as invalid when it does not exist, is not active, the parent order’s access was revoked, a subscription product’s subscription is not active, or an expiry date has passed for time-limited keys.

Activate License

POST /activate-license

JSON body:

{
  "license_key": "XXXX-XXXX-XXXX-XXXX",
  "domain": "example.com",
  "product_id": 123,
  "product_type": "wordpress"
}

product_id is required. domain should be a stable identifier for the customer site (commonly the host from home_url()). product_type is optional (default wordpress) and stored as a label — you can pass plugin, theme, or another label you prefer.

Example success response:

{
  "success": true,
  "activation_key": "abc123..."
}

Failed activations return success: false with a message (for example when the maximum number of sites is reached). Activating the same license key on the same domain again returns the existing activation and does not consume another slot.

Deactivate License

POST /deactivate-license

JSON body:

{
  "license_key": "XXXX-XXXX-XXXX-XXXX",
  "activation_key": "abc123...",
  "domain": "example.com"
}

Example success response:

{
  "success": true
}

Call this when the customer removes the license in your settings UI or moves to a new domain, so they free a slot without needing to use My Account on the store.

Store Settings That Affect The Api

Settings → Product Licenses on the store:

License Key Format

Pattern for newly generated keys only.

API Rate Limit (per hour)

Caps requests per IP.

Generic API Error Messages

When enabled, failure responses are less specific, which is better for public endpoints on a live store.