List AI audit records
const 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';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The organisation machine name
Query Parameters
Section titled “Query Parameters”First UTC day (inclusive). At most 31 days, not in the future, not older than 365 days.
Last UTC day (inclusive).
Record time from (inclusive).
Record time to (exclusive).
Portal user id (also matches the requester, approver and reader of tool and access records).
Example
inferenceApproved, rejected, expired, or denied (tool_denied).
Example
approvedOutcome or status: succeeded, failed, blocked, ok, refused, error.
Example
failedExample
api-gatewayNextCursor of the previous page (same organisation and range).
Responses
Section titled “Responses”One page.
object
Error message
Error flag
object
Error message
Error flag
Normalised fields of any record type. A field with an unexpected type is left out.
object
Error message
Error flag
Inference for a record without recordType; tool_denied, tool_proposal, tool_decision, tool_outcome, slack_bot_api, audit_access, …; unknown for an unreadable object
The stored record. prompt and response are present only when the record has promptStored or responseStored true.
object
Too-large: read the record with aiAuditRecordGet.
Keys examined by this call
Records older than 365 days (archived) that this call left out
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.
object
Error message
Error flag
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.
object
Error message
Error flag
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.
object
Error message
Error flag
Example
{ "message": "The requested resource was not found", "error": true, "code": "UNAVAILABLE"}