MemNexus
GuidesUsing the SDK

Memory Operations

Create, update, search, and manage memories with the TypeScript SDK.

The SDK provides full CRUD operations for memories, conversations, facts, topics, and entities. Every example below assumes an initialized client:

import { Memnexus } from "@memnexus-ai/typescript-sdk";

const client = new Memnexus({
  token: process.env.MX_API_KEY,
});

Service methods return an HttpResponse wrapper — the payload is at response.data?.data.

Creating memories

Every memory belongs to a conversation, so conversationId is required. Create the conversation first, then attach memories to it.

// Create a new conversation
const convResponse = await client.conversations.createConversation({
  title: "API Rate Limiting Implementation",
});
const conversationId = convResponse.data?.data?.id;
if (!conversationId) throw new Error("conversation creation failed");

// Create a memory in that conversation
const response = await client.memories.createMemory({
  conversationId,
  content: "Starting rate limiting feature. Will use token bucket algorithm.",
  topics: ["rate-limiting", "architecture"],
});

console.log("Created:", response.data?.data?.id);

// Add more memories to the same conversation
await client.memories.createMemory({
  conversationId,
  content: "Rate limiting middleware complete. 100 req/min default.",
  topics: ["rate-limiting", "implementation"],
});

Retrieving memories

Get a single memory

const response = await client.memories.getMemoryById("mem_abc123");
console.log(response.data?.data?.content);
console.log(response.data?.data?.topics);

List memories

const response = await client.memories.listMemories({
  page: 0,
  limit: 20,
});

for (const memory of response.data?.data ?? []) {
  console.log(memory.content);
}

Batch get

const response = await client.memories.getMemoriesBatch({
  ids: ["mem_abc123", "mem_def456", "mem_ghi789"],
});

Updating memories

await client.memories.updateMemory("mem_abc123", {
  content: "Updated: Deployed v1.26.3 with additional fixes.",
});

Deleting memories

await client.memories.deleteMemory("mem_abc123");

Working with facts

Facts are structured knowledge as subject-predicate-object triples:

// Create a fact
const response = await client.facts.createFact({
  subject: "MemNexus",
  predicate: "built_with",
  object: "Node.js",
});

// Search facts
const facts = await client.facts.searchFacts({
  query: "Node.js",
});

// List facts
const allFacts = await client.facts.listFacts({ limit: 50, offset: 0 });

Working with conversations

// List recent conversations
const conversations = await client.conversations.listConversations({
  limit: 10,
});

// Get conversation details
const conv = await client.conversations.getConversationSummary("conv_abc123");

// Get conversation timeline
const timeline = await client.conversations.getConversationTimeline("conv_abc123");

Working with topics

// List topics
const topics = await client.topics.listTopics();

// Discover related topics
const related = await client.topics.discoverRelatedTopics({
  topicId: "topic_abc123",
});

// Cluster topics
const clusters = await client.topics.clusterTopics({
  body: { minClusterSize: 5 },
});

Pagination pattern

All list operations return paginated results:

async function getAllMemories() {
  const memories = [];
  let page = 0;
  let hasMore = true;

  while (hasMore) {
    const response = await client.memories.listMemories({ page, limit: 100 });
    const batch = response.data?.data ?? [];
    memories.push(...batch);
    hasMore = batch.length === 100;
    page++;
  }

  return memories;
}

Next steps