Zep
App · AI Search & Memory · 15 actions
Give your workflows a memory. Zep remembers the people you deal with: what they said in past conversations and what your own systems know about them. Ask it a question, or pull back everything that matters right now as one block of text to hand straight to an AI step.
Actions
| Action | What it does |
|---|---|
| Add a person | Give Zep somebody to remember things about. |
| Add messages to a conversation | Record what was said. |
| Delete a conversation | Remove a conversation and its messages. |
| Delete a person | Remove a person and everything Zep remembers about them, including their conversations. |
| Get a person | Read back the name, email address and time zone held against one person. |
| Get a person's summary | Zep's own written description of somebody, drawn from every conversation and record it has for them. |
| Get memory for a conversation | Everything Zep thinks matters right now in this conversation, written up as one block of text to hand to an AI step. |
| List a person's conversations | Every conversation Zep holds for one person. |
| List messages in a conversation | Read a conversation back, message by message. |
| List people | Everyone this Zep project holds memory for, with an optional search across their ids, names and email addresses. |
| List what Zep knows about a person | The whole dossier: one entry per thing Zep believes about somebody, with when it became true and, where it no longer is, when it stopped being true. |
| Remember something about a person | Add something that was not said in a conversation: an order, a support ticket, a CRM record, a page of notes. |
| Search a person's memory | Ask a question and get back what Zep knows that bears on it, across every conversation and record it holds for that person. |
| Start a conversation | Open a conversation to add messages to. |
| Update a person | Change the name, email address or time zone held against one person. |
Add a person
Give Zep somebody to remember things about. Everything else in this integration hangs off a person, so this is the first step for anyone Zep has not met.
Inputs
- Person ID
person_idtextRequired - How you will refer to this person from now on. Use whatever your own system already calls them, such as their email address or a customer number, so you never have to look it up.
- First name
first_nametext - Their first name.
- Last name
last_nametext - Their last name.
- Email address
emailtext - Their email address.
- Time zone
time_zonetext - Where they are. Zep uses this to work out what dates like 'last Tuesday' mean when it reads something about them.One of:
Pacific/Honolulu(Honolulu),America/Anchorage(Anchorage),America/Los_Angeles(Los Angeles (US Pacific)),America/Denver(Denver (US Mountain)),America/Phoenix(Phoenix (no daylight saving)),America/Chicago(Chicago (US Central)),America/Mexico_City(Mexico City),America/New_York(New York (US Eastern)),America/Toronto(Toronto),America/Bogota(Bogota), and 50 more.
Outputs
personobject- Everything Zep holds against this person.
person_idtext- The id this person is known by.
Example output
{
"person": {
"created_at": "2026-09-18T09:14:22Z",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"user_id": "ada@example.com"
},
"person_id": "ada@example.com"
}Add messages to a conversation
Record what was said. Zep files the messages straight away and works out what they mean a few seconds later, so memory read immediately afterwards may not have caught up yet.
Inputs
- Conversation
conversation_idtextRequired - Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
- Messages
messageslistRequired - What was said, in the order it was said. Each entry looks like {"role": "user", "content": "I moved to Austin last month."}. Roles are user, assistant, system, tool or function, and anything without one counts as the person speaking.
- Also bring back memory
return_contexttrue/false - Return the memory for this conversation as it stands after the last message, so a reply can be written without a second step.Default:
false.
Outputs
contexttext- The memory for this conversation, when 'Also bring back memory' is ticked. Empty otherwise.
conversation_idtext- The conversation they were added to.
message_countnumber- How many messages were added.
message_idslist- Zep's own id for each message.
Example output
{
"context": "",
"conversation_id": "ticket-48213",
"message_count": 2,
"message_ids": [
"9f2a1d3e-6c1b-4a2f-9e11-0d4f8b7c2a55",
"1b7c4e90-2f3a-4c6d-8e12-5a9b3d7f1c02"
]
}Delete a conversation
Remove a conversation and its messages. What Zep learned from them stays in the person's memory; 'Delete a person' removes that too.
Inputs
- Conversation
conversation_idtextRequired - Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
Outputs
conversation_idtext- The conversation that was deleted.
deletedtrue/false- Always true when the step succeeds.
messagetext- Zep's confirmation.
Example output
{
"conversation_id": "ticket-48213",
"deleted": true,
"message": "Thread deleted"
}Delete a person
Remove a person and everything Zep remembers about them, including their conversations. This cannot be undone.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
Outputs
deletedtrue/false- Always true when the step succeeds.
messagetext- Zep's confirmation.
person_idtext- The person who was deleted.
Example output
{
"deleted": true,
"message": "User deleted",
"person_id": "ada@example.com"
}Get a person
Read back the name, email address and time zone held against one person. For what Zep has learned about them, use 'Get a person's summary' instead.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
Outputs
personobject- Everything Zep holds against this person.
person_idtext- The id this person is known by.
Example output
{
"person": {
"created_at": "2026-09-18T09:14:22Z",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"time_zone": "Europe/London",
"user_id": "ada@example.com"
},
"person_id": "ada@example.com"
}Get a person's summary
Zep's own written description of somebody, drawn from every conversation and record it has for them. Hand it to an AI step that needs to know who it is dealing with. Zep rewrites it as memory changes, so it can lag a few seconds behind something just added.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
Outputs
attributesobject- Details Zep has pulled out about them.
nametext- What Zep calls this person in memory.
person_idtext- The person this describes.
summarytext- The description, or empty when Zep has not learned enough about them to write one yet.
Example output
{
"attributes": {
"plan": "Scale"
},
"name": "Ada Lovelace",
"person_id": "ada@example.com",
"summary": "Ada is an enterprise customer on the Scale plan who switched from monthly to annual billing in June and cares most about audit logging."
}Get memory for a conversation
Everything Zep thinks matters right now in this conversation, written up as one block of text to hand to an AI step. It covers the whole person, not just this conversation.
Inputs
- Conversation
conversation_idtextRequired - Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
Outputs
contexttext- The memory, ready to hand to a model.
conversation_idtext- The conversation this is for.
has_memorytrue/false- False when Zep has nothing to say yet, which is normal for a conversation that has just started.
Example output
{
"context": "FACTS:\n- Ada is on the Scale plan.\n- Ada asked about audit logging on 12 September 2026.",
"conversation_id": "ticket-48213",
"has_memory": true
}List a person's conversations
Every conversation Zep holds for one person.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
Outputs
conversation_countnumber- How many there are.
conversationslist- The conversations held with them.
person_idtext- Whose conversations these are.
Example output
{
"conversation_count": 1,
"conversations": [
{
"created_at": "2026-09-18T09:20:03Z",
"thread_id": "ticket-48213",
"user_id": "ada@example.com"
}
],
"person_id": "ada@example.com"
}List messages in a conversation
Read a conversation back, message by message. For what Zep has made of it, use 'Get memory for a conversation'.
Inputs
- Conversation
conversation_idtextRequired - Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
- Number of messages
message_countnumber - How many of the most recent messages to bring back.From 1 to 500. Default:
50.
Outputs
conversation_idtext- The conversation these came from.
message_countnumber- How many messages came back.
messageslist- The messages, oldest first.
person_idtext- Who the conversation is with.
total_countnumber- How many the conversation holds in total.
Example output
{
"conversation_id": "ticket-48213",
"message_count": 1,
"messages": [
{
"content": "I moved to Austin last month.",
"created_at": "2026-09-18T09:21:40Z",
"role": "user",
"uuid": "9f2a1d3e-6c1b-4a2f-9e11-0d4f8b7c2a55"
}
],
"person_id": "ada@example.com",
"total_count": 1
}List people
Everyone this Zep project holds memory for, with an optional search across their ids, names and email addresses.
Inputs
- Search
searchtext - Only return people whose id, name or email address matches. Leave empty for everyone.
- Order
ordertext - How to sort the people that come back.One of:
newest(Newest first),oldest(Oldest first),id(By ID, A to Z),email(By email address, A to Z). Default:newest. - Number of people
page_sizenumber - How many people to return per page.From 1 to 200. Default:
50. - Page
pagenumber - Which page to return. Raise it by one to walk through a project with more people than fit on a page.From 1 to 10000. Default:
1.
Outputs
peoplelist- The people on this page.
person_countnumber- How many people are on this page.
total_countnumber- How many people the project has in total.
Example output
{
"people": [
{
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"user_id": "ada@example.com"
}
],
"person_count": 1,
"total_count": 1
}List what Zep knows about a person
The whole dossier: one entry per thing Zep believes about somebody, with when it became true and, where it no longer is, when it stopped being true. Use 'Search a person's memory' when you have a question rather than a report.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
- Number of facts
fact_countnumber - How many facts to bring back.From 1 to 500. Default:
50. - Order
ordertext - Sort by when Zep learned the fact, or by when the fact itself became true.One of:
newest(Newest first),oldest(Oldest first),became_true_newest(By when it became true, most recent first),became_true_oldest(By when it became true, earliest first). Default:newest.
Outputs
fact_countnumber- How many facts came back.
factslist- Everything Zep believes about them.
person_idtext- Who these facts are about.
Example output
{
"fact_count": 1,
"facts": [
{
"created_at": "2026-09-18T09:21:55Z",
"fact": "Ada Lovelace lives in Austin.",
"name": "LIVES_IN",
"uuid": "c41d6b8a-93f2-4e17-9a05-2b8e1f7c4d63",
"valid_at": "2026-08-01T00:00:00Z"
}
],
"person_id": "ada@example.com"
}Remember something about a person
Add something that was not said in a conversation: an order, a support ticket, a CRM record, a page of notes. Zep reads it, works out what it means and files it with everything else it knows about them.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
- What to remember
datatextRequired - The text or the record itself, up to 10,000 characters. Hand it a record from an earlier step and Zep reads the fields; hand it writing and Zep reads the writing.
- What kind of thing this is
data_typetext - How Zep should read it. A record handed over by an earlier step is always read as a record, whatever is chosen here.One of:
text(Written text, such as notes or a document),json(A record with fields, such as an order or a CRM row),message(Something somebody said). Default:text. - Where it came from
source_descriptiontext - A few words naming the source, such as 'Zendesk ticket' or 'Stripe invoice'. Zep keeps it with the record so you can tell later where a fact came from.
- When it happened
happened_atdate and time - When this actually took place. Leave it empty for now, and set it when loading something from the past so Zep puts it in the right order.
Outputs
person_idtext- Whose memory this was added to.
recordobject- The stored record as Zep filed it.
record_idtext- Zep's id for the record that was stored.
Example output
{
"person_id": "ada@example.com",
"record": {
"content": "{\"plan\": \"Scale\", \"renewed_on\": \"2026-06-01\"}",
"created_at": "2026-09-18T09:25:11Z",
"source": "json",
"source_description": "Billing export",
"uuid": "5e8b2c71-0a34-4f6d-bb19-73c2d5e4a908"
},
"record_id": "5e8b2c71-0a34-4f6d-bb19-73c2d5e4a908"
}Search a person's memory
Ask a question and get back what Zep knows that bears on it, across every conversation and record it holds for that person.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
- What to look for
querytextRequired - Describe it in plain language, such as 'what has this customer complained about before'.
- What to bring back
scopetext - The first choice collects across everything and writes it up as one block of text for an AI step, and hands back the results behind it as well. The rest return one kind of result and nothing else.One of:
auto(Everything, written up ready to hand to an AI step),edges(Facts),nodes(People, places and things),episodes(The original messages and records),thread_summaries(Conversation recaps). Default:auto. - Length of the written up memory
summary_charactersnumber - How long that block of text may be, in characters. Only used by the first choice above.From 100 to 50000. Default:
2500. - Number of results
limitnumber - How many results the list choices return. Not used by the written up memory.From 1 to 50. Default:
10.
Outputs
contexttext- The written up memory, ready to hand to a model. Empty unless the first choice was used.
conversation_recapslist- Matching conversation recaps.
entitieslist- Matching people, places and things.
factslist- Matching facts.
observationslist- Patterns Zep has noticed over time, on the plans that include them.
person_idtext- Whose memory was searched.
recordslist- Matching original messages and records.
result_countnumber- How many results came back in total.
Example output
{
"context": "FACTS:\n- Ada raised a billing complaint on 3 August 2026.\n- Ada's invoice was corrected the same week.",
"conversation_recaps": [],
"entities": [],
"facts": [],
"observations": [],
"person_id": "ada@example.com",
"records": [],
"result_count": 0
}Start a conversation
Open a conversation to add messages to. Everything said in it goes into the person's memory, so what is learned in one conversation is known in the next.
Inputs
- Conversation ID
conversation_idtextRequired - How you will refer to this conversation later. Use whatever the conversation already has a number for, such as a support ticket or a chat session.
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
Outputs
conversationobject- Everything Zep holds about the conversation.
conversation_idtext- The id this conversation is known by.
person_idtext- Who the conversation is with.
Example output
{
"conversation": {
"created_at": "2026-09-18T09:20:03Z",
"thread_id": "ticket-48213",
"user_id": "ada@example.com"
},
"conversation_id": "ticket-48213",
"person_id": "ada@example.com"
}Update a person
Change the name, email address or time zone held against one person. Anything left empty is left as it was.
Inputs
- Person
person_idtextRequired - Who this is about. Pick someone Zep already knows, or type the id your own system uses for them, such as their email address.
- First name
first_nametext - Their first name.
- Last name
last_nametext - Their last name.
- Email address
emailtext - Their email address.
- Time zone
time_zonetext - Where they are. Zep uses this to work out what dates like 'last Tuesday' mean when it reads something about them.One of:
Pacific/Honolulu(Honolulu),America/Anchorage(Anchorage),America/Los_Angeles(Los Angeles (US Pacific)),America/Denver(Denver (US Mountain)),America/Phoenix(Phoenix (no daylight saving)),America/Chicago(Chicago (US Central)),America/Mexico_City(Mexico City),America/New_York(New York (US Eastern)),America/Toronto(Toronto),America/Bogota(Bogota), and 50 more.
Outputs
personobject- Everything Zep holds against this person.
person_idtext- The id this person is known by.
Example output
{
"person": {
"email": "ada@analytical.example",
"first_name": "Ada",
"last_name": "Lovelace",
"time_zone": "Europe/London",
"user_id": "ada@example.com"
},
"person_id": "ada@example.com"
}