Update Memory - Mem0

Keep Memories Accurate with Update

Mem0’s update operation lets you fix or enrich an existing memory without deleting it. When a user changes their preference or clarifies a fact, use update to keep the knowledge base fresh.

Key terms

How the update flow works

  1. Locate the memory
    Use search or dashboard inspection to capture the memory_id you want to change.

  2. Submit the update
    Call update (or batch_update) with new text and optional metadata. Mem0 overwrites the stored value and adjusts indexes.

  3. Verify
    Check the response or re-run search to ensure the revised memory appears with the new content.

Single memory update (Platform)

Python

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

memory_id = "your_memory_id"
client.update(
    memory_id=memory_id,
    text="Updated memory content about the user",
    metadata={"category": "profile-update"},
    timestamp="2025-01-15T12:00:00Z"
)

JavaScript

import MemoryClient from 'mem0ai';

const client = new MemoryClient({ apiKey: "your-api-key" });
const memory_id = "your_memory_id";

await client.update(memory_id, {
  text: "Updated memory content about the user",
  metadata: { category: "profile-update" },
  timestamp: "2025-01-15T12:00:00Z"
});

Expect a confirmation message and the updated memory to appear in the dashboard almost instantly.

Batch update (Platform)

Update up to 1000 memories in one call.

Python

from mem0 import MemoryClient

client = MemoryClient(api_key="your-api-key")

update_memories = [
    {"memory_id": "id1", "text": "Watches football"},
    {"memory_id": "id2", "text": "Likes to travel"}
]

response = client.batch_update(update_memories)
print(response)

JavaScript

import MemoryClient from 'mem0ai';

const client = new MemoryClient({ apiKey: "your-api-key" });

const updateMemories = [
  { memoryId: "id1", text: "Watches football" },
  { memoryId: "id2", text: "Likes to travel" }
];

client.batchUpdate(updateMemories)
  .then(response => console.log('Batch update response:', response))
  .catch(error => console.error(error));

Update with Mem0 OSS

Python

from mem0 import Memory

memory = Memory()

# Replace the content
memory.update(
    memory_id="mem_123",
    text="Alex now prefers decaf coffee",
)

# Update content plus metadata and an expiration date (None clears it)
memory.update(
    memory_id="mem_123",
    text="Alex now prefers decaf coffee",
    metadata={"category": "preferences"},
    expiration_date="2030-01-31",
)

JavaScript

import { Memory } from "mem0ai/oss";

const memory = new Memory();

// Replace the content
await memory.update("mem_123", { text: "Alex now prefers decaf coffee" });

// Update content plus metadata and an expiration date (null clears it)
await memory.update("mem_123", {
  text: "Alex now prefers decaf coffee",
  metadata: { category: "preferences" },
  expirationDate: "2030-01-31",
});

// Update metadata only, leaving the stored text untouched
await memory.update("mem_123", { metadata: { category: "preferences" } });

In both OSS SDKs the content is optional: pass only metadata and/or an expiration date to update those while keeping the existing content. At least one of the three must be provided, otherwise the call raises.

data is a deprecated alias for text in both OSS SDKs (data= in Python, { data: ... } in JavaScript). It still works but logs a warning; prefer text. In JavaScript, passing a bare string is shorthand for { text }, so update(memoryId, "new text") also still works.

Tips

MCP Alternative: With Mem0 MCP, AI agents can update their own memories when users correct information.

Managed vs OSS differences

Capability Mem0 Platform Mem0 OSS
Update call client.update(memory_id, {...}) memory.update(memory_id, text=...)
Batch updates client.batch_update (up to 1000 memories) Script your own loop or bulk job
Dashboard visibility Inspect updates in the UI Inspect via logs or custom tooling
Immutable handling Returns descriptive error Raises exception: delete and re-add

Put it into practice

See it live