> 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.

# Create user

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

Reference: https://docs-beta.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.

## 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) — The developer-assigned identifier of the user.
- `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"
}
```