mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-05-17 03:56:18 +00:00
206 lines
6 KiB
Text
206 lines
6 KiB
Text
---
|
||
title: "Memory Operations"
|
||
sidebarTitle: "Memories"
|
||
description: "Advanced memory operations (v4 API)"
|
||
icon: "database"
|
||
---
|
||
|
||
<Info>
|
||
These v4 endpoints operate on extracted memories (not raw documents). SDK support coming soon — use fetch or cURL for now.
|
||
|
||
For document management (list, get, update, delete), see [Document Operations](/document-operations).
|
||
For ingesting raw content (text, files, URLs) through the processing pipeline, see [Add Context](/add-memories).
|
||
</Info>
|
||
|
||
## Create Memories
|
||
|
||
Create memories directly without going through the document ingestion workflow. Memories are embedded and immediately searchable.
|
||
|
||
This is useful for storing user preferences, traits, or any structured facts where you already know the exact memory content.
|
||
|
||
<Tabs>
|
||
<Tab title="fetch">
|
||
```typescript
|
||
const response = await fetch("https://api.supermemory.ai/v4/memories", {
|
||
method: "POST",
|
||
headers: {
|
||
"Authorization": `Bearer ${API_KEY}`,
|
||
"Content-Type": "application/json"
|
||
},
|
||
body: JSON.stringify({
|
||
memories: [
|
||
{
|
||
content: "John prefers dark mode",
|
||
isStatic: false,
|
||
metadata: { source: "user_preference" }
|
||
},
|
||
{
|
||
content: "John is from Seattle",
|
||
isStatic: true
|
||
}
|
||
],
|
||
containerTag: "user_123"
|
||
})
|
||
});
|
||
|
||
const data = await response.json();
|
||
// {
|
||
// documentId: "abc123",
|
||
// memories: [
|
||
// { id: "mem_1", memory: "John prefers dark mode", isStatic: false, createdAt: "2025-..." },
|
||
// { id: "mem_2", memory: "John is from Seattle", isStatic: true, createdAt: "2025-..." }
|
||
// ]
|
||
// }
|
||
```
|
||
</Tab>
|
||
<Tab title="cURL">
|
||
```bash
|
||
curl -X POST "https://api.supermemory.ai/v4/memories" \
|
||
-H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"memories": [
|
||
{
|
||
"content": "John prefers dark mode",
|
||
"isStatic": false,
|
||
"metadata": { "source": "user_preference" }
|
||
},
|
||
{
|
||
"content": "John is from Seattle",
|
||
"isStatic": true
|
||
}
|
||
],
|
||
"containerTag": "user_123"
|
||
}'
|
||
```
|
||
</Tab>
|
||
</Tabs>
|
||
|
||
### Parameters
|
||
|
||
| Parameter | Type | Required | Description |
|
||
|-----------|------|----------|-------------|
|
||
| `memories` | array | yes | Array of memory objects (1–100 items) |
|
||
| `memories[].content` | string | yes | The memory text (max 10,000 chars). Should be entity-centric, e.g. "John prefers dark mode" |
|
||
| `memories[].isStatic` | boolean | no | `true` for permanent identity traits (name, hometown). Defaults to `false` |
|
||
| `memories[].metadata` | object | no | Key-value metadata (strings, numbers, booleans) |
|
||
| `containerTag` | string | yes | Space / container tag these memories belong to |
|
||
|
||
### Response
|
||
|
||
```json
|
||
{
|
||
"documentId": "abc123",
|
||
"memories": [
|
||
{
|
||
"id": "mem_1",
|
||
"memory": "John prefers dark mode",
|
||
"isStatic": false,
|
||
"createdAt": "2025-01-15T10:30:00.000Z"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
| Field | Type | Description |
|
||
|-------|------|-------------|
|
||
| `documentId` | string \| null | ID of the lightweight source document created for traceability |
|
||
| `memories` | array | The created memory entries |
|
||
| `memories[].id` | string | Unique memory ID |
|
||
| `memories[].memory` | string | The memory content |
|
||
| `memories[].isStatic` | boolean | Whether this is a permanent trait |
|
||
| `memories[].createdAt` | string | ISO 8601 timestamp |
|
||
|
||
<Tip>
|
||
**When to use this vs [Add Context](/add-memories)?**
|
||
|
||
Use **Create Memories** when you already know the exact facts to store (user preferences, traits, structured data). Use **Add Context** when you have raw content (conversations, documents, URLs) that Supermemory should process and extract memories from.
|
||
</Tip>
|
||
|
||
---
|
||
|
||
## Forget Memory
|
||
|
||
Soft-delete a memory — excluded from search results but preserved in the system. Use this when you might want to restore later.
|
||
|
||
<Tabs>
|
||
<Tab title="fetch">
|
||
```typescript
|
||
await fetch("https://api.supermemory.ai/v4/memories/mem_abc123/forget", {
|
||
method: "POST",
|
||
headers: {
|
||
"Authorization": `Bearer ${API_KEY}`
|
||
}
|
||
});
|
||
```
|
||
</Tab>
|
||
<Tab title="cURL">
|
||
```bash
|
||
curl -X POST "https://api.supermemory.ai/v4/memories/mem_abc123/forget" \
|
||
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
|
||
```
|
||
</Tab>
|
||
</Tabs>
|
||
|
||
The memory will no longer appear in search results but remains in the database.
|
||
|
||
---
|
||
|
||
## Update Memory (Versioned)
|
||
|
||
Update a memory by creating a new version. The original is preserved with `isLatest=false`.
|
||
|
||
<Tabs>
|
||
<Tab title="fetch">
|
||
```typescript
|
||
await fetch("https://api.supermemory.ai/v4/memories", {
|
||
method: "PATCH",
|
||
headers: {
|
||
"Authorization": `Bearer ${API_KEY}`,
|
||
"Content-Type": "application/json"
|
||
},
|
||
body: JSON.stringify({
|
||
// Identify by ID or content
|
||
id: "mem_abc123",
|
||
// content: "Original content to match",
|
||
|
||
newContent: "Updated content goes here",
|
||
metadata: {
|
||
tags: ["updated"]
|
||
}
|
||
})
|
||
});
|
||
```
|
||
</Tab>
|
||
<Tab title="cURL">
|
||
```bash
|
||
curl -X PATCH "https://api.supermemory.ai/v4/memories" \
|
||
-H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"id": "mem_abc123",
|
||
"newContent": "Updated content goes here",
|
||
"metadata": {"tags": ["updated"]}
|
||
}'
|
||
```
|
||
</Tab>
|
||
</Tabs>
|
||
|
||
### Parameters
|
||
|
||
| Parameter | Type | Required | Description |
|
||
|-----------|------|----------|-------------|
|
||
| `id` | string | * | Memory ID to update |
|
||
| `content` | string | * | Original content to match (alternative to ID) |
|
||
| `newContent` | string | yes | New content for the memory |
|
||
| `metadata` | object | no | Updated metadata |
|
||
|
||
\* Either `id` or `content` must be provided.
|
||
|
||
---
|
||
|
||
## Next Steps
|
||
|
||
- [Document Operations](/document-operations) — Manage documents (SDK supported)
|
||
- [Search](/search) — Query your memories
|
||
- [Ingesting Content](/add-memories) — Add new content
|