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.