Skip to main content
POST
Recall preferences (memories)

When to use it

/recall/recall_preferences retrieves user-specific context that was ingested via POST /memories/add_memory. Use it when your agent needs to:
  • Personalize responses based on user preferences
  • Recall past conversations with the user
  • Surface user notes or settings relevant to the current task
The request and response shapes are identical to POST /recall/full_recall – the only difference is which collection is searched. Use full_recall for documents and knowledge, recall_preferences for user memories.

Endpoint

  • Auth: Bearer token
  • Idempotency: Read-only
  • Async: No

Example

Request parameters

Identical to POST /recall/full_recall. The most important ones for memory recall:

Sub-tenant scoping

For B2C apps, sub-tenants typically map to end users:
Without sub_tenant_id, the search runs against the default sub-tenant – which is rarely what you want for personalized recall.

Metadata filters on memories

POST /recall/recall_preferences shares RecallSearchRequest with POST /recall/full_recall in OpenAPI. The canonical metadata_filters contract is defined on that schema in api-reference/openapi.json and summarized under Full recall → Metadata filters.

Response

Same shape as POST /recall/full_recall. The chunks[] array contains memory chunks; sources[] contains the originating memory items.

Behavior notes

Pass sub_tenant_id explicitly for B2C apps. Personalized recall only works when memories are scoped to the right user. Omitting sub_tenant_id falls back to the default sub-tenant.
thinking mode is especially valuable for memories. Memory recall benefits from query expansion because user preferences are often phrased indirectly (“I like X” → recall “user prefers X”).
  • For documents and knowledge: Full recall – same shape, targets the knowledge collection
  • Ingest memories: Add memory – store memories before they can be recalled
  • For exact-match memory search: Boolean recall – set search_mode: "memories"

Errors

Common codes: 400 INVALID_PARAMETERS, 404 TENANT_NOT_FOUND, 422 VALIDATION_ERROR, 429 RATE_LIMITED. See Error Responses for the full list. Read more: Essentials → Memories · Essentials → Recall

How to use API Results

Recall responses are chunks of data from knoledge, memory and graph relations in structured JSON. To extract context, we parse the data out of the response strucutre and feed it in prose to an LLM. For further details, explore Essentials → How to Use API Results.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Request body for full recall (sources) and recall preferences (memories).

tenant_id
string
required

Unique identifier for the tenant/organization

Example:

"tenant_1234"

query
string
required

Search terms to find relevant content

Example:

"Which mode does user prefer"

sub_tenant_id
string | null

Optional sub-tenant identifier used to organize data within a tenant. If omitted, the default sub-tenant created during tenant setup will be used.

Example:

"sub_tenant_4567"

max_results
integer | null

Maximum number of results to return

mode
enum<string>
default:fast

Retrieval mode to use ('fast' or 'thinking')

Available options:
fast,
thinking
alpha
default:0.8

Search ranking algorithm parameter (0.0-1.0 or 'auto')

recency_bias
number
default:0

Preference for newer content (0.0 = no bias, 1.0 = strong recency preference)

Example:

1

graph_context
boolean
default:false

Enable graph context for search results

Example:

true

search_forceful_relations
boolean
default:true

Whether to search for forceful relations in thinking mode to augment context

Example:

true

additional_context
string | null

Additional context provided by the user to guide retrieval

metadata_filters
Metadata Filters · object | null

Optional object for exact-match metadata scoping. All provided conditions are combined with AND. Top-level keys (except the reserved nested object described below) must match tenant-level metadata field names declared with enable_match in tenant_metadata_schema; each value is compared with plain equality to the stored tenant metadata value for that field. For document-level metadata, supply a nested object under the key "additional_metadata" whose keys and values are compared with plain equality to per-source document metadata. Only equality on scalar-compatible values is part of this contract—do not send range operators, regular-expression operators, or Mongo-style operators such as $gte, $lt, $in, or $regex.

Example:

Response

Successful Response

Result of a hybrid search retrieval operation.

chunks
VectorStoreChunk · object[]
Example:
sources
SourceInfo · object[]

Deduplicated source documents corresponding to the returned chunks

graph_context
GraphContext · object

Graph context containing query-based paths and chunk-based relation paths.

additional_context
Additional Context · object

Map of chunk_uuid to VectorStoreChunk for extra context from forcefully related sources. Use chunk.extra_context_ids to look up chunks: extra_context[id] for id in chunk.extra_context_ids.