List Memories
curl --request POST \
--url http://localhost:8080/api/v2/memories/list \
--header 'Content-Type: application/json' \
--data '
{
"org_id": "universal",
"project_id": "universal",
"page_size": 100,
"page_num": 0,
"filter": "",
"set_metadata": {},
"type": "episodic"
}
'import requests
url = "http://localhost:8080/api/v2/memories/list"
payload = {
"org_id": "universal",
"project_id": "universal",
"page_size": 100,
"page_num": 0,
"filter": "",
"set_metadata": {},
"type": "episodic"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
org_id: 'universal',
project_id: 'universal',
page_size: 100,
page_num: 0,
filter: '',
set_metadata: {},
type: 'episodic'
})
};
fetch('http://localhost:8080/api/v2/memories/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v2/memories/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'org_id' => 'universal',
'project_id' => 'universal',
'page_size' => 100,
'page_num' => 0,
'filter' => '',
'set_metadata' => [
],
'type' => 'episodic'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/api/v2/memories/list"
payload := strings.NewReader("{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/v2/memories/list")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v2/memories/list")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}"
response = http.request(request)
puts response.read_body{
"content": {
"episodic_memory": [
{
"uid": "<string>",
"content": "<string>",
"session_key": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"producer_id": "<string>",
"producer_role": "<string>",
"produced_for_id": "<string>",
"sequence_num": 0,
"episode_type": "message",
"content_type": "string",
"filterable_metadata": {},
"metadata": {}
}
],
"semantic_memory": [
{
"category": "<string>",
"tag": "<string>",
"feature_name": "<string>",
"value": "<string>",
"set_id": "<string>",
"metadata": {
"citations": [
"<string>"
],
"id": "<string>",
"other": {}
}
}
]
},
"status": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Memories
List Memories
List memories within a project.
System returns a paginated list of memories stored in the project. The page_size and page_num fields control pagination.
The filter field accepts the structured filter expression language.
User-defined metadata keys must be referenced with the m. or metadata. prefix
(for example, m.source = "chat_v3"). Unknown or unsupported fields are rejected
instead of being ignored.
The set_metadata field scopes semantic memories to matching semantic sets.
The type field allows specifying which memory type to list.
POST
/
api
/
v2
/
memories
/
list
List Memories
curl --request POST \
--url http://localhost:8080/api/v2/memories/list \
--header 'Content-Type: application/json' \
--data '
{
"org_id": "universal",
"project_id": "universal",
"page_size": 100,
"page_num": 0,
"filter": "",
"set_metadata": {},
"type": "episodic"
}
'import requests
url = "http://localhost:8080/api/v2/memories/list"
payload = {
"org_id": "universal",
"project_id": "universal",
"page_size": 100,
"page_num": 0,
"filter": "",
"set_metadata": {},
"type": "episodic"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
org_id: 'universal',
project_id: 'universal',
page_size: 100,
page_num: 0,
filter: '',
set_metadata: {},
type: 'episodic'
})
};
fetch('http://localhost:8080/api/v2/memories/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v2/memories/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'org_id' => 'universal',
'project_id' => 'universal',
'page_size' => 100,
'page_num' => 0,
'filter' => '',
'set_metadata' => [
],
'type' => 'episodic'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/api/v2/memories/list"
payload := strings.NewReader("{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/v2/memories/list")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v2/memories/list")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"org_id\": \"universal\",\n \"project_id\": \"universal\",\n \"page_size\": 100,\n \"page_num\": 0,\n \"filter\": \"\",\n \"set_metadata\": {},\n \"type\": \"episodic\"\n}"
response = http.request(request)
puts response.read_body{
"content": {
"episodic_memory": [
{
"uid": "<string>",
"content": "<string>",
"session_key": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"producer_id": "<string>",
"producer_role": "<string>",
"produced_for_id": "<string>",
"sequence_num": 0,
"episode_type": "message",
"content_type": "string",
"filterable_metadata": {},
"metadata": {}
}
],
"semantic_memory": [
{
"category": "<string>",
"tag": "<string>",
"feature_name": "<string>",
"value": "<string>",
"set_id": "<string>",
"metadata": {
"citations": [
"<string>"
],
"id": "<string>",
"other": {}
}
}
]
},
"status": 0
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
application/json
Specification model for listing memories.
The unique identifier of the organization. - Must not contain slashes (`/`). - Must contain only letters, numbers, underscores, hyphens, colon, and Unicode characters (e.g., Chinese/Japanese/Korean). No slashes or other symbols are allowed. This value determines the namespace the project belongs to.
Examples:
"MemVerge"
"AI_Labs"
The identifier of the project. - Must be unique within the organization. - Must not contain slashes (`/`). - Must contain only letters, numbers, underscores, hyphens, colon, and Unicode characters (e.g., Chinese/Japanese/Korean). No slashes or other symbols are allowed. This ID is used in API paths and resource locations.
Examples:
"memmachine"
"research123"
"qa_pipeline"
The maximum number of memories to return per page. Use this for pagination.
Examples:
50
100
The zero-based page number to retrieve. Use this for pagination.
Examples:
0
1
5
10
An optional string filter applied to the memory metadata. This uses a simple query language (e.g., 'metadata.user_id=123') for exact matches. Multiple conditions can be combined using AND operators. The metadata fields are prefixed with 'metadata.' to distinguish them from other fields.
Example:
"metadata.user_id=123 AND metadata.session_id=abc"
Optional metadata key-value pairs used to filter or identify semantic sets.
Show child attributes
Show child attributes
The specific memory type to list (e.g., episodic or semantic).
Available options:
semantic, episodic Example:
"episodic"
Response
Successful Response
⌘I

