The organisation's audit trail
GET
/api/dashboard/activity
const url = 'https://app.dycrypt.com/o/acme/api/dashboard/activity?limit=100';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/dashboard/activity?limit=100' \ --header 'Authorization: Bearer <token>'Requires activity:read. Append-only and written by the platform, never by
a caller. A token appears under its own name, so an entry written by
automation never reads as though a person made it.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”limit
integer
Responses
Section titled “Responses”Recent events, newest first.
Media typeapplication/json
Array<object>
Append-only. Written by the platform, never by a caller.
object
at
string format: date-time
actor
A token appears under its own name
string
type
string
target
string | null
detail
string | null
Example
[ { "type": "LICENSE_ISSUED" }]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"}