Skip to main content

At a glance

Memory space

A space is where the memories for a specific application or context live. Your organization can hold many spaces, and each is fully isolated from the others. You create a space with a name, and that name is its permanent space_id, the identifier every other call takes. Nothing separate is generated, and space_id is not a field you can send on create.
Reference: Spaces API

Scope

A space is the coarse boundary. Scope partitions it, so a single space serves many end users without their memories mixing:
Do not create a space per end user. Spaces are capped per plan, and memories in different spaces can never be synthesized together, so you would lose exactly the cross-user view you built a memory layer for. One space plus user_id is the pattern. Scoping is strict: a scoped search returns only memories written under that same scope, never another user’s, and never unscoped ones. Consolidated memories are built per user, so a synthesis cannot mix two users’ facts. Reference: Scoping

Record

Storing a memory is not a plain insert. The content is analyzed, its durable facts are extracted, and the result is embedded and indexed for semantic search.
Reference: Memories API

Retrieve

Retrieve finds memories by meaning rather than keyword overlap, and returns them ranked by relevance with their entities and event time attached.
Reference: Retrieve API

Reason

Reason runs an agentic pass over the space, connecting related facts and weighing recency, and returns one synthesized answer instead of a ranked list.
Reference: Reason API

API key

Every request carries Authorization: Bearer <key>. Keys are created and revoked from the dashboard under API keys, or through the API Keys endpoints. The full key is shown once at creation; afterwards only its prefix is visible. Reference: Authentication

Tenant isolation

Each organization’s memories live in a dedicated database schema, with no shared tables. A space_id belonging to one organization is both meaningless and inaccessible to another. The boundary is enforced twice: as an authorization check at the gateway, and again at the database layer.

Next steps

API overview

The full endpoint surface in one table.

Python SDK

Client library reference.