> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List audit-log entries scoped to the caller's tenant.

> This is the self-service sibling of /v1/admin/audit-logs. The tenant_id filter is pinned to the authenticated tenant at the SQL layer — a client cannot widen…

This is the self-service sibling of `/v1/admin/audit-logs`. The
tenant\_id filter is pinned to the authenticated tenant at the SQL
layer — a client cannot widen their view by passing a different
`tenant_id` query param; it simply isn't accepted. Useful when an
agent needs to answer 'what did I do in the last hour' without
reaching for platform admin credentials.

### Path parameters

<ParamField path="tenant_id" type="string" required>
  Tenant id (must match the authenticated tenant)
</ParamField>

### Query parameters

<ParamField query="page" type="integer (int32)">
  Page number (1-indexed)
</ParamField>

<ParamField query="page_size" type="integer (int32)">
  Items per page (max 100)
</ParamField>

<ParamField query="event_type" type="string">
  Filter by event type
</ParamField>

<ParamField query="resource_type" type="string">
  Filter by resource type
</ParamField>

<ParamField query="actor_email" type="string">
  Filter by actor email
</ParamField>

### Response

`object`

<ResponseField name="items" type="object[]" required>
  The items on this page

  <Expandable title="items">
    <ResponseField name="id" type="string (uuid)" required />

    <ResponseField name="createdAt" type="string (date-time)" required />

    <ResponseField name="requestId" type="string (uuid)" />

    <ResponseField name="tenantId" type="string" />

    <ResponseField name="actorEmail" type="string" />

    <ResponseField name="ipAddress" type="string" />

    <ResponseField name="userAgent" type="string" />

    <ResponseField name="eventType" type="string" required />

    <ResponseField name="event" type="object" required />
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object" required>
  Pagination metadata

  <Expandable title="pagination">
    <ResponseField name="page" type="integer" required>
      Current page number
    </ResponseField>

    <ResponseField name="pageSize" type="integer" required>
      Number of items per page
    </ResponseField>

    <ResponseField name="totalItems" type="integer">
      Total number of items across all pages
    </ResponseField>

    <ResponseField name="totalPages" type="integer">
      Total number of pages
    </ResponseField>

    <ResponseField name="hasNext" type="boolean" required>
      Whether there is a next page
    </ResponseField>

    <ResponseField name="hasPrevious" type="boolean" required>
      Whether there is a previous page
    </ResponseField>
  </Expandable>
</ResponseField>

### Status codes

| Code  | Meaning                    |
| ----- | -------------------------- |
| `200` | Audit logs for this tenant |
| `401` | Unauthorized               |
| `424` | Database not configured    |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.sync.stateset.com/v1/tenants/{tenant_id}/audit-logs' \
    --header 'x-stateset-api-key: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "items": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "createdAt": "2026-08-31T14:22:05Z",
        "requestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "tenantId": "acme-outdoors",
        "actorEmail": "string",
        "ipAddress": "548 Market St",
        "userAgent": "Mozilla/5.0 (Macintosh)",
        "eventType": "string",
        "event": {}
      }
    ],
    "pagination": {
      "page": 1,
      "pageSize": 20,
      "totalItems": 1,
      "totalPages": 1,
      "hasNext": true,
      "hasPrevious": true
    }
  }
  ```
</ResponseExample>
