Synpath
Accounts & Keys

Read the audit log

Every grant and key change, with the actor, the request, and the row before and after.

GET/auditself-hosted · access token · manage_members

Self-hosted. Served by synpath serve on your own machine or host, which must be running; the engine and its order types live there. Nothing on this page runs on Synpath's servers.

Append-only, enforced by the database: no route writes it, and triggers on the table refuse update and delete.

Query parameters

NameTypeDescription
since_idintegerRows after this id.
limitinteger
default 100
tablestringgrants or keys.

Response

An array of audit rows.

import os
import httpx

TOKEN = os.environ["SYNPATH_ACCESS_TOKEN"]

r = httpx.get("http://127.0.0.1:8000/trading/audit", headers={"Authorization": f"Bearer {TOKEN}"})
r.raise_for_status()
print(r.json())
200
[
  {
    "id": 42,
    "ts": 1789655008000,
    "actor": "u_owner",
    "action": "insert",
    "table_name": "grants",
    "row_id": "g_19",
    "request": "POST /grants",
    "before": null,
    "after": {
      "user_id": "u_alice",
      "account": "kalshi:desk-a",
      "permission": "trade"
    }
  }
]