Skip to content

List audit events.

GET
/v1/audit-events
curl --request GET \
--url 'https://api.siteqwality.com/v1/audit-events?actor_type=session' \
--header 'Authorization: Bearer <token>'
actor_user_id
string format: uuid
actor_api_key_id
string format: uuid
actor_type

Who performed an audited action. Mirrors customer_audit_log.actor_type.

string
Allowed values: session m2m api_key impersonated_staff partner connected_app system
action
string

An action and its dot-children: http.job matches http.job.regions, not http.jobs.

target_kind
string
target_id
string format: uuid
since
string format: date-time

RFC 3339; events at or after it, within the last 90 days.

until
string format: date-time

RFC 3339; events at or before it.

limit
integer format: int64

1 to 200, default 50.

cursor
string

next_cursor from the previous page.

The audit log, newest first. Keys need the read:audit scope

Media type application/json

{"data": [...], "next_cursor": ...}; the /v1 shaping keeps it as is.

object
data
required
Array<object>

One row in the customer audit-log list response. request_ip is stringified for JSON transport (Postgres INET round-trips as IpNetwork).

object
id
required
string format: uuid
occurred_at
required
string format: date-time
actor_type
required
string
actor_user_id
string | null format: uuid
actor_api_key_id

The API key that acted, when actor_type is api_key. Null on rows written before attribution landed (2026-08-06).

string | null format: uuid
actor_api_key_name

The key’s friendly name at read time (keys are revoked, never deleted, so this resolves for historical rows too).

string | null
actor_m2m_client_id
string | null
impersonated_by

Staff user id when the action was performed under impersonation.

string | null format: uuid
action
required
string
target_kind
string | null
target_id
string | null format: uuid
http_method
required
string
http_path
required
string
http_status
integer | null format: int32
request_ip
string | null
user_agent
string | null
actor_user_email

The acting user’s email: the person behind a session, an AI assistant or a partner action (or the user staff impersonated).

string | null
connected_app
One of:

The AI assistant or other OAuth app involved: the one that acted when actor_type is connected_app, or the one approved, denied or revoked on an oauth.authorize or account.connected_apps row.

object
client_id
required
string
name
string | null
via

mcp when the change came through the MCP server (an AI assistant’s tool call), whatever credential it used.

string | null
mcp_tool

The MCP tool that made the change, when via is mcp.

string | null
consent_granted

On an oauth.authorize row: whether the member allowed the app.

boolean | null
scopes

On an oauth.authorize row: the scopes the member granted.

array | null
configuration_change
One of:

The observed configuration around one successful mutation. Missing sides mean create or delete.

object
before
One of:
One of:
object
settings
required
object
id
required
string format: uuid
account_id
required
string format: uuid
name
required
string
repeat_count
required

Times to run through every level again after the first pass.

integer format: int32
created_at
required
string format: date-time
levels
array | null
object
id
required
string format: uuid
escalation_policy_id
required
string format: uuid
level_number
required
integer format: int32
timeout_minutes
required
integer format: int32
target_user_ids
required
Array<string>
target_schedule_ids
required
Array<string>
created_at
required
string format: date-time
on_exhausted

What happens when the repeats are used up, or no level reaches anyone.

string
Allowed values: notify_owners stop escalate_to_policy
escalate_to_policy_id

The policy escalate_to_policy runs once; null otherwise.

string | null format: uuid
kind
required
string
Allowed values: escalation_policy
after
One of:
One of:
object
settings
required
object
id
required
string format: uuid
account_id
required
string format: uuid
name
required
string
repeat_count
required

Times to run through every level again after the first pass.

integer format: int32
created_at
required
string format: date-time
levels
array | null
object
id
required
string format: uuid
escalation_policy_id
required
string format: uuid
level_number
required
integer format: int32
timeout_minutes
required
integer format: int32
target_user_ids
required
Array<string>
target_schedule_ids
required
Array<string>
created_at
required
string format: date-time
on_exhausted

What happens when the repeats are used up, or no level reaches anyone.

string
Allowed values: notify_owners stop escalate_to_policy
escalate_to_policy_id

The policy escalate_to_policy runs once; null otherwise.

string | null format: uuid
kind
required
string
Allowed values: escalation_policy
next_cursor

Send back as cursor for the next page; null on the last one.

string | null
Example
{
"data": [
{
"configuration_change": {
"before": {
"settings": {
"on_exhausted": "notify_owners"
},
"kind": "escalation_policy"
},
"after": {
"settings": {
"on_exhausted": "notify_owners"
},
"kind": "escalation_policy"
}
}
}
]
}

Invalid filter, limit or cursor

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

Missing or invalid credentials

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

The key or member may not do this, or lacks the scope it needs

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}

Too many requests; wait for the time in Retry-After

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}