Skip to main content

Memory API

The Memory API provides methods to manage conversation threads and message history in Mastra.

Get All Threads

Retrieve all memory threads for a specific resource:

const threads = await mastraClient.getMemoryThreads({
resourceId: "resource-1",
agentId: "agent-1",
});

Create a New Thread

Create a new memory thread:

const thread = await mastraClient.createMemoryThread({
title: "New Conversation",
metadata: { category: "support" },
resourceId: "resource-1",
agentId: "agent-1",
});

Working with a Specific Thread

Get an instance of a specific memory thread:

const thread = mastraClient.getMemoryThread({ threadId: "thread-id", agentId: "agent-id" });

Thread Methods

Get Thread Details

Retrieve details about a specific thread:

const details = await thread.get();

Update Thread

Update thread properties:

const updated = await thread.update({
title: "Updated Title",
metadata: { status: "resolved" },
resourceId: "resource-1",
});

Delete Thread

Delete a thread and its messages:

await thread.delete();

Message Operations

Save Messages

Save messages to memory:

const savedMessages = await mastraClient.saveMessageToMemory({
messages: [
{
role: "user",
content: "Hello!",
id: "1",
threadId: "thread-1",
resourceId: "resource-1",
createdAt: new Date(),
format: 2,
},
],
agentId: "agent-1",
});

Retrieve Thread Messages

Get messages associated with a memory thread:

// Get all messages in the thread (paginated)
const result = await thread.listMessages();
console.log(result.messages); // Array of messages
console.log(result.total); // Total count
console.log(result.hasMore); // Whether more pages exist

// Get messages with pagination
const result = await thread.listMessages({
page: 0,
perPage: 20
});

// Get messages with ordering
const result = await thread.listMessages({
orderBy: { field: 'createdAt', direction: 'ASC' }
});

Delete Messages

Delete one or more messages from a thread:

// Delete a single message
const result = await thread.deleteMessages("message-id");

// Delete multiple messages
const result = await thread.deleteMessages([
"message-1",
"message-2",
"message-3",
]);

// Returns: { success: true, message: "Message deleted successfully" }

Get Memory Status

Check the status of the memory system:

const status = await mastraClient.getMemoryStatus("agent-id");