List memory versions
curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions', 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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions",
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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions"
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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions")
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{
"memory_versions": [
{
"author_kind": "session",
"author_principal": "example",
"author_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"byte_size": 1,
"content": "example",
"content_sha256": "example",
"created_at": "2026-02-18T09:30:00.000Z",
"evidence_session_ids": [
"example"
],
"memory_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"memory_store_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"memory_version_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"operation": "create",
"organization_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"path": "example",
"rationale": "example",
"redacted_at": "2026-02-18T09:30:00.000Z",
"redacted_by": "example",
"reflection_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"status": "active",
"summary": "example",
"superseded_by_memory_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
],
"next_cursor": "example"
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "forbidden",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {}
}Memory
List memory versions
Returns a store’s change history, newest first, optionally filtered to one memory. Versions belong to the store rather than the memory, so the trail survives the memory being deleted. Retained 30 days, except that the recent versions of a live memory are kept regardless of age.
GET
/
managed-agents
/
v1
/
memory_stores
/
{memory_store_id}
/
memory_versions
List memory versions
curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions', 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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions",
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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions"
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.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/memory_stores/{memory_store_id}/memory_versions")
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{
"memory_versions": [
{
"author_kind": "session",
"author_principal": "example",
"author_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"byte_size": 1,
"content": "example",
"content_sha256": "example",
"created_at": "2026-02-18T09:30:00.000Z",
"evidence_session_ids": [
"example"
],
"memory_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"memory_store_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"memory_version_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"operation": "create",
"organization_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"path": "example",
"rationale": "example",
"redacted_at": "2026-02-18T09:30:00.000Z",
"redacted_by": "example",
"reflection_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"status": "active",
"summary": "example",
"superseded_by_memory_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
],
"next_cursor": "example"
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "forbidden",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {}
}Authorizations
A Recursion API key, created in the console under API keys.
Path Parameters
Memory store id (UUID) whose history is being read.
Query Parameters
Only versions of this memory. The memory may since have been deleted.
Page size from 1 through 100, default 50.
Required range:
1 <= x <= 100Opaque next_cursor from the previous history page, with the same memory_id filter.
Response
A page of immutable memory history, including the evidence and reason for each change.