> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs-beta.getzep.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs-beta.getzep.com/_mcp/server.

# List project content policy revisions

GET https://api.getzep.com/api/v4/project/content-policy/revisions

Lists every revision of the project content policy, newest first, including revision 0.

Reference: https://docs-beta.getzep.com/sdk-reference/project/list-content-policy-revisions

## Authentication

- `Authorization` header (required) (prefixed with ` Api-Key  `) — Type "Api-Key" followed by a space and the project API key.

## Request

### Query parameters

- `limit` (integer, optional) — Page size
- `cursor` (string, optional) — Opaque page cursor

## Response

### 200

OK

- `items` (list of v4.ContentPolicy, optional) — The revisions 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 revisions, including revision 0.

## 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)

## Types

### v4.ContentPolicy

- `categories` (list of v4.ContentPolicyCategory, optional) — The categories of the policy.
- `created_at` (string, optional) — When this policy set was created.
- `revision` (integer, optional) — The project revision number. 0 is the empty policy of a new project.
- `rules` (list of v4.ContentPolicyRule, optional) — The rules of the policy.
- `uuid` (string, optional) — The identifier of this policy set. A project revision and every graph that binds it without additions share one uuid.

### v4.ErrorBody

- `code` (string, optional)
- `details` (map from string to any, optional)
- `message` (string, optional)
- `param` (string, optional)
- `request_id` (string, optional)

### v4.ContentPolicyCategory

- `description` (string, optional) — What the category covers.
- `id` (string, optional) — The server-assigned identifier of the category. Stable across revisions while the key is unchanged.
- `key` (string, optional) — The stable key of the category.

### v4.ContentPolicyRule

- `category_key` (string, optional) — The key of the category this rule belongs to.
- `description` (string, optional) — The content this rule prohibits.
- `id` (string, optional) — The server-assigned identifier of the rule. Stable across revisions while the category key and description are unchanged.
- `permitted_examples` (list of string, optional) — Examples of similar content the rule permits.
- `prohibited_examples` (list of string, optional) — Examples of content the rule prohibits.

## Examples

**Response**

```json
{
  "items": [
    {
      "categories": [
        {
          "description": "Facts about a person's medical conditions or treatment.",
          "id": "cat_01J8ZJ1P2Q3R4S5T6U7V8W9X0Y",
          "key": "health"
        }
      ],
      "created_at": "2026-09-22T05:09:00Z",
      "revision": 3,
      "rules": [
        {
          "category_key": "health",
          "description": "Statements that a named person has a diagnosed medical condition.",
          "id": "rule_01J8ZJ1P2Q3R4S5T6U7V8W9X0Z",
          "permitted_examples": [
            "Jane works at a diabetes research lab."
          ],
          "prohibited_examples": [
            "Jane was diagnosed with type 2 diabetes last year."
          ]
        }
      ],
      "uuid": "7a1f3c2e-4b5d-4e6f-8a9b-0c1d2e3f4a5b"
    }
  ],
  "next_cursor": "string",
  "total_size": 4
}
```