Skip to main content
Supermemory provides two ways to organize your memories:

Namespaces

Organize memories into isolated spaces by user, project, or workspace

Metadata filtering

Query memories by custom properties like category, status, or date
Both can be used independently or together for precise filtering.

Namespaces

Namespaces create isolated memory spaces. Use them to separate memories by user, project, or any logical boundary. The namespace is part of the URL (/ns/{namespace}/...), so every SDK call takes it as a top-level key.

Adding Memories to a Namespace

Searching a Namespace

Each search is scoped to a single namespace. Passing namespace: "user_123" restricts results to memories stored in that namespace.
The namespace is a path parameter on every v5 call (add, search, list, profile, documents.*). There is no array form; one request touches one namespace.

Metadata

Metadata lets you attach custom properties to memories and filter by them later.

Adding memories with metadata

Searching with a Filter

A filter is a typed expression. One condition is an object with field, operator, and value. Several conditions are combined with an and or or node that lists them in operands:
A single condition needs no wrapper:

Operators

String conditions accept an optional caseSensitive boolean. Numeric values are JSON numbers, not numeric strings.

Combining filters

Nest and and or nodes for complex queries:

Excluding results

Use the negative operators (neq, notContains, arrayNotContains) to exclude matches:
Substring match, case-insensitive:
Numeric comparisons:
Array membership:
Complex nested filters:
User’s work documents from 2024:
Team meeting notes with specific participants:
Exclude drafts and deprecated content:
The same filter expression works on list and profile calls:

Quick reference

When adding memories

When searching

Metadata key rules

  • Allowed characters: a-z, A-Z, 0-9, _, -, .
  • Max length: 64 characters
  • No spaces or special characters
  • Keys are literal: customer.plan is one key named customer.plan, not a nested path

Query complexity limits

  • Maximum 5 levels of nested and/or expressions
  • Maximum 200 operands per logical group
If you need more conditions than these limits allow, break your query into multiple requests or use broader search terms with post-processing.

Reading One Document’s Chunks

Scoping a search to a single document (docId) is not part of v5. To work with the chunks of one long document, fetch the document with its chunks attached:

Next steps

Search

Apply filters in search queries

Add Memories

Add content with namespaces and metadata