One page, filtered and sorted in the database
const url = 'https://app.dycrypt.com/o/acme/api/licenses/page?status=PENDING&sort=issuedAt&asc=false&limit=25&offset=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://app.dycrypt.com/o/acme/api/licenses/page?status=PENDING&sort=issuedAt&asc=false&limit=25&offset=0' \ --header 'Authorization: Bearer <token>'total is the count matching the same filters, not the size of the page —
a pager that cannot say “of 4,312” is a pair of arrows in the dark.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Free text over the customer name, email and licence id.
Where the licence is against the calendar and the revocation flag.
PENDING, EXPIRED and REVOKED do not count against plan capacity.
An expiry window, as counted by /api/licenses/windows. Archived
licences are excluded from every window except archived, which is
the only way to list them.
Responses
Section titled “Responses”One page of licences.
object
A licence as it appears in a list.
object
The customer’s name
Signed into the licence as prd.
The nbf claim. Absent means it is valid immediately.
Null for a perpetual licence — the exp claim is omitted entirely.
See the licence-mode guides — Offline verifies alone, Online must check in, Hybrid does both.
How a Hybrid licence first binds to a machine. Only meaningful for HYBRID.
When it bound to a machine. Null means nobody has installed it yet.
How many times an operator released the binding.
How many machines this licence binds at once. Copied from the product at issue.
How many of them are bound right now.
Where the licence is against the calendar and the revocation flag.
PENDING, EXPIRED and REVOKED do not count against plan capacity.
What the field says, beside what the calendar says. NOT_APPLICABLE for
every Offline licence, which is most of them in a typical organisation.
The signed offline window.
How often the application should check in.
Filed away — off the default list and out of renewal. Still verifies in the field.
The person or token that issued it.
Matching the filters
Example
{ "rows": [ { "licenceType": "OFFLINE", "activation": "ONLINE", "status": "PENDING", "checkHealth": "NOT_APPLICABLE" } ]}No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}Authenticated, but not allowed: a missing scope, a read-only role, a plan limit reached, or a credential used under another organisation’s slug. The right credential doing something it may not do.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}