---
title: "List AI activity events"
method: GET
path: "/v1/ai/events"
tags: ["ai"]
---

# List AI activity events

`GET /v1/ai/events`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/ai/events`
- Auth: HTTP bearer

Return the workspace's record of every AI-powered call it made, including the feature, model, outcome, actor, duration, and number of redactions. Calls that were refused, for example because the feature is disabled or a usage limit was reached, also appear as entries, since a blocked request is only evidenced by a record of the refusal. The prompt and output text are never stored. Only events at locations where the caller holds the audit log view permission are returned, as in the audit log. The actor is returned in full only where the caller also holds the user view permission; otherwise only its kind, for example `user` or `staff`. Results are paginated and can be filtered by feature, outcome, and a starting point in time; a page can hold fewer entries than the limit.

**Notes.**
- `nextCursor` sits beside `data`, outside the usual envelope.
- Only events where the caller's `audit-log.view` reaches the event's location are returned, so a page can hold fewer than `limit` events while `nextCursor` is still set.

## Query parameters

- `feature` string
- `outcome` 'ok' | 'blocked' | 'error' | 'quota' | 'disabled'
- `since` string
- `cursor` string
- `limit` integer

## Response `200`

Success.

- object
  - `data` AiEvent[], required
    - `id` string, required
    - `spaceId` string, required
    - `nodeId` string, nullable, required: The location of the content the call was about; null for the workspace root.
    - `actor` string, required: Who made the call. An actor reference: `user:<id>`, `apikey:<id>`, `staff:<email>`, `partner:<email>` or `system…`. Without `user.view` at the event's location, only the kind (`user`, `staff`, …).
    - `feature` string, required: `tags`, `alt-text`, `moderation`, `transcription`, `translation`, `focal-region`, `embedding`, …
    - `featureLabel` string, required: The feature's display name (the raw key for an unknown feature).
    - `sends` string, nullable, required: What the feature sends to the model; null for an unknown feature.
    - `model` string, required
    - `provider` string, required
    - `outcome` 'ok' | 'blocked' | 'error' | 'quota' | 'disabled', required
    - `durationMs` number, nullable, required
    - `inputKind` string, nullable, required: `image`, `text` or `audio`: what was sent, never the content.
    - `redactions` integer, required: Personal-data patterns masked before the call.
    - `detail` string, nullable, required
    - `createdAt` string, required: ISO-8601 timestamp (UTC).
  - `nextCursor` string, nullable, required: Pass as `cursor` for the next (older) page; null on the last page.

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `403`: The token lacks the permission this operation needs (see `x-brix-permission`).
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
