Skip to content

List AI audit records

GET
/api/v3/organizations/{organisation}/ai/audit/records
curl --request GET \
--url 'https://dashboard.quantcdn.io/api/v3/organizations/example/ai/audit/records?startDate=2026-04-15&endDate=2026-04-15&recordType=inference&decision=approved&outcome=failed&interface=api-gateway&limit=50' \
--header 'Authorization: Bearer <token>'

One page of the organisation’s AI audit records (inference, tool approvals and denials, Slack bot API calls, audit log reads). Filters match exactly. A page stops at limit rows, at 1,000 scanned records or at 20 seconds, so it can hold fewer rows than limit while hasMore is true: pass nextCursor back as cursor until hasMore is false. Order: by day, then by key. prompt and response are returned only when the record stores them. Records older than 365 days are archived (skippedArchived). Each call is recorded in the audit log (recordType audit_access) before it reads; when that record cannot be written the answer is 503 and nothing is read. Needs the view_ai_audit permission and, for a scoped token, ai:audit:read.

organisation
required
string

The organisation machine name

startDate
required
string format: date

First UTC day (inclusive). At most 31 days, not in the future, not older than 365 days.

endDate
required
string format: date

Last UTC day (inclusive).

since
string format: date-time

Record time from (inclusive).

until
string format: date-time

Record time to (exclusive).

userId
string
<= 256 characters

Portal user id (also matches the requester, approver and reader of tool and access records).

tokenId
string
<= 256 characters
modelId
string
<= 256 characters
recordType
string
<= 256 characters
Example
inference
decision
string
<= 256 characters

Approved, rejected, expired, or denied (tool_denied).

Example
approved
tool
string
<= 256 characters
outcome
string
<= 256 characters

Outcome or status: succeeded, failed, blocked, ok, refused, error.

Example
failed
interface
string
<= 256 characters
Example
api-gateway
limit
integer
default: 50 >= 1 <= 200
cursor
string

NextCursor of the previous page (same organisation and range).

One page.

Media typeapplication/json
object
message
required

Error message

string
error
required

Error flag

boolean
orgId
required
string
startDate
required
string format: date
endDate
required
string format: date
count
required
integer
records
required
Array<object>
object
message
required

Error message

string
error
required

Error flag

boolean
key
required
string
date
required
string format: date
summary
required

Normalised fields of any record type. A field with an unexpected type is left out.

object
message
required

Error message

string
error
required

Error flag

boolean
recordType
required

Inference for a record without recordType; tool_denied, tool_proposal, tool_decision, tool_outcome, slack_bot_api, audit_access, …; unknown for an unreadable object

string
timestamp
string format: date-time
userId
string
tokenId
string
modelId
string
interface
string
tools
required
Array<string>
decision
string
outcome
string
record

The stored record. prompt and response are present only when the record has promptStored or responseStored true.

object
key
additional properties
any
omitted

Too-large: read the record with aiAuditRecordGet.

string
Allowed values: too-large unreadable
scanned
required

Keys examined by this call

integer
skippedArchived
required

Records older than 365 days (archived) that this call left out

integer
hasMore
required
boolean
nextCursor
string
Example
{
"message": "The requested resource was not found",
"error": true,
"records": [
{
"message": "The requested resource was not found",
"error": true,
"key": "orgs/my-org/2026-10-28/req-123-ab12cd34.json",
"summary": {
"message": "The requested resource was not found",
"error": true
},
"omitted": "too-large"
}
]
}

Invalid range, filter, limit or cursor.

Media typeapplication/json
object
message
required

Error message

string
error
required

Error flag

boolean
error
required
string
code
string
retryable
boolean
Example
{
"message": "The requested resource was not found",
"error": true,
"code": "UNAVAILABLE"
}

Invalid or expired token

PERMISSION_DENIED or SCOPE_REQUIRED

The AI audit log could not be reached.

Media typeapplication/json
object
message
required

Error message

string
error
required

Error flag

boolean
error
required
string
code
string
retryable
boolean
Example
{
"message": "The requested resource was not found",
"error": true,
"code": "UNAVAILABLE"
}

UNAVAILABLE: the read could not be recorded, so it was not made. Retry.

Media typeapplication/json
object
message
required

Error message

string
error
required

Error flag

boolean
error
required
string
code
string
retryable
boolean
Example
{
"message": "The requested resource was not found",
"error": true,
"code": "UNAVAILABLE"
}