Expert AI Labs
Back to API overview

Audit Log

Live

Immutable record of every state-changing action in the platform. Stored in `platform_events`. Includes action, source, correlation_id, and a JSON payload describing what changed. Retained 7 years.

GET/api/v1/audit-logreadLive

List audit entries

Cursor-paginated. Filter by action (e.g., lead.updated), source (api | cron | n8n | worker | system), and created_at range (?start_at=ISO8601&end_at=ISO8601). Default limit 50, max 200.

Example response
{
  "data": [
    {
      "id": "a4b1c8d2-7e30-4f1a-9c83-21e5d4a07b14",
      "organization_id": "8c2f0a14-0c8a-4a3a-9a4d-3e0f1d6c2a91",
      "action": "lead.updated",
      "source": "api",
      "correlation_id": "corr_z3p7w2",
      "payload": {
        "lead_id": "9f1c8a32-4d65-4e2b-8a91-3c0e7d4b2f18",
        "diff": {
          "pipeline_stage": { "from": "qualified", "to": "won" },
          "lead_score": { "from": 87, "to": 92 }
        },
        "key_id": "k7e2c8a1-4d65-4e2b-8a91-3c0e7d4b2f18"
      },
      "created_at": "2026-04-27T18:55:42.001Z"
    }
  ],
  "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNC0yN1QxODo1NTo0Mi4wMDFaIiwiaWQiOiJhNGIxYzhkMi03ZTMwLTRmMWEtOWM4My0yMWU1ZDRhMDdiMTQifQ"
}
GET/api/v1/audit-log/{id}readLive

Fetch a single entry

Tenant-scoped. Returns the full audit record including the payload diff.

Example response
{
  "id": "a4b1c8d2-7e30-4f1a-9c83-21e5d4a07b14",
  "organization_id": "8c2f0a14-0c8a-4a3a-9a4d-3e0f1d6c2a91",
  "action": "lead.updated",
  "source": "api",
  "correlation_id": "corr_z3p7w2",
  "payload": {
    "lead_id": "9f1c8a32-4d65-4e2b-8a91-3c0e7d4b2f18",
    "diff": {
      "pipeline_stage": { "from": "qualified", "to": "won" },
      "lead_score": { "from": 87, "to": 92 }
    },
    "key_id": "k7e2c8a1-4d65-4e2b-8a91-3c0e7d4b2f18"
  },
  "created_at": "2026-04-27T18:55:42.001Z"
}
GET/api/v1/audit-log/export.csvreadRoadmap

Export to CSV

Stream the audit log as CSV. Same filters as the list endpoint.