participant_tags with every conversation, and Tavus finds or creates the store for that relationship so the PAL can use and build memory over time.
Learned memory works automatically and requires no ongoing maintenance. Everything in the memory store is viewable, and you can selectively delete information whenever needed. You can also add optional pinned memories when there are specific facts you want the PAL to know, including before the first conversation.
You can create and manage Memory Stores in PAL Maker or programmatically through the API.
How Memories work
A relationship is the pairing of one PAL and one participant tag. Each relationship has exactly one memory store, created automatically — you never create it yourself unless you want to pre-seed pinned memories (see below). The first time a PAL and a participant tag appear together in a conversation, Tavus creates a store for that relationship. Every later conversation using that same PAL and tag reuses it, building the profile and timeline over time. If the same tag talks to a different PAL, that’s a different relationship with its own store that starts empty. Memories are not shared between PALs. For example, suppose participant tagalex_taylor talks with a math tutor PAL (p_math_tutor) and, separately, an English tutor PAL (p_english_tutor):
Each PAL relationship develops independently. If you want both tutors to start from the same baseline (for example, Alex’s learning goals), add the same pinned memories to both stores rather than expecting them to share one.
Both types of memory are viewable. You can selectively delete learned information and update or delete pinned memories. When pinned and learned memory conflict, Tavus prioritizes the pinned memory.
Start using Memories
For an API integration, pass the participant’s stable tag inparticipant_tags whenever you create a conversation.
Pass a participant tag with every conversation
Use any stable, non-empty string from your application as the one value in Tavus finds the store for that PAL and participant, or creates one if this is their first conversation. Reuse the same tag with the same PAL to continue the relationship’s memory.
participant_tags, such as an internal user ID. Avoid values that may change, such as a display name.participant_tags accepts zero or one tag today. Omit it, or send an empty array, for a stateless conversation. Sending more than one tag returns a 400 error; multi-participant memory is not supported yet.That’s all that’s required. Learned memory updates automatically after completed conversations; pinned memories and memory management are optional.
Optionally provide specific context
Pinned memories are static facts you provide directly. Tavus makes them available to the PAL whenever you create a conversation with that relationship’s tag inparticipant_tags, including before the first conversation.
For example, you might add “Prefers concise answers,” “Has completed onboarding,” or “Their account includes priority support.” Keep each pinned memory focused on one fact so it can be updated or deleted independently.
Pinned memories remain unchanged until you update or delete them. If a pinned fact can become outdated, keep it synchronized with your application.
Review and control what the PAL remembers
You do not need to review memory after every conversation. When you want visibility or control, Get Memory Store returns both pinned and learned memory for the relationship. Learned memory contains:- Profile: Structured information the PAL has learned about the participant.
- Timeline: A time-aware history of their prior interactions with the PAL.
Find a memory store to manage it
Use List Memory Stores to list all of your memory stores, or filter bypal_id, participant_tag, or both. Use both filters to find the memory_store_id for a specific relationship when you need to view or manage it. You never need this ID when creating a conversation.
Delete a relationship’s memory
Delete Memory Store removes the store so it can no longer be viewed or used by the PAL. A later conversation with the same tag inparticipant_tags creates a new store for that relationship.
Troubleshooting
For more answers, see the Memory FAQs.
Already using legacy memory tags through the
memory_stores field? See Legacy memory tags. New integrations should use participant_tags. Do not send both fields in the same conversation request.
