Skip to content

Audit Event API

The audit event API provides tenant-scoped search and pagination over audit log entries. Use it to build security dashboards, feed compliance workflows, and investigate specific user or model activity.

This guide covers the search API (GET /api/admin/audit-logs/). For streaming bulk export with HMAC verification, see the Audit log export guide.


GET /api/admin/audit-logs/
Authorization: Bearer arb_live_your-api-key-here

Requires Org Admin role. All results are scoped to the authenticated admin’s tenant — cross-tenant access is not possible through this endpoint.


All parameters are optional and may be combined. Multiple filters are ANDed.

ParameterTypeDescription
limitintegerMaximum results to return. Range 1–500. Default 50.
offsetintegerNumber of results to skip for pagination. Default 0.
actionstringFilter by action type (exact match). See action types below.
user_idstringFilter by user UUID (exact match).
model_idstringFilter by model identifier (exact match, e.g. claude-sonnet-4-6).
providerstringFilter by provider name (exact match, e.g. anthropic).
created_afterISO 8601 datetimeFilter entries with created_at ≥ this value (inclusive).
created_beforeISO 8601 datetimeFilter entries with created_at ≤ this value (inclusive).
searchstringCase-insensitive substring match on prompt_text AND response_text.

Results are ordered by created_at descending (newest first).

Common action values in the action field:

ActionDescription
prompt_sentA prompt was submitted to the gateway
response_receivedA response was received from the upstream provider
dlp_blockA request was blocked by DLP
dlp_redactA request was redacted by DLP
loginUser login event
logoutUser logout event
api_key_createdAPI key created
api_key_revokedAPI key revoked
siem_test_eventSynthetic test event sent to a SIEM connector

{
"items": [...],
"total": 1842,
"limit": 50,
"offset": 0
}
FieldTypeDescription
itemsarrayArray of audit log entry objects
totalintegerTotal matching entries (before limit/offset)
limitintegerThe requested limit
offsetintegerThe requested offset

Each object in items contains:

FieldTypeDescription
idstring (UUID)Audit entry identifier
user_idstring (UUID)UUID of the acting user, or null for system events
actionstringAction type identifier
model_idstringModel identifier, or null
providerstringProvider name, or null
prompt_textstringPrompt text sent, or null
response_textstringResponse text received, or null
token_count_inputintegerInput token count, or null
token_count_outputintegerOutput token count, or null
cost_estimatenumberEstimated cost in USD, or null
latency_msintegerProvider round-trip latency in milliseconds, or null
created_atISO 8601 datetimeEntry creation timestamp

Audit entries include additional enrichment fields populated at request time. These fields are present on the underlying audit_logs row but may not all be returned by default in the search response.

GeoIP fields are derived from src_ip at write time using the MaxMind GeoIP2 database. They are not included in the HMAC chain (dataset-version-dependent — enrichment can change when the GeoIP database is updated).

FieldDescription
src_ipSource (client) IP address (PostgreSQL inet type)
dst_ipDestination (gateway) IP address
src_country_codeISO 3166-1 alpha-2 country code
src_country_nameFull country name
src_regionState or province
src_cityCity name
src_ispInternet service provider
src_asnAutonomous System Number
src_asn_orgAS organization name
src_arin_orgARIN Bulk Whois organization name
dst_country_codeCountry code for destination IP
dst_asnDestination ASN
dst_asn_orgDestination AS organization name

CredInt fields are populated when the CredInt scan is active for the org and a corpus match is detected on the input.

FieldDescription
credint_enabledWhether CredInt was active for this org at request time
credint_hittrue if a breach corpus match was detected
frequency_bucketHit severity tier: critical, high, medium, or low
context_typeL1 extractor context type for the matched token (e.g. explicit_assignment)
sha1_prefixFirst 8 hex characters of SHA-1 digest of the matched token. Audit traceability only — never the full hash, never the credential cleartext.
credint_confidenceL3 NLI confidence score for the hit, in [0.0, 1.0]

A null value for CredInt fields means CredInt was not in scope for this entry (feature off, non-DLP action, or the row predates CredInt).


The audit log implements an HMAC-SHA256 chain for tamper detection. The chain fields — hmac, previous_hmac, and hmac_key_id — are excluded from the search API response. They are not returned by GET /api/admin/audit-logs/ because they are security-sensitive integrity data, not operational data.

To verify the HMAC chain, use the dedicated audit integrity verification workflow.

The src_ip and dst_ip fields are included in the HMAC chain (they are observed facts). The GeoIP enrichment columns are not chained because they are derived from a dataset that can change.


The API uses offset-based pagination. Use limit and offset to page through results:

# First page
GET /api/admin/audit-logs/?limit=100&offset=0
# Second page
GET /api/admin/audit-logs/?limit=100&offset=100

The total field in the response gives the full result count for the applied filters, enabling UI pagination controls.

For time-range scans over large datasets, use created_after and created_before to narrow the window before paginating. This reduces query cost significantly compared to offset pagination over millions of rows.


All events for a specific user in the last 24 hours

Section titled “All events for a specific user in the last 24 hours”
GET /api/admin/audit-logs/?user_id=1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d&created_after=2026-03-10T00:00:00Z&created_before=2026-03-11T00:00:00Z
Authorization: Bearer arb_live_your-api-key-here
GET /api/admin/audit-logs/?action=dlp_block&limit=500
Authorization: Bearer arb_live_your-api-key-here

Search for events containing a specific term

Section titled “Search for events containing a specific term”
GET /api/admin/audit-logs/?search=internal+credentials&limit=50
Authorization: Bearer arb_live_your-api-key-here

The search parameter performs case-insensitive substring matching on both prompt_text and response_text. Results include entries where either field contains the search string.

GET /api/admin/audit-logs/?model_id=claude-sonnet-4-6&provider=anthropic&limit=100
Authorization: Bearer arb_live_your-api-key-here

Audit entries with source="outpost" were forwarded from a Hybrid Outpost deployment via the audit sync endpoint. These entries also carry an outpost_id field identifying the originating Outpost. They are included in normal search results and filtered the same way as platform-generated entries.