1806 lines
52 KiB
Plaintext
1806 lines
52 KiB
Plaintext
---
|
||
title: Guide
|
||
description: 'Get started with Mem0 Platform in minutes'
|
||
---
|
||
|
||
## 1. Installation
|
||
|
||
<CodeGroup>
|
||
```bash pip
|
||
pip install mem0ai
|
||
```
|
||
|
||
```bash npm
|
||
npm install mem0ai
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
## 2. API Key Setup
|
||
|
||
1. Sign in to [Mem0 Platform](https://mem0.dev/pd-api)
|
||
2. Copy your API Key from the dashboard
|
||
|
||

|
||
|
||
## 3. Instantiate Client
|
||
|
||
<CodeGroup>
|
||
```python Python
|
||
from mem0 import MemoryClient
|
||
client = MemoryClient(api_key="your-api-key")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
import MemoryClient from 'mem0ai';
|
||
const client = new MemoryClient({ apiKey: 'your-api-key' });
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 3.1 Instantiate Async Client (Python only)
|
||
|
||
For asynchronous operations in Python, you can use the AsyncMemoryClient:
|
||
|
||
```python Python
|
||
from mem0 import AsyncMemoryClient
|
||
|
||
client = AsyncMemoryClient(api_key="your-api-key")
|
||
|
||
|
||
async def main():
|
||
response = await client.add("I'm travelling to SF", user_id="john")
|
||
print(response)
|
||
|
||
await main()
|
||
```
|
||
|
||
## 4. Memory Operations
|
||
|
||
Mem0 provides a simple and customizable interface for performing CRUD operations on memory.
|
||
|
||
### 4.1 Create Memories
|
||
|
||
#### Long-term memory for a user
|
||
|
||
These memory instances persist across multiple sessions. Ideal for maintaining memory over long time spans.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
messages = [
|
||
{"role": "user", "content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."},
|
||
{"role": "assistant", "content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."}
|
||
]
|
||
|
||
# The default output_format is v1.0
|
||
client.add(messages, user_id="alex", output_format="v1.0")
|
||
|
||
# To use the latest output_format, set the output_format parameter to "v1.1"
|
||
client.add(messages, user_id="alex", output_format="v1.1", metadata={"food": "vegan"})
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const messages = [
|
||
{"role": "user", "content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."},
|
||
{"role": "assistant", "content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."}
|
||
];
|
||
client.add(messages, { user_id: "alex", output_format: "v1.1", metadata: { food: "vegan" } })
|
||
.then(response => console.log(response))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [
|
||
{"role": "user", "content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."},
|
||
{"role": "assistant", "content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."}
|
||
],
|
||
"user_id": "alex",
|
||
"output_format": "v1.1",
|
||
"metadata": {
|
||
"food": "vegan"
|
||
}
|
||
}'
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
[
|
||
{
|
||
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
||
"data": {
|
||
"memory": "Name is Alex"
|
||
},
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"id": "b2c3d4e5-f6g7-8h9i-j0k1-l2m3n4o5p6q7",
|
||
"data": {
|
||
"memory": "Is a vegetarian"
|
||
},
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"id": "c3d4e5f6-g7h8-9i0j-k1l2-m3n4o5p6q7r8",
|
||
"data": {
|
||
"memory": "Is allergic to nuts"
|
||
},
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
```
|
||
```json Output (v1.1)
|
||
{
|
||
"results": [
|
||
{
|
||
"memory": "Name is Alex",
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"memory": "Is a vegetarian",
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"memory": "Is allergic to nuts",
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
|
||
<Note> The `add` method offers support for two output formats: `v1.0` (default) and `v1.1`. To enable the latest format, which provides enhanced detail for each memory operation, set the `output_format` parameter to `v1.1`. Note that `v1.0` will be deprecated in version `0.1.30`. </Note>
|
||
|
||
<Note>
|
||
Messages passed along with `user_id`, `run_id`, or `app_id` are stored as user memories, while messages from the assistant are excluded from memory. To store messages for the assistant, use `agent_id` exclusively and avoid including other IDs, such as user_id, alongside it. This ensures the memory is properly attributed to the assistant.
|
||
</Note>
|
||
|
||
|
||
#### Short-term memory for a user session
|
||
|
||
These memory instances persist only for the duration of a user session. Ideal for non-repetitive interactions and managing context windows efficiently.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
messages = [
|
||
{"role": "user", "content": "I'm planning a trip to Japan next month."},
|
||
{"role": "assistant", "content": "That's exciting, Alex! A trip to Japan next month sounds wonderful. Would you like some recommendations for vegetarian-friendly restaurants in Japan?"},
|
||
{"role": "user", "content": "Yes, please! Especially in Tokyo."},
|
||
{"role": "assistant", "content": "Great! I'll remember that you're interested in vegetarian restaurants in Tokyo for your upcoming trip. I'll prepare a list for you in our next interaction."}
|
||
]
|
||
|
||
# The default output_format is v1.0
|
||
client.add(messages, user_id="alex123", run_id="trip-planning-2024", output_format="v1.0")
|
||
|
||
# To use the latest output_format, set the output_format parameter to "v1.1"
|
||
client.add(messages, user_id="alex123", run_id="trip-planning-2024", output_format="v1.1")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const messages = [
|
||
{"role": "user", "content": "I'm planning a trip to Japan next month."},
|
||
{"role": "assistant", "content": "That's exciting, Alex! A trip to Japan next month sounds wonderful. Would you like some recommendations for vegetarian-friendly restaurants in Japan?"},
|
||
{"role": "user", "content": "Yes, please! Especially in Tokyo."},
|
||
{"role": "assistant", "content": "Great! I'll remember that you're interested in vegetarian restaurants in Tokyo for your upcoming trip. I'll prepare a list for you in our next interaction."}
|
||
];
|
||
client.add(messages, { user_id: "alex123", run_id: "trip-planning-2024", output_format: "v1.1" })
|
||
.then(response => console.log(response))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [
|
||
{"role": "user", "content": "I'm planning a trip to Japan next month."},
|
||
{"role": "assistant", "content": "That's exciting, Alex! A trip to Japan next month sounds wonderful. Would you like some recommendations for vegetarian-friendly restaurants in Japan?"},
|
||
{"role": "user", "content": "Yes, please! Especially in Tokyo."},
|
||
{"role": "assistant", "content": "Great! I'll remember that you're interested in vegetarian restaurants in Tokyo for your upcoming trip. I'll prepare a list for you in our next interaction."}
|
||
],
|
||
"user_id": "alex123",
|
||
"run_id": "trip-planning-2024",
|
||
"output_format": "v1.1"
|
||
}'
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
[
|
||
{
|
||
"id": "f2968654-5cd8-4d58-9f40-57ee339846b6",
|
||
"data": {
|
||
"memory": "Interested in vegetarian restaurants in Tokyo"
|
||
},
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"id": "f2968654-5cd8-4d58-9f40-57ee339846b6",
|
||
"data": {
|
||
"memory": "Planning a trip to Japan next month"
|
||
},
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"results": [
|
||
{
|
||
"memory": "Planning a trip to Japan next month",
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"memory": "Interested in vegetarian restaurants in Tokyo",
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
#### Long-term memory for agents
|
||
Add a memory layer for the assistants and agents so that their responses remain consistent across sessions.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
messages = [
|
||
{"role": "system", "content": "You are an AI tutor with a personality. Give yourself a name for the user."},
|
||
{"role": "assistant", "content": "Understood. I'm an AI tutor with a personality. My name is Alice."}
|
||
]
|
||
|
||
# The default output_format is v1.0
|
||
client.add(messages, agent_id="ai-tutor", output_format="v1.0")
|
||
|
||
# To use the latest output_format, set the output_format parameter to "v1.1"
|
||
client.add(messages, agent_id="ai-tutor", output_format="v1.1")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const messages = [
|
||
{"role": "system", "content": "You are an AI tutor with a personality. Give yourself a name for the user."},
|
||
{"role": "assistant", "content": "Understood. I'm an AI tutor with a personality. My name is Alice."}
|
||
];
|
||
client.add(messages, { agent_id: "ai-tutor", output_format: "v1.1" })
|
||
.then(response => console.log(response))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [
|
||
{"role": "system", "content": "You are an AI tutor with a personality. Give yourself a name for the user."},
|
||
{"role": "assistant", "content": "Understood. I'm an AI tutor with a personality. My name is Alice."}
|
||
],
|
||
"agent_id": "ai-tutor",
|
||
"output_format": "v1.1"
|
||
}'
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
[
|
||
{
|
||
"id": "a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5",
|
||
"data": {
|
||
"memory": "Name is Alex"
|
||
},
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"id": "b2c3d4e5-f6g7-8h9i-j0k1-l2m3n4o5p6q7",
|
||
"data": {
|
||
"memory": "Is a vegetarian"
|
||
},
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"id": "c3d4e5f6-g7h8-9i0j-k1l2-m3n4o5p6q7r8",
|
||
"data": {
|
||
"memory": "Is allergic to nuts"
|
||
},
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"results": [
|
||
{
|
||
"memory": "Name is Alex",
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"memory": "Is a vegetarian",
|
||
"event": "ADD"
|
||
},
|
||
{
|
||
"memory": "Is allergic to nuts",
|
||
"event": "ADD"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
<Note>
|
||
The `agent_id` retains memories exclusively based on messages generated by the assistant or those explicitly provided as input to the assistant. Messages outside these criteria are not stored as memory.
|
||
</Note>
|
||
|
||
|
||
#### Monitor Memories
|
||
|
||
You can monitor memory operations on the platform dashboard:
|
||
|
||

|
||
|
||
### 4.2 Search Memories
|
||
|
||
#### General Memory Search
|
||
|
||
Pass user messages, interactions, and queries into our search method to retrieve relevant memories.
|
||
|
||
<Note> The `search` method supports two output formats: `v1.0` (default) and `v1.1`. To use the latest format, which provides more detailed information about each memory operation, set the `output_format` parameter to `v1.1`: </Note>
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
query = "What should I cook for dinner today?"
|
||
|
||
# The default output_format is v1.0
|
||
client.search(query, user_id="alex", output_format="v1.0")
|
||
|
||
# To use the latest output_format, set the output_format parameter to "v1.1"
|
||
client.search(query, user_id="alex", output_format="v1.1")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const query = "What should I cook for dinner today?";
|
||
client.search(query, { user_id: "alex", output_format: "v1.1" })
|
||
.then(results => console.log(results))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/search/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"query": "What should I cook for dinner today?",
|
||
"user_id": "alex",
|
||
"output_format": "v1.1"
|
||
}'
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
[
|
||
{
|
||
"id": "7f165f7e-b411-4afe-b7e5-35789b72c4a5",
|
||
"memory": "Vegetarian. Allergic to nuts.",
|
||
"input": [
|
||
{
|
||
"role": "user",
|
||
"content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."
|
||
},
|
||
{
|
||
"role": "assistant",
|
||
"content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."
|
||
}
|
||
],
|
||
"user_id": "alex",
|
||
"hash": "9ee7e1455e84d1dab700ed8749aed75a",
|
||
"metadata": {"food": "vegan"},
|
||
"categories": ["food_preferences"],
|
||
"created_at": "2024-07-20T01:30:36.275141-07:00",
|
||
"updated_at": "2024-07-20T01:30:36.275172-07:00"
|
||
}
|
||
]
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"results": [
|
||
{
|
||
"id": "7f165f7e-b411-4afe-b7e5-35789b72c4a5",
|
||
"memory": "Vegetarian. Allergic to nuts.",
|
||
"input": [
|
||
{
|
||
"role": "user",
|
||
"content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."
|
||
},
|
||
{
|
||
"role": "assistant",
|
||
"content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."
|
||
}
|
||
],
|
||
"user_id": "alex",
|
||
"hash": "9ee7e1455e84d1dab700ed8749aed75a",
|
||
"metadata": {"food": "vegan"},
|
||
"categories": ["food_preferences"],
|
||
"created_at": "2024-07-20T01:30:36.275141-07:00",
|
||
"updated_at": "2024-07-20T01:30:36.275172-07:00"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
Use category and metadata filters:
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
query = "What do you know about me?"
|
||
|
||
client.search(query, categories=["food_preferences"], metadata={"food": "vegan"})
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const query = "What do you know about me?";
|
||
client.search(query, categories=["food_preferences"], metadata={"food": "vegan"})
|
||
.then(results => console.log(results))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/search/?version=v2" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"query": "What do you know about me?",
|
||
"categories": ["food_preferences"],
|
||
"metadata": {"food": "vegan"}
|
||
}'
|
||
```
|
||
|
||
```json Output
|
||
[
|
||
{
|
||
"id": "7f165f7e-b411-4afe-b7e5-35789b72c4a5",
|
||
"memory": "Name: Alex. Vegetarian. Allergic to nuts.",
|
||
"input": [
|
||
{
|
||
"role": "user",
|
||
"content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."
|
||
},
|
||
{
|
||
"role": "assistant",
|
||
"content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."
|
||
}
|
||
],
|
||
"user_id": "alex",
|
||
"hash": "9ee7e1455e84d1dab700ed8749aed75a",
|
||
"metadata": {"food": "vegan"},
|
||
"categories": ["food_preferences"],
|
||
"created_at": "2024-07-20T01:30:36.275141-07:00",
|
||
"updated_at": "2024-07-20T01:30:36.275172-07:00"
|
||
}
|
||
]
|
||
```
|
||
</CodeGroup>
|
||
|
||
|
||
#### Search using custom filters
|
||
|
||
Our advanced search allows you to set custom search filters. You can filter by user_id, agent_id, app_id, date, and more.
|
||
|
||
Here you need to define `version` as `v2` in the search method.
|
||
|
||
Example 1: Search using user_id and agent_id filters
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
query = "What do you know about me?"
|
||
filters = {
|
||
"AND":[
|
||
{
|
||
"user_id":"alex"
|
||
},
|
||
{
|
||
"agent_id":{
|
||
"in":[
|
||
"travel-assistant",
|
||
"customer-support"
|
||
]
|
||
}
|
||
}
|
||
]
|
||
}
|
||
client.search(query, version="v2", filters=filters)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const query = "What do you know about me?";
|
||
const filters = {
|
||
"AND":[
|
||
{
|
||
"user_id":"alex"
|
||
},
|
||
{
|
||
"agent_id":{
|
||
"in":[
|
||
"travel-assistant",
|
||
"customer-support"
|
||
]
|
||
}
|
||
}
|
||
]
|
||
};
|
||
client.search(query, { version: "v2", filters })
|
||
.then(results => console.log(results))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/search/?version=v2" \
|
||
-H "Authorization : Token your - api - key" \
|
||
-H "Content-Type : application / json" \
|
||
-d '{
|
||
"query": "What do you know about me?",
|
||
"filters": {
|
||
"AND": [
|
||
{
|
||
"user_id": "alex"
|
||
},
|
||
{
|
||
"agent_id": {
|
||
"in": ["travel-assistant", "customer-support"]
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}'
|
||
```
|
||
|
||
```json Output
|
||
[
|
||
{
|
||
"id": "7f165f7e-b411-4afe-b7e5-35789b72c4a5",
|
||
"memory": "Name: Alex. Vegetarian. Allergic to nuts.",
|
||
"input": [
|
||
{
|
||
"role": "user",
|
||
"content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."
|
||
},
|
||
{
|
||
"role": "assistant",
|
||
"content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."
|
||
}
|
||
],
|
||
"user_id": "alex",
|
||
"hash": "9ee7e1455e84d1dab700ed8749aed75a",
|
||
"metadata": null,
|
||
"categories": ["food_preferences"],
|
||
"created_at": "2024-07-20T01:30:36.275141-07:00",
|
||
"updated_at": "2024-07-20T01:30:36.275172-07:00"
|
||
}
|
||
]
|
||
```
|
||
</CodeGroup>
|
||
|
||
Example 2: Search using date filters
|
||
<CodeGroup>
|
||
```python Python
|
||
query = "What do you know about me?"
|
||
filters = {
|
||
"AND": [
|
||
{"created_at": {"gte": "2024-07-20", "lte": "2024-07-10"}},
|
||
{"user_id": "alex"}
|
||
]
|
||
}
|
||
client.search(query, version="v2", filters=filters)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const query = "What do you know about me?";
|
||
const filters = {
|
||
"AND": [
|
||
{"created_at": {"gte": "2024-07-20", "lte": "2024-07-10"}},
|
||
{"user_id": "alex"}
|
||
]
|
||
};
|
||
|
||
client.search(query, { version: "v2", filters })
|
||
.then(results => console.log(results))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/search/?version=v2" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"query": "What do you know about me?",
|
||
"filters": {
|
||
"AND": [
|
||
{
|
||
"created_at": {
|
||
"gte": "2024-07-20",
|
||
"lte": "2024-07-10"
|
||
}
|
||
},
|
||
{
|
||
"user_id": "alex"
|
||
}
|
||
]
|
||
}
|
||
}'
|
||
```
|
||
|
||
```json Output
|
||
[
|
||
{
|
||
"id": "7f165f7e-b411-4afe-b7e5-35789b72c4a5",
|
||
"memory": "Name: Alex. Vegetarian. Allergic to nuts.",
|
||
"input": [
|
||
{
|
||
"role": "user",
|
||
"content": "Hi, I'm Alex. I'm a vegetarian and I'm allergic to nuts."
|
||
},
|
||
{
|
||
"role": "assistant",
|
||
"content": "Hello Alex! I've noted that you're a vegetarian and have a nut allergy. I'll keep this in mind for any food-related recommendations or discussions."
|
||
}
|
||
],
|
||
"user_id": "alex",
|
||
"hash": "9ee7e1455e84d1dab700ed8749aed75a",
|
||
"metadata": null,
|
||
"categories": ["food_preferences"],
|
||
"created_at": "2024-07-20T01:30:36.275141-07:00",
|
||
"updated_at": "2024-07-20T01:30:36.275172-07:00"
|
||
}
|
||
]
|
||
```
|
||
</CodeGroup>
|
||
|
||
|
||
### 4.3 Get All Users
|
||
|
||
Get all users, agents, and runs which have memories associated with them.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.users()
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.users()
|
||
.then(users => console.log(users))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/entities/" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
|
||
```json Output
|
||
[
|
||
{
|
||
"id": "1",
|
||
"name": "user123",
|
||
"created_2024-07-17T16:47:23.899900-07:00",
|
||
"updated_at": "2024-07-17T16:47:23.899918-07:00",
|
||
"total_memories": 5,
|
||
"owner": "alex",
|
||
"metadata": {"foo": "bar"},
|
||
"type": "user"
|
||
},
|
||
{
|
||
"id": "2",
|
||
"name": "travel-agent",
|
||
"created_at": "2024-07-01T17:59:08.187250-07:00",
|
||
"updated_at": "2024-07-01T17:59:08.187266-07:00",
|
||
"total_memories": 10,
|
||
"owner": "alex",
|
||
"metadata": {"agent_id": "123"},
|
||
"type": "agent"
|
||
}
|
||
]
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
|
||
### 4.4 Get All Memories
|
||
|
||
Fetch all memories for a user, agent, or run using the getAll() method.
|
||
|
||
<Note> The `get_all` method supports two output formats: `v1.0` (default) and `v1.1`. To use the latest format, which provides more detailed information about each memory operation, set the `output_format` parameter to `v1.1`: </Note>
|
||
<Note> We're soon deprecating the default output format for get_all() method, which returned a list. Once the changes are live, paginated response will be the only supported format, with 100 memories per page by default. You can customize this using the `page` and `page_size` parameters. </Note>
|
||
|
||
The following examples showcase the paginated output format.
|
||
|
||
#### Get all memories of a user
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
memories = client.get_all(user_id="alex", page=1, page_size=50)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.getAll({ user_id: "alex", page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
{
|
||
"count": 204,
|
||
"next": "https://api.mem0.ai/v1/memories/?user_id=alex&page=2&page_size=50",
|
||
"previous": null,
|
||
"results": [
|
||
{
|
||
"id":"f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory":"是素食主义者,对坚果过敏。",
|
||
"agent_id":"travel-assistant",
|
||
"hash":"62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":None,
|
||
"created_at":"2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at":"2024-07-25T23:57:00.108367-07:00",
|
||
"categories":None
|
||
},
|
||
{
|
||
"id":"0a14d8f0-e364-4f5c-b305-10da1f0d0878",
|
||
"memory":"Will maintain personalized travel preferences for each user. Provide customized recommendations based on dietary restrictions, interests, and past interactions.",
|
||
"agent_id":"travel-assistant",
|
||
"hash":"35a305373d639b0bffc6c2a3e2eb4244",
|
||
"metadata":"None",
|
||
"created_at":"2024-07-26T00:31:03.543759-07:00",
|
||
"updated_at":"2024-07-26T00:31:03.543778-07:00",
|
||
"categories":None
|
||
}
|
||
... (remaining 48 memories)
|
||
]
|
||
}
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"count": 204,
|
||
"next": "https://api.mem0.ai/v1/memories/?user_id=alex&output_format=v1.1&page=2&page_size=50",
|
||
"previous": null,
|
||
"results": {
|
||
"results": [
|
||
{
|
||
"id":"f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory":"是素食主义者,对坚果过敏。",
|
||
"agent_id":"travel-assistant",
|
||
"hash":"62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":None,
|
||
"created_at":"2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at":"2024-07-25T23:57:00.108367-07:00",
|
||
"categories":None
|
||
},
|
||
{
|
||
"id":"0a14d8f0-e364-4f5c-b305-10da1f0d0878",
|
||
"memory":"Will maintain personalized travel preferences for each user. Provide customized recommendations based on dietary restrictions, interests, and past interactions.",
|
||
"agent_id":"travel-assistant",
|
||
"hash":"35a305373d639b0bffc6c2a3e2eb4244",
|
||
"metadata":"None",
|
||
"created_at":"2024-07-26T00:31:03.543759-07:00",
|
||
"updated_at":"2024-07-26T00:31:03.543778-07:00",
|
||
"categories":None
|
||
}
|
||
... (remaining 48 memories)
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
|
||
#### Get all memories of an AI Agent
|
||
|
||
<CodeGroup>
|
||
```python Python
|
||
agent_memories = client.get_all(agent_id="ai-tutor", page=1, page_size=50)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.getAll({ agent_id: "ai-tutor", page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?agent_id=ai-tutor&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
{
|
||
"count": 78,
|
||
"next": "https://api.mem0.ai/v1/memories/?agent_id=ai-tutor&page=2&page_size=50",
|
||
"previous": null,
|
||
"results": [
|
||
{
|
||
"id":"f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory":"是素食主义者,对坚果过敏。",
|
||
"agent_id":"ai-tutor",
|
||
"hash":"62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":None,
|
||
"created_at":"2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at":"2024-07-25T23:57:00.108367-07:00",
|
||
"categories":None
|
||
},
|
||
{
|
||
"id":"0a14d8f0-e364-4f5c-b305-10da1f0d0878",
|
||
"memory":"My name is Alice.",
|
||
"agent_id":"ai-tutor",
|
||
"hash":"35a305373d639b0bffc6c2a3e2eb4244",
|
||
"metadata":None,
|
||
"created_at":"2024-07-26T00:31:03.543759-07:00",
|
||
"updated_at":"2024-07-26T00:31:03.543778-07:00",
|
||
"categories":None
|
||
}
|
||
... (remaining 48 memories)
|
||
]
|
||
}
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"count": 78,
|
||
"next": "https://api.mem0.ai/v1/memories/?agent_id=ai-tutor&output_format=v1.1&page=2&page_size=50",
|
||
"previous": null,
|
||
"results": {
|
||
"results": [
|
||
{
|
||
"id": "f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory": "是素食主义者,对坚果过敏。",
|
||
"agent_id": "ai-tutor",
|
||
"hash": "62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":None,
|
||
"created_at": "2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at": "2024-07-25T23:57:00.108367-07:00"
|
||
},
|
||
{
|
||
"id": "0a14d8f0-e364-4f5c-b305-10da1f0d0878",
|
||
"memory": "My name is Alice.",
|
||
"agent_id": "ai-tutor",
|
||
"hash": "35a305373d639b0bffc6c2a3e2eb4244",
|
||
"metadata":None,
|
||
"created_at": "2024-07-26T00:31:03.543759-07:00",
|
||
"updated_at": "2024-07-26T00:31:03.543778-07:00"
|
||
}
|
||
... (remaining 48 memories)
|
||
]
|
||
}
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
#### Get the short-term memories for a session
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
short_term_memories = client.get_all(user_id="alex123", run_id="trip-planning-2024", page=1, page_size=50)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.getAll({ user_id: "alex123", run_id: "trip-planning-2024", page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex123&run_id=trip-planning-2024&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output (v1.0)
|
||
{
|
||
"count": 18,
|
||
"next": null,
|
||
"previous": null,
|
||
"results": [
|
||
{
|
||
"id":"06d8df63-7bd2-4fad-9acb-60871bcecee0",
|
||
"memory":"Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id":"alex123",
|
||
"hash":"d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at":"2024-07-26T00:25:16.566471-07:00",
|
||
"updated_at":"2024-07-26T00:25:16.566492-07:00",
|
||
"categories":None
|
||
},
|
||
{
|
||
"id":"b4229775-d860-4ccb-983f-0f628ca112f5",
|
||
"memory":"Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id":"alex123",
|
||
"hash":"d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at":"2024-07-26T00:33:20.350542-07:00",
|
||
"updated_at":"2024-07-26T00:33:20.350560-07:00",
|
||
"categories":None
|
||
},
|
||
{
|
||
"id":"df1aca24-76cf-4b92-9f58-d03857efcb64",
|
||
"memory":"Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id":"alex123",
|
||
"hash":"d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at":"2024-07-26T00:51:09.642275-07:00",
|
||
"updated_at":"2024-07-26T00:51:09.642295-07:00",
|
||
"categories":None
|
||
}
|
||
... (remaining 15 memories)
|
||
]
|
||
}
|
||
```
|
||
|
||
```json Output (v1.1)
|
||
{
|
||
"count": 18,
|
||
"next": null,
|
||
"previous": null,
|
||
"results": {
|
||
"results": [
|
||
{
|
||
"id": "06d8df63-7bd2-4fad-9acb-60871bcecee0",
|
||
"memory": "Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id": "alex123",
|
||
"hash": "d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at": "2024-07-26T00:25:16.566471-07:00",
|
||
"updated_at": "2024-07-26T00:25:16.566492-07:00",
|
||
"categories": ["food_preferences"]
|
||
},
|
||
{
|
||
"id": "b4229775-d860-4ccb-983f-0f628ca112f5",
|
||
"memory": "Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id": "alex123",
|
||
"hash": "d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at": "2024-07-26T00:33:20.350542-07:00",
|
||
"updated_at": "2024-07-26T00:33:20.350560-07:00",
|
||
"categories": ["food_preferences"]
|
||
},
|
||
{
|
||
"id": "df1aca24-76cf-4b92-9f58-d03857efcb64",
|
||
"memory": "Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id": "alex123",
|
||
"hash": "d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":None,
|
||
"created_at": "2024-07-26T00:51:09.642275-07:00",
|
||
"updated_at": "2024-07-26T00:51:09.642295-07:00",
|
||
"categories": None
|
||
}
|
||
... (remaining 15 memories)
|
||
]
|
||
}
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
|
||
#### Get specific memory
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
memory = client.get(memory_id="582bbe6d-506b-48c6-a4c6-5df3b1e63428")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.get("582bbe6d-506b-48c6-a4c6-5df3b1e63428")
|
||
.then(memory => console.log(memory))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/memories/582bbe6d-506b-48c6-a4c6-5df3b1e63428" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output
|
||
{
|
||
"id":"06d8df63-7bd2-4fad-9acb-60871bcecee0",
|
||
"memory":"Planning a trip to Japan next month. Interested in vegetarian restaurants in Tokyo.",
|
||
"user_id":"alex123",
|
||
"hash":"d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata":"None",
|
||
"created_at":"2024-07-26T00:25:16.566471-07:00",
|
||
"updated_at":"2024-07-26T00:25:16.566492-07:00",
|
||
"categories": ["travel"]
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
#### Get all memories by categories
|
||
|
||
You can filter memories by their categories when using get_all:
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
# Get memories with specific categories
|
||
memories = client.get_all(user_id="alex123", categories=["likes"])
|
||
|
||
# Get memories with multiple categories
|
||
memories = client.get_all(user_id="alex123", categories=["likes", "food_preferences"])
|
||
|
||
# Custom pagination with categories
|
||
memories = client.get_all(user_id="alex123", categories=["likes"], page=1, page_size=50)
|
||
|
||
# Get memories with specific keywords
|
||
memories = client.get_all(user_id="alex123", keywords="to play", page=1, page_size=50)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
// Get memories with specific categories
|
||
client.getAll({ user_id: "alex123", categories: ["likes"] })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
|
||
// Get memories with multiple categories
|
||
client.getAll({ user_id: "alex123", categories: ["likes", "food_preferences"] })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
|
||
// Custom pagination with categories
|
||
client.getAll({ user_id: "alex123", categories: ["likes"], page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
|
||
// Get memories with specific keywords
|
||
client.getAll({ user_id: "alex123", keywords: "to play", page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
# Get memories with specific categories
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex123&categories=likes" \
|
||
-H "Authorization: Token your-api-key"
|
||
|
||
# Get memories with multiple categories
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex123&categories=likes,food_preferences" \
|
||
-H "Authorization: Token your-api-key"
|
||
|
||
# Custom pagination with categories
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex123&categories=likes&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key"
|
||
|
||
# Get memories with specific keywords
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?user_id=alex123&keywords=to play&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output(Paginated)
|
||
{
|
||
"count": 2,
|
||
"next": null,
|
||
"previous": null,
|
||
"results": [
|
||
{
|
||
"id": "06d8df63-7bd2-4fad-9acb-60871bcecee0",
|
||
"memory": "Likes pizza and pasta",
|
||
"user_id": "alex123",
|
||
"hash": "d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata": null,
|
||
"created_at": "2024-07-26T00:25:16.566471-07:00",
|
||
"updated_at": "2024-07-26T00:25:16.566492-07:00",
|
||
"categories": ["likes", "food_preferences"]
|
||
},
|
||
{
|
||
"id": "b4229775-d860-4ccb-983f-0f628ca112f5",
|
||
"memory": "Likes to travel to beach destinations",
|
||
"user_id": "alex123",
|
||
"hash": "d2088c936e259f2f5d2d75543d31401c",
|
||
"metadata": null,
|
||
"created_at": "2024-07-26T00:33:20.350542-07:00",
|
||
"updated_at": "2024-07-26T00:33:20.350560-07:00",
|
||
"categories": ["likes"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
#### Get all memories using custom filters
|
||
|
||
Our advanced retrieval allows you to set custom filters when fetching memories. You can filter by user_id, agent_id, app_id, date, and more.
|
||
|
||
Here you need to define `version` as `v2` in the get_all method.
|
||
|
||
Example: Get all memories using user_id and date filters
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
filters = {
|
||
"AND":[
|
||
{
|
||
"user_id":"alex"
|
||
},
|
||
{
|
||
"created_at":{
|
||
"gte":"2024-07-01",
|
||
"lte":"2024-07-31"
|
||
}
|
||
},
|
||
{
|
||
"categories":{
|
||
"contains": "food_preferences"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
|
||
# Default (No Pagination)
|
||
client.get_all(version="v2", filters=filters)
|
||
|
||
# Pagination (You can also use the page and page_size parameters)
|
||
client.get_all(version="v2", filters=filters, page=1, page_size=50)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const filters = {
|
||
"AND":[
|
||
{
|
||
"user_id":"alex"
|
||
},
|
||
{
|
||
"created_at":{
|
||
"gte":"2024-07-01",
|
||
"lte":"2024-07-31"
|
||
}
|
||
},
|
||
{
|
||
"categories":{
|
||
"contains": "food_preferences"
|
||
}
|
||
},
|
||
{
|
||
"keywords":{
|
||
"contains": "to play"
|
||
}
|
||
}
|
||
]
|
||
};
|
||
|
||
// Default (No Pagination)
|
||
client.getAll({ version: "v2", filters })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
|
||
// Pagination (You can also use the page and page_size parameters)
|
||
client.getAll({ version: "v2", filters, page: 1, page_size: 50 })
|
||
.then(memories => console.log(memories))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
# Default (No Pagination)
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?version=v2" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"filters": {
|
||
"AND": [
|
||
{
|
||
"user_id": "alex"
|
||
},
|
||
{
|
||
"created_at": {
|
||
"gte": "2024-07-01",
|
||
"lte": "2024-07-31"
|
||
}
|
||
},
|
||
{
|
||
"categories":{
|
||
"contains": "food_preferences"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}'
|
||
|
||
# Pagination (You can also use the page and page_size parameters)
|
||
curl -X GET "https://api.mem0.ai/v1/memories/?version=v2&page=1&page_size=50" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"filters": {
|
||
"AND": [
|
||
{
|
||
"user_id": "alex"
|
||
},
|
||
{
|
||
"created_at": {
|
||
"gte": "2024-07-01",
|
||
"lte": "2024-07-31"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}'
|
||
```
|
||
|
||
```json Output (Default)
|
||
[
|
||
{
|
||
"id":"f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory":"Name: Alex. Vegetarian. Allergic to nuts.",
|
||
"user_id":"alex",
|
||
"hash":"62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":null,
|
||
"created_at":"2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at":"2024-07-25T23:57:00.108367-07:00",
|
||
"categories": ["food_preferences"]
|
||
}
|
||
]
|
||
```
|
||
|
||
```json Output (Paginated)
|
||
{
|
||
"count": 1,
|
||
"next": null,
|
||
"previous": null,
|
||
"results": [
|
||
{
|
||
"id":"f38b689d-6b24-45b7-bced-17fbb4d8bac7",
|
||
"memory":"Name: Alex. Vegetarian. Allergic to nuts.",
|
||
"user_id":"alex",
|
||
"hash":"62bc074f56d1f909f1b4c2b639f56f6a",
|
||
"metadata":null,
|
||
"created_at":"2024-07-25T23:57:00.108347-07:00",
|
||
"updated_at":"2024-07-25T23:57:00.108367-07:00",
|
||
"categories": ["food_preferences"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 4.5 Memory History
|
||
|
||
Get history of how a memory has changed over time.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
# Add some message to create history
|
||
messages = [{"role": "user", "content": "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."}]
|
||
client.add(messages, user_id="alex")
|
||
|
||
# Add second message to update history
|
||
messages.append({'role': 'user', 'content': 'I turned vegetarian now.'})
|
||
client.add(messages, user_id="alex")
|
||
|
||
# Get history of how memory changed over time
|
||
memory_id = "<memory-id-here>"
|
||
history = client.history(memory_id)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
// Add some message to create history
|
||
let messages = [{ role: "user", content: "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.." }];
|
||
client.add(messages, { user_id: "alex" })
|
||
.then(result => {
|
||
// Add second message to update history
|
||
messages.push({ role: 'user', content: 'I turned vegetarian now.' });
|
||
return client.add(messages, { user_id: "alex" });
|
||
})
|
||
.then(result => {
|
||
// Get history of how memory changed over time
|
||
const memoryId = result.id; // Assuming the API returns the memory ID
|
||
return client.history(memoryId);
|
||
})
|
||
.then(history => console.log(history))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
# First, add the initial memory
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [{"role": "user", "content": "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."}],
|
||
"user_id": "alex"
|
||
}'
|
||
|
||
# Then, update the memory
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [
|
||
{"role": "user", "content": "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."},
|
||
{"role": "user", "content": "I turned vegetarian now."}
|
||
],
|
||
"user_id": "alex"
|
||
}'
|
||
|
||
# Finally, get the history (replace <memory-id-here> with the actual memory ID)
|
||
curl -X GET "https://api.mem0.ai/v1/memories/<memory-id-here>/history/" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output
|
||
[
|
||
{
|
||
"id":"d6306e85-eaa6-400c-8c2f-ab994a8c4d09",
|
||
"memory_id":"b163df0e-ebc8-4098-95df-3f70a733e198",
|
||
"input":[
|
||
{
|
||
"role":"user",
|
||
"content":"I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."
|
||
},
|
||
{
|
||
"role":"user",
|
||
"content":"I turned vegetarian now."
|
||
}
|
||
],
|
||
"old_memory":"None",
|
||
"new_memory":"Turned vegetarian.",
|
||
"user_id":"alex123456",
|
||
"event":"ADD",
|
||
"metadata":"None",
|
||
"created_at":"2024-07-26T01:02:41.737310-07:00",
|
||
"updated_at":"2024-07-26T01:02:41.726073-07:00"
|
||
}
|
||
]
|
||
```
|
||
</CodeGroup>
|
||
|
||
### 4.6 Update Memory
|
||
|
||
Update a memory with new data.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
message = "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."
|
||
client.update(memory_id, message)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
const message = "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes..";
|
||
client.update("memory-id-here", message)
|
||
.then(result => console.log(result))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X PUT "https://api.mem0.ai/v1/memories/memory-id-here" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"message": "I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes.."
|
||
}'
|
||
```
|
||
|
||
```json Output
|
||
{
|
||
"id":"c190ab1a-a2f1-4f6f-914a-495e9a16b76e",
|
||
"memory":"I recently tried chicken and I loved it. I'm thinking of trying more non-vegetarian dishes..",
|
||
"agent_id":"travel-assistant",
|
||
"hash":"af1161983e03667063d1abb60e6d5c06",
|
||
"metadata":"None",
|
||
"created_at":"2024-07-30T22:46:40.455758-07:00",
|
||
"updated_at":"2024-07-30T22:48:35.257828-07:00"
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 4.7 Delete Memory
|
||
|
||
Delete specific memory.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.delete(memory_id)
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.delete("memory-id-here")
|
||
.then(result => console.log(result))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X DELETE "https://api.mem0.ai/v1/memories/memory-id-here" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output
|
||
{'message': 'Memory deleted successfully'}
|
||
```
|
||
</CodeGroup>
|
||
|
||
Delete all memories of a user.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.delete_all(user_id="alex")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.deleteAll({ user_id: "alex" })
|
||
.then(result => console.log(result))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X DELETE "https://api.mem0.ai/v1/memories/?user_id=alex" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output
|
||
{'message': 'Memories deleted successfully!'}
|
||
```
|
||
</CodeGroup>
|
||
|
||
Delete all users.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.delete_users()
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.delete_users()
|
||
.then(users => console.log(users))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```json Output
|
||
{'message': 'All users, agents, and runs deleted.'}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 4.8 Reset Client
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.reset()
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.reset()
|
||
.then(result => console.log(result))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```json Output
|
||
{'message': 'Client reset successful. All users and memories deleted.'}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
|
||
Fun fact: You can also delete the memory using the `add()` method by passing a natural language command:
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
client.add("Delete all of my food preferences", user_id="alex")
|
||
```
|
||
|
||
```javascript JavaScript
|
||
client.add("Delete all of my food preferences", { user_id: "alex" })
|
||
.then(result => console.log(result))
|
||
.catch(error => console.error(error));
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"messages": [{"role": "user", "content": "Delete all of my food preferences"}],
|
||
"user_id": "alex"
|
||
}'
|
||
```
|
||
|
||
```json Output
|
||
{'message': 'ok'}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 4.9 Batch Update Memories
|
||
Update multiple memories in a single API call. You can update up to 1000 memories at once.
|
||
<CodeGroup>
|
||
```python Python
|
||
update_memories = [
|
||
{
|
||
"memory_id": "285ed74b-6e05-4043-b16b-3abd5b533496",
|
||
"text": "Watches football"
|
||
},
|
||
{
|
||
"memory_id": "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07",
|
||
"text": "Loves to travel"
|
||
}
|
||
]
|
||
|
||
response = client.batch_update(update_memories)
|
||
print(response)
|
||
```
|
||
```javascript JavaScript
|
||
const updateMemories = [
|
||
{
|
||
memoryId: "285ed74b-6e05-4043-b16b-3abd5b533496",
|
||
text: "Watches football"
|
||
},
|
||
{
|
||
memoryId: "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07",
|
||
text: "Loves to travel"
|
||
}
|
||
];
|
||
|
||
client.batchUpdate(updateMemories)
|
||
.then(response => console.log('Batch update response:', response))
|
||
.catch(error => console.error(error));
|
||
```
|
||
```bash cURL
|
||
curl -X PUT "https://api.mem0.ai/v1/memories/batch/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"memories": [
|
||
{
|
||
"memory_id": "285ed74b-6e05-4043-b16b-3abd5b533496",
|
||
"text": "Watches football"
|
||
},
|
||
{
|
||
"memory_id": "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07",
|
||
"text": "Loves to travel"
|
||
}
|
||
]
|
||
}'
|
||
```
|
||
```json Output
|
||
{
|
||
"message": "Successfully updated 2 memories"
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
### 4.10 Batch Delete Memories
|
||
Delete multiple memories in a single API call. You can delete up to 1000 memories at once.
|
||
<CodeGroup>
|
||
```python Python
|
||
delete_memories = [
|
||
{"memory_id": "285ed74b-6e05-4043-b16b-3abd5b533496"},
|
||
{"memory_id": "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07"}
|
||
]
|
||
|
||
response = client.batch_delete(delete_memories)
|
||
print(response)
|
||
```
|
||
```javascript JavaScript
|
||
const deleteMemories = [
|
||
{"memory_id": "285ed74b-6e05-4043-b16b-3abd5b533496"},
|
||
{"memory_id": "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07"}
|
||
];
|
||
|
||
client.batchDelete(deleteMemories)
|
||
.then(response => console.log('Batch delete response:', response))
|
||
.catch(error => console.error(error));
|
||
```
|
||
```bash cURL
|
||
curl -X DELETE "https://api.mem0.ai/v1/memories/batch/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"memory_ids": [
|
||
{"memory_id": "285ed74b-6e05-4043-b16b-3abd5b533496"},
|
||
{"memory_id": "2c9bd859-d1b7-4d33-a6b8-94e0147c4f07"}
|
||
]
|
||
}'
|
||
```
|
||
```json Output
|
||
{
|
||
"message": "Successfully deleted 2 memories"
|
||
}
|
||
```
|
||
</CodeGroup>
|
||
|
||
### 4.11 Create Memory Export
|
||
Submit a job to create a structured export of memories using a customizable Pydantic schema. This process may take some time to complete, especially if you’re exporting a large number of memories. You can tailor the export by applying various filters (e.g., `user_id`, `agent_id`, `run_id`, or `session_id`) and by modifying the Pydantic schema to ensure the final data matches your exact needs.
|
||
|
||
For example, if you want to extract professional profile information from memories, you can define a schema and export the memories in that structured format:
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
response = client.create_memory_export(schema=json_schema, user_id="user123")
|
||
print(response)
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X POST "https://api.mem0.ai/v1/memories/export/" \
|
||
-H "Authorization: Token your-api-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"schema":{json_schema},
|
||
"user_id": "user123"
|
||
}'
|
||
```
|
||
|
||
```json json_schema
|
||
{
|
||
"$defs": {
|
||
"EducationLevel": {
|
||
"enum": ["high_school", "bachelors", "masters"],
|
||
"title": "EducationLevel",
|
||
"type": "string"
|
||
},
|
||
"EmploymentStatus": {
|
||
"enum": ["full_time", "part_time", "student"],
|
||
"title": "EmploymentStatus",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"example": {
|
||
"current_role": "Senior Software Engineer",
|
||
"education_level": "masters",
|
||
"employment_status": "full_time",
|
||
"full_name": "John Doe",
|
||
"skills": ["Python", "AWS", "Machine Learning"],
|
||
"years_experience": 8
|
||
},
|
||
"properties": {
|
||
"full_name": {
|
||
"anyOf": [
|
||
{
|
||
"maxLength": 100,
|
||
"minLength": 2,
|
||
"type": "string"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "The professional's full name",
|
||
"title": "Full Name"
|
||
},
|
||
"current_role": {
|
||
"anyOf": [
|
||
{
|
||
"type": "string"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "Current job title or role",
|
||
"title": "Current Role"
|
||
},
|
||
"years_experience": {
|
||
"anyOf": [
|
||
{
|
||
"maximum": 70,
|
||
"minimum": 0,
|
||
"type": "integer"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "Years of professional experience",
|
||
"title": "Years Experience"
|
||
},
|
||
"employment_status": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/$defs/EmploymentStatus"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "Current employment status"
|
||
},
|
||
"education_level": {
|
||
"anyOf": [
|
||
{
|
||
"$ref": "#/$defs/EducationLevel"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "Highest level of education completed"
|
||
},
|
||
"skills": {
|
||
"anyOf": [
|
||
{
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
{
|
||
"type": "null"
|
||
}
|
||
],
|
||
"default": None,
|
||
"description": "Professional skills and competencies",
|
||
"title": "Skills"
|
||
}
|
||
},
|
||
"title": "ProfessionalProfile",
|
||
"type": "object"
|
||
}
|
||
```
|
||
|
||
```json Output
|
||
{
|
||
"message": "Memory export request received. The export will be ready in a few seconds.",
|
||
"id": "550e8400-e29b-41d4-a716-446655440000"
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
### 4.12 Get Memory Export
|
||
Retrieve the structured export of memories after you have submitted a export job using the previous endpoint. It return the latest memory export.
|
||
|
||
<CodeGroup>
|
||
|
||
```python Python
|
||
response = client.get_memory_export(user_id="user123")
|
||
print(response)
|
||
```
|
||
|
||
```bash cURL
|
||
curl -X GET "https://api.mem0.ai/v1/memories/export/?user_id=user123" \
|
||
-H "Authorization: Token your-api-key"
|
||
```
|
||
|
||
```json Output
|
||
{
|
||
"full_name": "John Doe",
|
||
"current_role": "Senior Software Engineer",
|
||
"years_experience": 8,
|
||
"employment_status": "full_time",
|
||
"education_level": "masters",
|
||
"skills": ["Python", "AWS", "Machine Learning"]
|
||
}
|
||
```
|
||
|
||
</CodeGroup>
|
||
|
||
If you have any questions, please feel free to reach out to us using one of the following methods:
|
||
|
||
<Snippet file="get-help.mdx" /> |