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.
Quick Start
- TypeScript
- Python
- cURL
Profile + Search
Get profile and search results in one call by adding theq parameter:
- TypeScript
- Python
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
containerTag | string | Yes | User/project identifier |
q | string | No | Search query (includes search results in response) |
threshold | 0-1 | No | Filter search results by relevance score |
filters | object | No | Metadata filters applied to profile and search results |
include | string[] | No | Sections to return — any of "static", "dynamic", "buckets". Omit to return all |
buckets | string[] | No | Restrict the buckets section to specific keys. Omit for all configured buckets |
Building Prompts
The most common pattern — inject profile into your LLM’s system prompt:Full Context Pattern
Get profile + query-specific memories in one call:Profile Buckets
Buckets are custom topical categories for a profile — an axis that sits alongsidestatic and dynamic. Where static/dynamic split facts by how long-lived they are,
buckets group them by subject (e.g. preferences, goals, work). As content is
ingested, a classifier assigns each memory to the buckets it matches, so you can pull
just the slice of context a given surface needs.
Every org starts with a built-in preferences bucket. You can define your own at the
organization or space level in your console settings; space-level buckets are
add-only — a container tag inherits all org buckets and may add more, but cannot
disable them.
Requesting buckets
Passinclude: ["buckets"] to return bucket-organized memories, and optionally
buckets to limit the response to specific keys. include also lets you skip
sections you don’t need — ["buckets"] alone omits static and dynamic.
- fetch
- cURL
[Recent] and [Summary] labels. To keep profiles dense, an entity’s older
memories are periodically aggregated into a short synthesis. Entries prefixed
[Summary] are that aggregated context; entries prefixed [Recent] were ingested
since the last aggregation and aren’t summarized yet. The dynamic section uses the
same [Recent] prefix (plus a [YYYY-MM-DD] date). Strip the prefixes if you only
want raw text, or keep them to signal recency to your model.List bucket definitions
To see which buckets are configured for a container tag (org buckets merged with any space-level additions), call/v4/profile/buckets:
- fetch
- cURL
| Field | Type | Description |
|---|---|---|
buckets[].key | string | Stable slug, also stored on each memory. Lowercase alphanumeric with -/_, 1–64 chars |
buckets[].description | string | What belongs in the bucket — guides the ingestion classifier |
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
- User Profiles Concept — Understand static vs dynamic
- Ingesting Content — Build profiles by adding content
- AI SDK Integration — Automatic profile injection