diff --git a/.fern/replay.lock b/.fern/replay.lock
new file mode 100644
index 0000000..cf542c6
--- /dev/null
+++ b/.fern/replay.lock
@@ -0,0 +1,16 @@
+# DO NOT EDIT MANUALLY - Managed by Fern Replay
+version: "1.0"
+generations:
+ - commit_sha: 36ef7a1c35b8b6f4614d1095dae12b8328832a89
+ tree_hash: ff6c7f6dca046cfe71ff8d197ce03fd3f3cefccd
+ timestamp: 2026-07-28T00:57:16.468Z
+ cli_version: unknown
+ generator_versions: {}
+ - commit_sha: 28b28aa66ad44ddebc2aaf238691fcb5fdf9df2c
+ tree_hash: 11f601230f9973271085d5e91577b5d018461ba7
+ timestamp: 2026-07-28T00:57:16.746Z
+ cli_version: unknown
+ generator_versions:
+ fernapi/fern-python-sdk: 4.25.5
+current_generation: 28b28aa66ad44ddebc2aaf238691fcb5fdf9df2c
+patches: []
diff --git a/.fernignore b/.fernignore
index ba9cbe2..789c94d 100644
--- a/.fernignore
+++ b/.fernignore
@@ -10,4 +10,7 @@ README.md
.github
Makefile
.gitignore
-LICENSE
\ No newline at end of file
+LICENSE
+.fern/replay.lock
+.fern/replay.yml
+.gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..74928d6
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+.fern/replay.lock linguist-generated=true
diff --git a/pyproject.toml b/pyproject.toml
index b87cb91..e88b9e7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,10 +1,10 @@
[project]
name = "zep-cloud"
-version = "3.25.0"
+version = "3.26.0"
[tool.poetry]
name = "zep-cloud"
-version = "3.25.0"
+version = "3.26.0"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index da5c671..99a138b 100644
--- a/reference.md
+++ b/reference.md
@@ -1666,14 +1666,6 @@ Nested objects and arrays are not allowed.
-
-**fact_uuid:** `typing.Optional[str]` — The uuid of the edge to add
-
-
-
-
-
--
-
**graph_id:** `typing.Optional[str]`
diff --git a/src/zep_cloud/__init__.py b/src/zep_cloud/__init__.py
index 5ab7c53..57aa7d2 100644
--- a/src/zep_cloud/__init__.py
+++ b/src/zep_cloud/__init__.py
@@ -8,6 +8,7 @@
AddThreadMessagesRequest,
AddThreadMessagesResponse,
AddTripleResponse,
+ AddedNode,
ApiError,
ApidataBatchAddItemRole,
ApidataBatchAddItemType,
@@ -101,6 +102,7 @@
"AddThreadMessagesRequest",
"AddThreadMessagesResponse",
"AddTripleResponse",
+ "AddedNode",
"ApiError",
"ApidataBatchAddItemRole",
"ApidataBatchAddItemType",
diff --git a/src/zep_cloud/core/client_wrapper.py b/src/zep_cloud/core/client_wrapper.py
index 72f2295..acb66ce 100644
--- a/src/zep_cloud/core/client_wrapper.py
+++ b/src/zep_cloud/core/client_wrapper.py
@@ -22,10 +22,10 @@ def __init__(
def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
- "User-Agent": "zep-cloud/3.25.0",
+ "User-Agent": "zep-cloud/3.26.0",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "zep-cloud",
- "X-Fern-SDK-Version": "3.25.0",
+ "X-Fern-SDK-Version": "3.26.0",
**(self.get_custom_headers() or {}),
}
headers["Authorization"] = f"Api-Key {self.api_key}"
diff --git a/src/zep_cloud/graph/client.py b/src/zep_cloud/graph/client.py
index 2f6a567..ec9543e 100644
--- a/src/zep_cloud/graph/client.py
+++ b/src/zep_cloud/graph/client.py
@@ -430,7 +430,6 @@ def add_fact_triple(
created_at: typing.Optional[str] = OMIT,
edge_attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
expired_at: typing.Optional[str] = OMIT,
- fact_uuid: typing.Optional[str] = OMIT,
graph_id: typing.Optional[str] = OMIT,
invalid_at: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
@@ -469,9 +468,6 @@ def add_fact_triple(
expired_at : typing.Optional[str]
The time (if any) at which the edge expires
- fact_uuid : typing.Optional[str]
- The uuid of the edge to add
-
graph_id : typing.Optional[str]
invalid_at : typing.Optional[str]
@@ -552,7 +548,6 @@ def add_fact_triple(
created_at=created_at,
edge_attributes=edge_attributes,
expired_at=expired_at,
- fact_uuid=fact_uuid,
graph_id=graph_id,
invalid_at=invalid_at,
metadata=metadata,
@@ -1564,7 +1559,6 @@ async def add_fact_triple(
created_at: typing.Optional[str] = OMIT,
edge_attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
expired_at: typing.Optional[str] = OMIT,
- fact_uuid: typing.Optional[str] = OMIT,
graph_id: typing.Optional[str] = OMIT,
invalid_at: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
@@ -1603,9 +1597,6 @@ async def add_fact_triple(
expired_at : typing.Optional[str]
The time (if any) at which the edge expires
- fact_uuid : typing.Optional[str]
- The uuid of the edge to add
-
graph_id : typing.Optional[str]
invalid_at : typing.Optional[str]
@@ -1694,7 +1685,6 @@ async def main() -> None:
created_at=created_at,
edge_attributes=edge_attributes,
expired_at=expired_at,
- fact_uuid=fact_uuid,
graph_id=graph_id,
invalid_at=invalid_at,
metadata=metadata,
diff --git a/src/zep_cloud/graph/raw_client.py b/src/zep_cloud/graph/raw_client.py
index a6e4f8a..9056b30 100644
--- a/src/zep_cloud/graph/raw_client.py
+++ b/src/zep_cloud/graph/raw_client.py
@@ -723,7 +723,6 @@ def add_fact_triple(
created_at: typing.Optional[str] = OMIT,
edge_attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
expired_at: typing.Optional[str] = OMIT,
- fact_uuid: typing.Optional[str] = OMIT,
graph_id: typing.Optional[str] = OMIT,
invalid_at: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
@@ -762,9 +761,6 @@ def add_fact_triple(
expired_at : typing.Optional[str]
The time (if any) at which the edge expires
- fact_uuid : typing.Optional[str]
- The uuid of the edge to add
-
graph_id : typing.Optional[str]
invalid_at : typing.Optional[str]
@@ -836,7 +832,6 @@ def add_fact_triple(
"expired_at": expired_at,
"fact": fact,
"fact_name": fact_name,
- "fact_uuid": fact_uuid,
"graph_id": graph_id,
"invalid_at": invalid_at,
"metadata": metadata,
@@ -2532,7 +2527,6 @@ async def add_fact_triple(
created_at: typing.Optional[str] = OMIT,
edge_attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
expired_at: typing.Optional[str] = OMIT,
- fact_uuid: typing.Optional[str] = OMIT,
graph_id: typing.Optional[str] = OMIT,
invalid_at: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
@@ -2571,9 +2565,6 @@ async def add_fact_triple(
expired_at : typing.Optional[str]
The time (if any) at which the edge expires
- fact_uuid : typing.Optional[str]
- The uuid of the edge to add
-
graph_id : typing.Optional[str]
invalid_at : typing.Optional[str]
@@ -2645,7 +2636,6 @@ async def add_fact_triple(
"expired_at": expired_at,
"fact": fact,
"fact_name": fact_name,
- "fact_uuid": fact_uuid,
"graph_id": graph_id,
"invalid_at": invalid_at,
"metadata": metadata,
diff --git a/src/zep_cloud/types/__init__.py b/src/zep_cloud/types/__init__.py
index 331188b..4b786fd 100644
--- a/src/zep_cloud/types/__init__.py
+++ b/src/zep_cloud/types/__init__.py
@@ -7,6 +7,7 @@
from .add_thread_messages_request import AddThreadMessagesRequest
from .add_thread_messages_response import AddThreadMessagesResponse
from .add_triple_response import AddTripleResponse
+from .added_node import AddedNode
from .api_error import ApiError
from .apidata_batch_add_item_role import ApidataBatchAddItemRole
from .apidata_batch_add_item_type import ApidataBatchAddItemType
@@ -94,6 +95,7 @@
"AddThreadMessagesRequest",
"AddThreadMessagesResponse",
"AddTripleResponse",
+ "AddedNode",
"ApiError",
"ApidataBatchAddItemRole",
"ApidataBatchAddItemType",
diff --git a/src/zep_cloud/types/add_node_item.py b/src/zep_cloud/types/add_node_item.py
index f218035..c63ea10 100644
--- a/src/zep_cloud/types/add_node_item.py
+++ b/src/zep_cloud/types/add_node_item.py
@@ -3,9 +3,7 @@
import typing
import pydantic
-import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from ..core.serialization import FieldMetadata
class AddNodeItem(UniversalBaseModel):
@@ -42,14 +40,6 @@ class AddNodeItem(UniversalBaseModel):
A regional summary of the node.
"""
- uuid_: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="uuid")] = pydantic.Field(default=None)
- """
- Optional caller-supplied node UUID. When it matches an existing node the
- node is upserted; when well-formed but unknown the node is created with
- this UUID; when absent the server assigns one. This is the node's only
- identity/dedup key -- there is no name-based resolution.
- """
-
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/zep_cloud/types/add_nodes_response.py b/src/zep_cloud/types/add_nodes_response.py
index 0f94650..5cc6db7 100644
--- a/src/zep_cloud/types/add_nodes_response.py
+++ b/src/zep_cloud/types/add_nodes_response.py
@@ -4,14 +4,14 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .add_node_item import AddNodeItem
+from .added_node import AddedNode
class AddNodesResponse(UniversalBaseModel):
- nodes: typing.Optional[typing.List[AddNodeItem]] = pydantic.Field(default=None)
+ nodes: typing.Optional[typing.List[AddedNode]] = pydantic.Field(default=None)
"""
- The accepted nodes, each carrying its resolved (server-assigned or
- caller-supplied) UUID, in request order.
+ The accepted nodes, each carrying the UUID Zep assigned to it, in request
+ order.
"""
task_id: typing.Optional[str] = pydantic.Field(default=None)
diff --git a/src/zep_cloud/types/added_node.py b/src/zep_cloud/types/added_node.py
new file mode 100644
index 0000000..096a05e
--- /dev/null
+++ b/src/zep_cloud/types/added_node.py
@@ -0,0 +1,54 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+import typing_extensions
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ..core.serialization import FieldMetadata
+
+
+class AddedNode(UniversalBaseModel):
+ attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
+ """
+ Additional attributes of the node.
+ """
+
+ created_at: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The node creation time.
+ """
+
+ label: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The node's entity type.
+ """
+
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
+ """
+ Metadata attached to the node's shadow episode.
+ """
+
+ name: str = pydantic.Field()
+ """
+ The name of the node.
+ """
+
+ summary: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ A regional summary of the node.
+ """
+
+ uuid_: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="uuid")] = pydantic.Field(default=None)
+ """
+ The node UUID, assigned by Zep.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow