# List account activity

Source: https://checkslip.com/en/docs/list-audit-events

GET `https://api.checkslip.com/api/audit/events`

API key

What happened on the account, newest first, such as API keys created or revoked, members invited or removed, and role changes. Each row says who acted (actor_type), through which channel (channel), on what (target_type, target_id), the value before and after, and the result: SUCCESS, FAILURE or DENIED. Filter action by its full name, or end it with .* for a whole group, e.g. api_key.*. Defaults to the last 24 hours; at most 31 days per call. Use next_cursor for the next page; there is no total. Uses no credit. Needs an API key with audit:read, or the web app sign-in.

## Parameters

| Field | In | Type | Required |
| --- | --- | --- | --- |
| `from` | query | `string (date-time)` | no |
| `to` | query | `string (date-time)` | no |
| `action` | query | `string` | no |
| `actor_type` | query | `USER \| API_KEY \| ASSISTANT \| STAFF \| SYSTEM` | no |
| `actor_id` | query | `string (uuid)` | no |
| `channel` | query | `API \| DASHBOARD \| ASSISTANT \| STAFF \| SYSTEM` | no |
| `target_type` | query | `string` | no |
| `target_id` | query | `string` | no |
| `cursor` | query | `string` | no |
| `limit` | query | `integer` | no |

## Responses

### 200 `application/json`

| Field | Type | Required |
| --- | --- | --- |
| `items` | `AuditEventRecord[]` | yes |
| `items[].event_id` | `string (uuid)` | yes |
| `items[].category` | `MONEY \| ACCESS \| DATA_CHANGE \| SENSITIVE_READ \| SECURITY` | yes |
| `items[].outcome` | `SUCCESS \| FAILURE \| DENIED` | yes |
| `items[].occurred_at` | `string (date-time)` | yes |
| `items[].request_id` | `string (uuid) \| null` | no |
| `items[].actor` | `object` | yes |
| `items[].actor.type` | `USER \| API_KEY \| ASSISTANT \| STAFF \| SYSTEM` | yes |
| `items[].actor.id` | `string (uuid) \| null` | no |
| `items[].actor.on_behalf_of_user_id` | `string (uuid) \| null` | no |
| `items[].channel` | `API \| DASHBOARD \| ASSISTANT \| STAFF \| SYSTEM` | yes |
| `items[].action` | `string` | yes |
| `items[].target` | `object` | yes |
| `items[].target.type` | `string` | yes |
| `items[].target.id` | `string` | yes |
| `items[].before` | `object \| null` | no |
| `items[].after` | `object \| null` | no |
| `items[].reason` | `string \| null` | no |
| `items[].undo_of_event_id` | `string (uuid) \| null` | no |
| `next_cursor` | `string \| null` | yes |

### Possible errors

400 401 403 429

An error as Problem Details. All codes are listed at [Error codes](https://checkslip.com/en/docs/errors)

**cURL**

```bash
curl https://api.checkslip.com/api/audit/events \
  -H "Authorization: Bearer $CHECKSLIP_API_KEY"
```

**Node.js**

```javascript
const res = await fetch("https://api.checkslip.com/api/audit/events", {
  headers: {
    Authorization: `Bearer ${process.env.CHECKSLIP_API_KEY}`,
  },
});
const data = await res.json();
```

**Python**

```python
import os

import requests

res = requests.get(
    "https://api.checkslip.com/api/audit/events",
    headers={
        "Authorization": f"Bearer {os.environ['CHECKSLIP_API_KEY']}",
    },
)
data = res.json()
```

```json
{
  "items": [
    {
      "event_id": "0b6c2f5e-8a41-4d1e-9c3a-5f7e2d18a6b4",
      "category": "MONEY",
      "outcome": "SUCCESS",
      "occurred_at": "2026-11-05T09:30:00+07:00",
      "request_id": "0b6c2f5e-8a41-4d1e-9c3a-5f7e2d18a6b4",
      "actor": {
        "type": "USER",
        "id": "0b6c2f5e-8a41-4d1e-9c3a-5f7e2d18a6b4",
        "on_behalf_of_user_id": "0b6c2f5e-8a41-4d1e-9c3a-5f7e2d18a6b4"
      },
      "channel": "API",
      "action": "api_key.created",
      "target": {
        "type": "string",
        "id": "string"
      },
      "before": {},
      "after": {},
      "reason": "string",
      "undo_of_event_id": "0b6c2f5e-8a41-4d1e-9c3a-5f7e2d18a6b4"
    }
  ],
  "next_cursor": "string"
}
```
