Audit Log
Immutable events for inference, keys, policy, and operators.
The audit log is an append-only record of inference completions, key lifecycle, policy diffs, dual-control decisions, and budget events. Events store counts, route, region, and actor. They do not store raw prompts when PII redaction or ZDR is on.
List Events
GET /v1/audit/events?project_id=prj_legal_001&start=2026-09-01&end=2026-09-30&limit=100
Authorization: Bearer eridian_sk_...
Required scope: audit:read
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | Project to query |
start | datetime | Yes | Inclusive start (RFC 3339) |
end | datetime | Yes | Inclusive end |
type | string | No | Event type filter |
actor | string | No | User ID, key ID, or service account |
starting_after | string | No | Cursor. See Pagination |
Event Object
{
"id": "aud_7c21",
"object": "eridian.audit.event",
"type": "inference.completed",
"created_at": 1718400000,
"actor": "key_8f3a2b1c",
"project_id": "prj_legal_001",
"region": "eu-west-1",
"data": {
"request_id": "axm_req_8f3a2b1c",
"route": "gpt",
"cache_hit": false,
"pii_redacted": 2,
"cost_usd": 0.0042,
"template_id": "tpl_contract_summary_v3",
"template_version": "3.2.1"
}
}
Event Types
| Type | When |
|---|---|
inference.completed | Successful or failed inference |
key.create / key.rotate / key.revoke | Key lifecycle |
policy.updated | Routing, PII, or residency policy |
budget.threshold / budget.exceeded | Budget alerts |
template.publish | Template version published |
approval.approved / approval.rejected | Dual control |
eval.run.completed | Evaluation finished |
webhook.delivery.failed | Exhausted retries |
Integrity
Each event includes prev_hash and hash (SHA-256 over the canonical payload). Exports are signed. Tampering with a stored event breaks the chain and fails verification in Evidence Export.
X-Eridian-Audit-Cursor: aud_7c21
X-Eridian-Request-Id: axm_req_9aa0
Retention
Default inference-adjacent audit retention is 90 days, configurable on Enterprise. Billing records follow the order form and UAE accounting rules. Legal hold freezes deletion for named project_id values.
TypeScript
const page = await client.audit.events.list({
projectId: "prj_legal_001",
start: "2026-09-01T00:00:00Z",
end: "2026-09-30T23:59:59Z",
type: "inference.completed",
});
See Evidence Export and Observability.
Production API credentials are issued with an institution workspace. Contact sales if you need access.