Skip to content

Every licence, or one product's or customer's

GET
/api/licenses
curl --request GET \
--url https://app.dycrypt.com/o/acme/api/licenses \
--header 'Authorization: Bearer <token>'

The whole list, unpaged. Right for an export or a nightly sync; for a UI use /api/licenses/page, which filters and sorts in the database.

productId
integer format: int64
customerId
integer format: int64

The matching licences.

Media typeapplication/json
Array<object>

A licence as it appears in a list.

object
lid
required
string format: uuid
customerId
integer | null format: int64
licensee
required

The customer’s name

string
licenseeEmail
string | null
productId
required
integer format: int64
productName
string | null
productKey

Signed into the licence as prd.

string | null
issuedAt
required
string format: date-time
startsAt

The nbf claim. Absent means it is valid immediately.

string | null format: date-time
expiresAt

Null for a perpetual licence — the exp claim is omitted entirely.

string | null format: date-time
graceDays
required
integer
licenceType
required

See the licence-mode guides — Offline verifies alone, Online must check in, Hybrid does both.

string
Allowed values: OFFLINE ONLINE HYBRID
activation

How a Hybrid licence first binds to a machine. Only meaningful for HYBRID.

string
Allowed values: ONLINE OFFLINE
activated
boolean
boundAt

When it bound to a machine. Null means nobody has installed it yet.

string | null format: date-time
rebindCount

How many times an operator released the binding.

integer
maxMachines

How many machines this licence binds at once. Copied from the product at issue.

integer
seatsUsed

How many of them are bound right now.

integer
status
required

Where the licence is against the calendar and the revocation flag. PENDING, EXPIRED and REVOKED do not count against plan capacity.

string
Allowed values: PENDING ACTIVE GRACE EXPIRED REVOKED
checkHealth

What the field says, beside what the calendar says. NOT_APPLICABLE for every Offline licence, which is most of them in a typical organisation.

string
Allowed values: NOT_APPLICABLE NEVER OK DUE OVERDUE
checkMaxSeconds

The signed offline window.

integer | null
checkEverySeconds

How often the application should check in.

integer | null
revoked
required
boolean
revokedReason
string | null
archived

Filed away — off the default list and out of renewal. Still verifies in the field.

boolean
archivedAt
string | null format: date-time
issuedBy

The person or token that issued it.

string
lastCheckedAt
string | null format: date-time
renewedAt
string | null format: date-time
Example
[
{
"licenceType": "OFFLINE",
"activation": "ONLINE",
"status": "PENDING",
"checkHealth": "NOT_APPLICABLE"
}
]

No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
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.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}