List memories
curl --request GET \
--url https://api.tensorpro.ai/api/v1/memory/records \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tensorpro.ai/api/v1/memory/records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tensorpro.ai/api/v1/memory/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tensorpro.ai/api/v1/memory/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tensorpro.ai/api/v1/memory/records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tensorpro.ai/api/v1/memory/records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tensorpro.ai/api/v1/memory/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"records": [
{
"id": "8f0d2c61-5b7e-4a39-9c1e-2d4f6a8b0e17",
"content_summary": "Sara manages the website project.",
"provenance": "USER_STATED",
"domain": "factual",
"created_at": "2026-11-10T04:43:25+00:00",
"status": "current",
"superseded_by": null
}
],
"total": 1
}
Manage memory
List memories
List your memories, newest first, with optional filters. Deleted memories are not listed. Memories replaced by an edit or correction are listed with status replaced. Without project_id the list covers all your memory; with it, the project’s memory plus your general memory.
GET
/
api
/
v1
/
memory
/
records
List memories
curl --request GET \
--url https://api.tensorpro.ai/api/v1/memory/records \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tensorpro.ai/api/v1/memory/records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tensorpro.ai/api/v1/memory/records', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tensorpro.ai/api/v1/memory/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tensorpro.ai/api/v1/memory/records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tensorpro.ai/api/v1/memory/records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tensorpro.ai/api/v1/memory/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"records": [
{
"id": "8f0d2c61-5b7e-4a39-9c1e-2d4f6a8b0e17",
"content_summary": "Sara manages the website project.",
"provenance": "USER_STATED",
"domain": "factual",
"created_at": "2026-11-10T04:43:25+00:00",
"status": "current",
"superseded_by": null
}
],
"total": 1
}
Use this endpoint to see what EDN remembers, for example to show users their memories, or to find a memory to edit or delete.
See Error handling.
What EDN does
- Returns your memories, newest first by default.
- Leaves out deleted memories.
- Includes memories that an edit or correction replaced, with
status: replaced.
Required headers
| Header | Value | Description |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Your EDN API key. Create keys in the Console. See Authentication |
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
provenance | string | No | Only memories from this source: USER_STATED, USER_CONFIRMED, DOCUMENT_VERIFIED, AI_INFERRED, AI_GENERATED, SYSTEM_DERIVED or ROUND. Not case-sensitive |
domain | string | No | Only memories in this category: factual, technical, professional-context or communication-style. Not case-sensitive |
q | string | No | Only memories whose text contains this word or phrase. Not case-sensitive |
order | string | No | desc (newest first) or asc (oldest first). Default: desc |
days | integer | No | Only memories saved in the last N days |
project_id | string | No | Only this project’s memories, together with your general memory. Omit to list all your memory |
limit | integer | No | How many memories to return. Default 50; values above 200 return 200 |
offset | integer | No | How many memories to skip, for paging. Default 0 |
curl "https://api.tensorpro.ai/api/v1/memory/records?provenance=USER_STATED&limit=20" \
-H "Authorization: Bearer $EDN_API_KEY"
import os
import requests
resp = requests.get(
"https://api.tensorpro.ai/api/v1/memory/records",
headers={"Authorization": f"Bearer {os.environ['EDN_API_KEY']}"},
params={
"provenance": "USER_STATED",
"limit": 20
},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.tensorpro.ai/api/v1/memory/records?provenance=USER_STATED&limit=20", {
headers: {
Authorization: `Bearer ${process.env.EDN_API_KEY}`,
},
});
console.log(await resp.json());
Response
200 OK
{
"records": [
{
"id": "8f0d2c61-5b7e-4a39-9c1e-2d4f6a8b0e17",
"content_summary": "Sara manages the website project.",
"provenance": "USER_STATED",
"domain": "factual",
"created_at": "2026-11-10T04:43:25+00:00",
"status": "current",
"superseded_by": null
}
],
"total": 1
}
| Field | Type | Description |
|---|---|---|
records | array | The page of matching memories |
records[].id | string | Identifier for the memory |
records[].content_summary | string | What the memory says (up to 500 characters) |
records[].provenance | string | Where the memory came from. See Provenance |
records[].domain | string | The memory’s category |
records[].created_at | string (date-time) | When the memory was saved |
records[].status | string | current or replaced |
records[].superseded_by | string or null | Identifier for the newer version that replaced it, or null |
total | integer | How many memories match, across all pages |
Important behavior
-
Confirmed originals aren’t listed. When an AI memory is confirmed, only the new
USER_CONFIRMEDmemory appears. -
project_idincludes general memory. It returns the project’s memories plus memories with no project.
Errors
| Status | Code | When |
|---|---|---|
401 | UNAUTHORIZED | The API key is missing, invalid or revoked |
404 | NOT_FOUND | project_id isn’t one of your projects |
422 | VALIDATION_ERROR | provenance or domain isn’t a recognised value, or limit, offset or days is invalid |
429 | RATE_LIMITED | Per-minute limit reached. Retry after Retry-After seconds |
500 | INTERNAL_ERROR | Something failed on EDN’s side. Retry later |
{
"records": [
{
"id": "8f0d2c61-5b7e-4a39-9c1e-2d4f6a8b0e17",
"content_summary": "Sara manages the website project.",
"provenance": "USER_STATED",
"domain": "factual",
"created_at": "2026-11-10T04:43:25+00:00",
"status": "current",
"superseded_by": null
}
],
"total": 1
}
