> This page is for version v4 (default).
> For other versions, use one of these documentation indexes:
> - v4 (default): https://help.getzep.com/v4/llms.txt
> - v3: https://help.getzep.com/v3/llms.txt
> - v2: https://help.getzep.com/v2/llms.txt

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

# Create user

POST https://api.getzep.com/api/v4/users
Content-Type: application/json

Reference: https://help.getzep.com/sdk-reference/user/create

## Authentication

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

## Request

### Body (application/json)

This endpoint expects a v4.CreateUserRequest.

- `content_policy` (v4.GraphContentPolicyRequest, optional) — Content policy additions for the user's graph. The graph binds the current project content policy plus these additions, and the binding does not change after creation.
- `disable_default_ontology` (boolean, optional) — When true, disables the default ontology for the user's graph.
- `email` (string, optional) — The email address of the user.
- `first_name` (string, optional) — The user's first name.
- `last_name` (string, optional) — The user's last name.
- `metadata` (map from string to any, optional) — Metadata to store on the user.
- `time_zone` (string, optional) — The user's IANA time zone.
- `user_id` (string, optional) — An optional external identity identifier, such as an identity-provider subject claim. Zep uses it to match an identity-provider sign-in to this user. It is not an address; use uuid to address the user in v4. It is unique within the project, can contain at most 500 characters, and cannot be changed after creation.

## Response

### 201

Created

- `created_at` (string, optional) — The time the user was created.
- `disable_default_ontology` (boolean, optional) — When true, disables the use of the default fallback ontology for the user's graph.
- `email` (string, optional) — The email address of the user.
- `first_name` (string, optional) — The first name of the user.
- `graph_uuid` (string, optional) — The unique identifier of the user's graph, populated when the user is created.
- `last_name` (string, optional) — The last name of the user.
- `metadata` (map from string to any, optional) — Arbitrary key-value metadata attached to the user.
- `time_zone` (string, optional) — The user's IANA time zone, used to localize dates in generated context.
- `user_id` (string, optional) — An optional external identity identifier, such as an identity-provider subject claim. Zep uses it to match an identity-provider sign-in to this user. It is not an address; use uuid to address the user in v4. It is unique within the project, can contain at most 500 characters, and cannot be changed after creation. v4 sets it on create; v3 users keep their existing value.
- `uuid` (string, optional) — The unique identifier of the user.

## Errors

### 400 Bad Request Error

Bad Request

- `error` (v4.ErrorBody, optional)

### 401 Unauthorized Error

Unauthorized

- `error` (v4.ErrorBody, optional)

### 404 Not Found Error

Not Found

- `error` (v4.ErrorBody, optional)

### 409 Conflict Error

Conflict

- `error` (v4.ErrorBody, optional)

## Types

### v4.GraphContentPolicyRequest

- `categories` (list of v4.ContentPolicyCategoryRequest, optional) — Categories to add for this graph. A key that the project policy already has is ignored.
- `project_revision` (integer, optional) — When set, the create fails with content_policy_revision_stale unless this is the current project revision.
- `rules` (list of v4.ContentPolicyRuleRequest, optional) — Rules to add for this graph. A rule that the project policy already has, with the same category key and description, is ignored.

### v4.ErrorBody

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

### v4.ContentPolicyCategoryRequest

- `description` (string, optional) — What the category covers, in plain language. Maximum 500 characters.
- `key` (string, optional) — A stable key for the category, unique within the policy. Lowercase letters, digits, and underscores; 2 to 64 characters.

### v4.ContentPolicyRuleRequest

- `category_key` (string, optional) — The key of the category this rule belongs to. The category must be in the same policy.
- `description` (string, optional) — The content this rule prohibits, in plain language. Maximum 1000 characters.
- `permitted_examples` (list of string, optional) — Examples of similar content the rule permits. 0 to 8 items, each at most 500 characters.
- `prohibited_examples` (list of string, optional) — Examples of content the rule prohibits. 1 to 8 items, each at most 500 characters.

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "created_at": "string",
  "disable_default_ontology": true,
  "email": "string",
  "first_name": "string",
  "graph_uuid": "string",
  "last_name": "string",
  "metadata": {},
  "time_zone": "string",
  "user_id": "string",
  "uuid": "string"
}
```