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

# Add hyperedge

POST https://api.getzep.com/api/v4/graphs/{graph_uuid}/hyperedges
Content-Type: application/json

Creates one hyperedge: a fact that relates more than two nodes, written
onto one member edge per node pair. The member edges must span at least
three distinct nodes, since two nodes are a pair of edges rather than a
hyperedge; a single pair uses graph.edge.add. Zep assigns the hyperedge
identifier and every member edge identifier at accept time, and the
members become readable when the task completes.

Reference: https://docs-beta.getzep.com/sdk-reference/graph/hyperedge/add

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

### Body (application/json)

This endpoint expects a v4.AddHyperedgeRequest.

- `edges` (list of v4.HyperedgeInput, required) — The member edges to create. Each pair becomes one edge carrying the shared fact.
- `fact` (string, required) — The natural-language fact, written onto every member edge.
- `attributes` (map from string to any, optional) — Additional attributes to store on every member edge.
- `expired_at` (string, optional) — The time at which the fact was superseded or invalidated.
- `invalid_at` (string, optional) — The time at which the fact stopped being true.
- `metadata` (map from string to any, optional) — Metadata attached to the episode created for this hyperedge.
- `valid_at` (string, optional) — The time at which the fact became true.

## Response

### 202

Accepted

- `hyperedge` (v4.AddedHyperedge, optional) — An accept-time acknowledgement of the hyperedge you submitted.
- `task` (v4.Task, optional) — The asynchronous task that tracks writing the member edges.

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

- `name` (string, required) — The name of the member edge, in upper snake case, for example FOUNDED.
- `source_node` (v4.EdgeNodeRef, required) — The source node of this member, referenced by uuid or created or matched by name.
- `target_node` (v4.EdgeNodeRef, required) — The target node of this member, referenced by uuid or created or matched by name.

### v4.AddedHyperedge

- `attributes` (map from string to any, optional) — The attributes you supplied for every member edge.
- `edges` (list of v4.AddedHyperedgeEdge, optional) — The member edges, each with its assigned identifier.
- `expired_at` (string, optional) — The time the fact was superseded or removed.
- `fact` (string, optional) — The natural-language fact you submitted.
- `invalid_at` (string, optional) — The time at which the fact stopped being true.
- `metadata` (map from string to any, optional) — The episode metadata you supplied.
- `uuid` (string, optional) — The unique identifier assigned to the hyperedge.
- `valid_at` (string, optional) — The time from which the fact is considered true.

### v4.Task

- `completed_at` (string, optional) — The time the task reached a terminal status; absent while it is still in progress.
- `created_at` (string, optional) — The time the task was created.
- `error` (v4.ErrorBody, optional) — The error that caused the task to fail; also present on a partial task when the worker can name a single cause.
- `progress` (v4.TaskProgress, optional) — The last processing stage a worker reported for this task. It is not cleared when the task finishes, so a completed task may still show its final stage.
- `result` (map from string to any, optional) — Operation-specific output populated once the task reaches succeeded or partial, such as identifiers the operation could not return synchronously.
- `started_at` (string, optional) — The time a worker began processing the task; absent until then.
- `status` (string, optional) — The task's current state: pending, processing, succeeded, partial, or failed.
- `type` (string, optional) — The kind of asynchronous operation the task represents.
- `updated_at` (string, optional) — The time the task was last updated.
- `uuid` (string, optional) — The unique identifier of the task, used to poll its status.

### v4.ErrorBody

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

### v4.EdgeNodeRef

- `attributes` (map from string to any, optional) — Additional attributes of the node, as defined by its entity type.
- `labels` (list of string, optional) — The entity type labels to assign to the node.
- `name` (string, optional) — The name of the node to create, or to match when deduplication is enabled.
- `summary` (string, optional) — A summary of the node.
- `uuid` (string, optional) — The unique identifier of an existing node to attach the edge to.

### v4.AddedHyperedgeEdge

- `name` (string, optional) — The name of the member edge you supplied.
- `source_node` (v4.EdgeNodeRef, optional) — The source node fields you supplied for this member.
- `target_node` (v4.EdgeNodeRef, optional) — The target node fields you supplied for this member.
- `uuid` (string, optional) — The unique identifier assigned to this member edge.

### v4.TaskProgress

- `stage` (string, optional) — The most recent processing stage reported by the worker handling the task.

## Examples

**Request**

```json
{
  "edges": [
    {
      "name": "string",
      "source_node": {},
      "target_node": {}
    }
  ],
  "fact": "string"
}
```

**Response**

```json
{
  "hyperedge": {
    "attributes": {},
    "edges": [
      {
        "name": "string",
        "source_node": {
          "attributes": {},
          "labels": [
            "Organization"
          ],
          "name": "Acme Corp",
          "summary": "A software company",
          "uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
        },
        "target_node": {
          "attributes": {},
          "labels": [
            "Organization"
          ],
          "name": "Acme Corp",
          "summary": "A software company",
          "uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
        },
        "uuid": "string"
      }
    ],
    "expired_at": "string",
    "fact": "string",
    "invalid_at": "string",
    "metadata": {},
    "uuid": "string",
    "valid_at": "string"
  },
  "task": {
    "completed_at": "string",
    "created_at": "string",
    "error": {
      "code": "string",
      "details": {},
      "message": "string",
      "param": "string",
      "request_id": "string"
    },
    "progress": {
      "stage": "string"
    },
    "result": {},
    "started_at": "string",
    "status": "string",
    "type": "string",
    "updated_at": "string",
    "uuid": "string"
  }
}
```