static 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 level, add more at the space (container tag) level, or get AI-generated suggestions — all covered below.
Reading buckets
Requesting bucketed profiles
Passinclude: ["buckets"] to /v4/profile 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
This endpoint requires only that the caller belongs to the org — any role, and any API key (scoped keys included) can read bucket definitions.
Creating and configuring buckets
Bucket definitions live at two levels: organization (the default set every container tag gets) and space (per-container-tag additions). Both are configured through the settings API — there’s no console-only path; these are regular authenticated endpoints.Organization-level buckets
PATCH /v3/settings sets the org’s bucket list. The profileBuckets array replaces the entire stored list — it’s not a merge, so always send the full set you want.
- fetch
- cURL
GET /v3/settings returns the current org settings, including profileBuckets, without changing anything.
Space (container tag) buckets
PATCH /v3/container-tags/{containerTag} sets a container tag’s own bucket list. These are add-only on top of org buckets — a tag always keeps every org bucket, and if a space bucket’s key collides with an org bucket, the org’s definition wins in the merged, effective set used at ingestion and read time.
- fetch
- cURL
Like the org endpoint, this replaces the tag’s own bucket list, not the merged/effective set —
profileBuckets in the response is only what this space added, not the org buckets it inherits. Call /v4/profile/buckets to see the merged, effective list for a tag.AI-generated suggestions
POST /v3/settings/suggest-buckets returns 3–6 bucket suggestions tailored to your org, generated from the filterPrompt already configured in your org settings. It doesn’t save anything — pass the results into the PATCH /v3/settings call above to apply them.
- fetch
- cURL
Starter presets
If you’d rather start from a template than write descriptions from scratch, these are the same presets available in the console UI:Default bucket
If neither the org nor the space has configured any buckets, ingestion falls back to a single built-inpreferences bucket, scoped tightly to explicit first-person statements (“prefers X over Y”, “always uses W”) — not inferred traits or general observations. Configuring your own buckets replaces this default.
Validation & limits
Configure
Instructions
Bucketdescriptions only steer classification within a bucket — they don’t tell the model anything about the space itself. For that, set entityContext on the container tag: a free-text field that’s appended alongside filterPrompt into the same prompt the extraction/classification step uses, so it shapes bucket assignment too, not just fact extraction.
PATCH /v3/container-tags/{containerTag}:
- fetch
- cURL
You can also set
entityContext inline when adding content, via entityContext on POST /v4/memories — useful if you don’t want a separate settings call.
Model selection
The model behind extraction and bucket classification isn’t configurable through the API on supermemory Cloud — it’s managed for you. If you’re self-hosting, you choose the provider and model yourself via environment variables (OPENAI_MODEL and related) — see Self-hosting Configuration.
Next Steps
- User Profiles — Fetch and use profiles via the API
- User Profiles Concept — Static vs dynamic vs buckets
- Container Tags — How spaces and container tags work