List events

One page of the organization's audit log, newest first.

GET /organizations/{org}/events

Returns the org’s audit log, newest first, filtered and paged. This is the one paginated list in the management API.

Authorization

Org owner. Anyone else gets 404, as if the log did not exist.

Path parameters

NameTypeDescription
orgstringThe organization: its id (org_…) or its slug. It has to be an org your token can manage (see Who can call it)

Query parameters

NameTypeRequiredDescription
per_pageintegerno1, 50 or 100. Default 50
pageintegernoZero-based. Default 0
entitystringnoOnly entries about this entity type
verbstringnocreated, updated, deleted or login
actor_idstringnoOnly entries caused by this user or client
key_prefixstringnoOnly entries whose key starts with this
from, toISO datenoTime range

Any other parameter, or a parameter given twice, is a 400.

Response

200 OK with an array of entries.

[
  {
    "id": "…",
    "key": "tenant.updated",
    "entity": "tenant",
    "verb": "updated",
    "at": "2026-10-18T09:12:00.000Z",
    "actor": { "kind": "user", "id": "usr_65f1c2a9e4b0d3f7a1c8e90c" },
    "data": { "id": "tnt_65f1c2a9e4b0d3f7a1c8e908", "name": "Acme France", "…": "…" },
    "previous": { "name": "Acme FR", "…": "…" },
    "changes": { "name": "Acme France" }
  }
]

Paging links come in a Link header with first, prev, next and last, carrying your filters along. A relation is left out when it would point nowhere, and there is no header at all when everything fits on one page.

FieldTypeDescription
idstring
keystringThe routing key, such as tenant.updated
entitystring
verbstring
atISO date
actorobject{ kind: "user" | "client", id } or { kind: "system" }
dataobjectThe resource as stored
previous, changesobjectUpdates only: the state before, and what moved

data, previous and changes are snapshots of the resource as it was stored, so their field names are camelCase.

Errors

StatuserrorWhen
400invalid_queryAn unknown or repeated parameter, or a value out of range. The detail names it
404not_foundYou are not an owner of the org, or the org is not yours

Example

curl https://loginwith.loginwith.dev/organizations/acme/events?verb=deleted&per_page=50 \
  -H "Authorization: Bearer $TOKEN"