Skip to content

Account activity — who did what, newest first

GET
/v1/audit
curl --request GET \
--url 'https://example.com/v1/audit?limit=50'

One account’s audit trail: ingest, pins, robot mappings, lens edits, episode revisions and deletions, newest first.

Pass entity_type + entity_id for a single entity’s history (what the detail drawers show). Paging is keyset on at, not offset — the feed is appended to continuously, so offsets would skip or repeat rows.

account_id

Account to read (defaults to the caller’s active account)

string | null format: uuid

Account to read (defaults to the caller’s active account)

entity_type

Narrow to one entity kind (dataset_def, …)

string | null
<= 50 characters

Narrow to one entity kind (dataset_def, …)

entity_id

Narrow to one entity’s history

string | null
<= 200 characters

Narrow to one entity’s history

limit
integer
default: 50 >= 1 <= 200
before

Keyset cursor: entries strictly older than this at

string | null

Keyset cursor: entries strictly older than this at

x-api-key
string | null

Audit entries

Media type application/json
AuditListResponse

A page of audit entries, newest first.

object
entries
required
Array<object>
AuditEntryResponse

One recorded event.

object
id
required
string format: uuid
at
required

When the action happened (UTC)

string format: date-time
account_id
required
string format: uuid
user_id

Actor; null for system/service actions

string | null format: uuid
username

Actor’s current username, resolved at read time

string | null
action
required

Dotted past-tense verb, e.g. dataset.pinned

string
entity_type
required

Dataset_def | source | episode | …

string
entity_id
required
string
entity_label

The entity’s human name AT THE TIME of the action — kept verbatim so the entry still reads correctly after a rename or delete

string | null
detail

Action-specific payload

object
key
additional properties
any
next_cursor

Pass as before for the next page; null on the last page

string | null format: date-time
Example generated
{
"entries": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"at": "2026-04-15T12:00:00Z",
"account_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"user_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"username": "example",
"action": "example",
"entity_type": "example",
"entity_id": "example",
"entity_label": "example",
"detail": {}
}
],
"next_cursor": "2026-04-15T12:00:00Z"
}

Invalid or missing API key

Media type application/json
ErrorResponse

Standard error response.

object
detail
required

Error message describing what went wrong

string
Example generated
{
"detail": "example"
}

Account not found or not a member

Validation Error

Media type application/json
HTTPValidationError
object
detail
Array<object>
ValidationError
object
loc
required
Location
Array<string | integer>
msg
required
Message
string
type
required
Error Type
string
input
ctx
Context
object
Example generated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}