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

ActionWhat it does
Add a personGive Zep somebody to remember things about.
Add messages to a conversationRecord what was said.
Delete a conversationRemove a conversation and its messages.
Delete a personRemove a person and everything Zep remembers about them, including their conversations.
Get a personRead back the name, email address and time zone held against one person.
Get a person's summaryZep's own written description of somebody, drawn from every conversation and record it has for them.
Get memory for a conversationEverything 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 conversationsEvery conversation Zep holds for one person.
List messages in a conversationRead a conversation back, message by message.
List peopleEveryone this Zep project holds memory for, with an optional search across their ids, names and email addresses.
List what Zep knows about a personThe 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 personAdd something that was not said in a conversation: an order, a support ticket, a CRM record, a page of notes.
Search a person's memoryAsk a question and get back what Zep knows that bears on it, across every conversation and record it holds for that person.
Start a conversationOpen a conversation to add messages to.
Update a personChange 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 IDperson_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 namefirst_nametext
Their first name.
Last namelast_nametext
Their last name.
Email addressemailtext
Their email address.
Time zonetime_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

Conversationconversation_idtextRequired
Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
MessagesmessageslistRequired
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 memoryreturn_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

Conversationconversation_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

Personperson_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

Personperson_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

Personperson_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

Conversationconversation_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

Personperson_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

Conversationconversation_idtextRequired
Which conversation. Pick one Zep already has, or type the id of one an earlier step started.
Number of messagesmessage_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

Searchsearchtext
Only return people whose id, name or email address matches. Leave empty for everyone.
Orderordertext
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 peoplepage_sizenumber
How many people to return per page.From 1 to 200. Default: 50.
Pagepagenumber
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

Personperson_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 factsfact_countnumber
How many facts to bring back.From 1 to 500. Default: 50.
Orderordertext
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

Personperson_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 rememberdatatextRequired
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 isdata_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 fromsource_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 happenedhappened_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

Personperson_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 forquerytextRequired
Describe it in plain language, such as 'what has this customer complained about before'.
What to bring backscopetext
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 memorysummary_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 resultslimitnumber
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 IDconversation_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.
Personperson_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

Personperson_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 namefirst_nametext
Their first name.
Last namelast_nametext
Their last name.
Email addressemailtext
Their email address.
Time zonetime_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"
}

On this page