Docs

List audit events

Preview· P9
GET/audit-events

Returns entries from your organisation's audit trail, newest first: changes, exports and views of personal data, by people, API keys, OAuth apps, kiosks and Agoo itself. The trail is append-only and hash-chained: each entry's previous_hash is the hash of the entry before it. Returns entries from your plan's audit-trail period (3 years on Pro, up to 7 years on Enterprise). Moving to a lower plan doesn't delete older entries: they're kept, hidden, and come back when you move up.

Scope: audit:read · Plan: Pro and Enterprise in live mode; every plan in test mode.

Authorization

AuthorizationBearer <token>

Send Authorization: Bearer <token> on every request. The token is one of:

PrefixWhat it isWhere it may be used
agoo_sk_live_Secret key, live modeYour servers only
agoo_sk_test_Secret key, test modeYour servers only
agoo_pk_live_Publishable key, live modeBrowsers and apps: create pre-registrations and bookings, read public booking types (with their intake questions) and their free slots, read the visit types open for pre-registration with their public forms. Never lists people.
agoo_pk_test_Publishable key, test modeAs above, in test mode

Admins create keys in Console → Developers → API keys and choose each key's scopes. A key is shown once. Never put a secret key in a URL, a browser or a mobile app.

In: header

Scope: audit:read

Query Parameters

limit?integer

How many items to return, from 1 to 100.

Range1 <= value <= 100
Default25
cursor?string

The next_cursor from the previous page. Leave it out for the first page.

Lengthlength <= 512
action?string

Only entries with this action.

Lengthlength <= 100
actor_id?string

Only entries by this actor (a person, API key, OAuth app or device ID).

Lengthlength <= 64
target_id?string

Only entries about this object.

Lengthlength <= 64
site_id?string

Only entries at this site.

Match^site_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"site_01kjpt3yw0fz0v414608h9x65s"
occurred_after?string

Only entries at or after this time.

Formatdate-time
occurred_before?string

Only entries before this time.

Formatdate-time

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/audit-events?limit=25&action=visit.approved&actor_id=person_01kjsesxm0e4zbyvkr7bcfxbfg&target_id=visit_01m4k5z4j0fxbte6sn6e8tpgza&occurred_after=2026-10-14T00%3A00%3A00Z&occurred_before=2026-10-15T00%3A00%3A00Z"
{  "data": [    {      "id": "audit_01m4ww0fyreptvwxm0pnrd2g7y",      "occurred_at": "2026-10-14T09:31:03Z",      "action": "visitor.viewed",      "actor": {        "type": "person",        "id": "person_01kjsevr70faybwar4k1wjj6x2",        "name": "Abena Asante"      },      "target": {        "type": "visitor",        "id": "visitor_01krdtb870fxj8t6ntdtcxwdk5"      },      "site_id": "site_01kjpt3yw0fz0v414608h9x65s",      "ip_address": "203.0.113.24",      "metadata": {},      "hash": "f791fe1a375e72c16f76040c67bc77f83a4e623256782b3cfb3cb7af688b914a",      "previous_hash": "b31cca067d1a4ed2302fc503d63175eeabbd824dc26e7a02cff396dedfdfa6ab"    },    {      "id": "audit_01m4ww0ezgek8v2detdf9c6yw0",      "occurred_at": "2026-10-14T09:31:02Z",      "action": "visit.approved",      "actor": {        "type": "person",        "id": "person_01kjsesxm0e4zbyvkr7bcfxbfg",        "name": "Kwame Mensah"      },      "target": {        "type": "visit",        "id": "visit_01m4k5z4j0fxbte6sn6e8tpgza"      },      "site_id": "site_01kjpt3yw0fz0v414608h9x65s",      "ip_address": null,      "metadata": {        "channel": "push"      },      "hash": "b31cca067d1a4ed2302fc503d63175eeabbd824dc26e7a02cff396dedfdfa6ab",      "previous_hash": "dbb717b137008058d4b3d85acac51886bbece91b07982cfb9d326cb2384e00c2"    }  ],  "next_cursor": "b3BhcXVlLWN1cnNvcg",  "has_more": true}