> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs-beta.getzep.com/v4/sdk-reference/graph/content-policy/list-content-policy-events/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs-beta.getzep.com/_mcp/server. # List graph content policy events POST https://api.getzep.com/api/v4/graphs/{graph_uuid}/content-policy/events/list Content-Type: application/json Lists the content policy decisions recorded for a graph, newest first. Each event carries identifiers only. A graph without a content policy returns an empty list. Reference: https://docs-beta.getzep.com/sdk-reference/graph/content-policy/list-content-policy-events ## Authentication - `Authorization` header (required) (prefixed with ` Api-Key `) — Type "Api-Key" followed by a space and the project API key. ## Request ### Path parameters - `graph_uuid` (string, required) — Graph UUID ### Query parameters - `limit` (integer, optional) — Page size - `cursor` (string, optional) — Opaque page cursor ### Body (application/json) This endpoint expects a v4.ContentPolicyEventListRequest. - `filters` (map from string to any, optional) — Exact-match filters. Supported keys: episode_uuid and drop_reason. ## Response ### 200 OK - `items` (list of v4.ContentPolicyEvent, optional) — The events on this page, newest first. - `next_cursor` (string, optional) — The cursor to pass as the next request's cursor to fetch the following page; absent when no further pages remain. - `total_size` (integer, optional) — The total number of events that match the filters. ## Errors ### 400 Bad Request Error Bad Request - `error` (v4.ErrorBody, optional) ### 401 Unauthorized Error Unauthorized - `error` (v4.ErrorBody, optional) ### 403 Forbidden Error Forbidden - `error` (v4.ErrorBody, optional) ### 404 Not Found Error Not Found - `error` (v4.ErrorBody, optional) ## Types ### v4.ContentPolicyEvent - `artifact_kind` (enum, optional) — The kind of artifact the decision applied to. episode marks the episode-level record that carries every matched category. - Allowed values: `entity`, `entity_attribute`, `entity_summary`, `edge`, `thread_summary`, `document_summary`, `observation`, `episode` - `category_keys` (list of string, optional) — The keys of the categories with a matched rule. - `decided_at` (string, optional) — The time of the decision. - `drop_reason` (enum, optional) — Why the artifact was dropped: match, indeterminate, oversize, or dependent. - Allowed values: `match`, `indeterminate`, `oversize`, `dependent` - `episode_uuid` (string, optional) — The episode the decision belongs to. - `id` (string, optional) — The opaque identifier of the event. - `revision` (integer, optional) — The project revision number of the policy the graph bound. - `rule_ids` (list of string, optional) — The identifiers of the rules that matched. ### v4.ErrorBody - `code` (string, optional) - `details` (map from string to any, optional) - `message` (string, optional) - `param` (string, optional) - `request_id` (string, optional) ## Examples **Request** ```json {} ``` **Response** ```json { "items": [ { "artifact_kind": "edge", "category_keys": [ "health" ], "decided_at": "2026-09-22T10:05:00Z", "drop_reason": "match", "episode_uuid": "7a1f3c2e-4b5d-4e6f-8a9b-0c1d2e3f4a5b", "id": "cpe_3f9a1c2b4d5e6f708192a3b4", "revision": 3, "rule_ids": [ "rule_01J8ZJ1P2Q3R4S5T6U7V8W9X0Z" ] } ], "next_cursor": "string", "total_size": 12 } ```