Audit
Query the immutable audit log. The audit endpoint provides flexible filtering over all operation records within your organization.
Query Audit Records
POST
/v1/audit/query
Search and filter operation records with flexible query parameters.
Auth: org_owner, security_admin, compliance_auditor
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| agent_id | string | No | Filter by agent identifier |
| operation_type | string | No | Filter by operation type (e.g. loan.approve) |
| start_time | number | No | Unix millisecond start of the time range |
| end_time | number | No | Unix millisecond end of the time range |
| cursor | string | No | Cursor from a previous response |
| limit | number | No | Results per page, from 1 to 500 (default 100) |
Example Request
bash
curl -X POST https://api.elydora.com/v1/audit/query \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "agent_underwriter",
"operation_type": "loan.approve",
"start_time": 1769904000000,
"end_time": 1772409599000,
"limit": 20
}'Response
Operations are the stored rows; subject and action are JSON strings. cursor is present when more results exist.
json
{
"operations": [
{
"operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
"org_id": "org_acme",
"agent_id": "agent_underwriter",
"seq_no": 42,
"operation_type": "loan.approve",
"issued_at": 1772287200000,
"ttl_ms": 30000,
"nonce": "qL3xV9pZ2mK8wR4t",
"subject": "{\"id\":\"borrower:BRW-2026-0042\",\"type\":\"borrower\"}",
"action": "{\"name\":\"approve\",\"type\":\"decision\"}",
"payload_hash": "<base64url SHA-256 of the canonical payload>",
"prev_chain_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"chain_hash": "<base64url chain hash>",
"agent_pubkey_kid": "agent_underwriter-key-1",
"signature": "<base64url Ed25519 signature>",
"r2_payload_key": "<object storage key>",
"created_at": 1772287201000
}
],
"total_count": 1
}