For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
PlaygroundDiscordStatusDashboardSign Up >
DocumentationSDK ReferenceGraphiti
DocumentationSDK ReferenceGraphiti
  • Getting Started
    • Coding with LLMs
    • Key Concepts
    • Quickstart
    • Building an Agent Walkthrough
    • Memory
    • Projects
    • Users
    • Sessions
    • Groups
  • Working with the Graph
    • Understanding the Graph
    • Utilizing Facts and Summaries
    • Customizing Graph Structure
    • Adding Data to the Graph
    • Reading Data from the Graph
    • Searching the Graph
    • Deleting Data from the Graph
    • Debugging
  • Cookbook
    • Check Data Ingestion Status
    • Customize Your Memory Context String
    • Add User Specific Business Data to User Graphs
    • Share Memory Across Users Using Group Graphs
    • Get Most Relevant Facts for an Arbitrary Query
    • Find Facts Relevant to a Specific Node
  • Best Practices
    • Performance Best Practices
    • Adding JSON Best Practices
  • Ecosystem
    • LangGraph
    • Autogen
  • Migrations
    • February 2026 Deprecation Wave
    • Migrate from Mem0
  • FAQ
    • Frequently Asked Questions
  • Legal
    • Privacy Policy
    • Terms of Service
    • Website Terms of Use
LogoLogo
PlaygroundDiscordStatusDashboardSign Up >
Cookbook

Check Data Ingestion Status

Was this page helpful?
Previous

Customize Your Context String

Next
Built with

Data added to Zep is processed asynchronously and can take a few seconds to a few minutes to finish processing. In this recipe, we show how to check whether a given data upload request (also known as an Episode) is finished processing by polling Zep with the graph.episode.get method.

First, let’s create a user:

1import os
2import uuid
3import time
4from dotenv import find_dotenv, load_dotenv
5from zep_cloud.client import Zep
6
7load_dotenv(dotenv_path=find_dotenv())
8
9client = Zep(api_key=os.environ.get("ZEP_API_KEY"))
10uuid_value = uuid.uuid4().hex[:4]
11user_id = "-" + uuid_value
12client.user.add(
13 user_id=user_id,
14 first_name = "John",
15 last_name = "Doe",
16 email="[email protected]"
17)

Now, let’s add some data and immediately try to search for that data; because data added to Zep is processed asynchronously and can take a few seconds to a few minutes to finish processing, our search results do not have the data we just added:

1episode = client.graph.add(
2 user_id=user_id,
3 type="text",
4 data="The user is an avid fan of Eric Clapton"
5)
6
7search_results = client.graph.search(
8 user_id=user_id,
9 query="Eric Clapton",
10 scope="nodes",
11 limit=1,
12 reranker="cross_encoder",
13)
14
15print(search_results.nodes)
None

We can check the status of the episode to see when it has finished processing, using the episode returned from the graph.add method and the graph.episode.get method:

1while True:
2 episode = client.graph.episode.get(
3 uuid_=episode.uuid_,
4 )
5 if episode.processed:
6 print("Episode processed successfully")
7 break
8 print("Waiting for episode to process...")
9 time.sleep(10)
Waiting for episode to process...
Waiting for episode to process...
Waiting for episode to process...
Waiting for episode to process...
Waiting for episode to process...
Episode processed successfully

Now that the episode has finished processing, we can search for the data we just added, and this time we get a result:

1search_results = client.graph.search(
2 user_id=user_id,
3 query="Eric Clapton",
4 scope="nodes",
5 limit=1,
6 reranker="cross_encoder",
7)
8
9print(search_results.nodes)
[EntityNode(attributes={'category': 'Music', 'labels': ['Entity', 'Preference']}, created_at='2025-04-05T00:17:59.66565Z', labels=['Entity', 'Preference'], name='Eric Clapton', summary='The user is an avid fan of Eric Clapton.', uuid_='98808054-38ad-4cba-ba07-acd5f7a12bc0', graph_id='6961b53f-df05-48bb-9b8d-b2702dd72045')]