The current filter as a spreadsheet
const url = 'https://app.dycrypt.com/o/acme/api/licenses/export.csv?status=PENDING&sort=expiresAt&asc=true';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/export.csv?status=PENDING&sort=expiresAt&asc=true' \ --header 'Authorization: Bearer <token>'Same filters and same whitelists as /api/licenses/page, so an export can
never show a row the list would not.
Refuses above 25,000 rows rather than truncating. A file that quietly stops is one somebody will act on believing it is complete.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Where the licence is against the calendar and the revocation flag.
PENDING, EXPIRED and REVOKED do not count against plan capacity.
Responses
Section titled “Responses”A CSV attachment.
More than 25,000 rows match. Narrow the filter.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}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"}