You can think of these as a dynamic compaction that’s done by supermemory in real-time.This profile should be injected into the agent context for truly personalized experiences. To read more, visit User profiles - Concept Get a user’s profile — their static facts and dynamic context — with a single API call. One profile per
namespace (what v3/v4 called a container tag).
Quick start
- TypeScript
- Python
- cURL
static and dynamic are always returned. Each entry is { id, memory }; the id is the memory ID, so you can forget a profile entry directly.
Profile + search
The v5 profile call takes no query. When you also need query-ranked memories, run a search next to it:- TypeScript
- Python
Parameters
namespace is a top-level key (URL path). body is optional and accepts only filter and buckets.
Filtering profiles
Profiles support the same metadata filter assearch and list — filter narrows which memories are eligible to contribute to static, dynamic, and buckets.
- TypeScript
- Python
- cURL
filter with buckets to scope both the profile synthesis and the bucket section in one call:
eq/neq, contains/notContains, numeric comparisons, arrayContains, and nested and/or.
Building prompts
The most common pattern — inject profile into your LLM’s system prompt:Full context pattern
Get profile + query-specific memories:Profile buckets
Buckets are custom topical categories for a profile — an axis that sits alongsidestatic and dynamic, grouping facts by subject (e.g. preferences, goals,
work) instead of by how long-lived they are.
Profile Buckets
Read and configure buckets — request bucketed profiles, create namespace buckets,
and see validation limits.
Framework examples
Express.js middleware
Express.js middleware
Next.js API route
Next.js API route
AI SDK integration
AI SDK integration
Response schema
Next steps
- Profile Buckets — Custom topical categories for profiles
- User Profiles Concept — Understand static vs dynamic
- Ingesting Content — Build profiles by adding content
- AI SDK Integration — Automatic profile injection