API reference · 14 endpoints
Memory
Commit, search, and illuminate, plus memory listing, decisions, tags, and the knowledge graph.
- POSTCommit memories
- POSTSearch memory
- POSTIlluminate and generate answer
- GETList memory units
- GETGet memory unit
- DELETEClear memory namespace memories
- GETList tags
- GETGet memory graph data
- POSTReconcile standing decisions
- POSTSupersede a decision
- DELETERevive a decision
- GETGet decision lineage
- GETGet signal history
- DELETEClear signals for a memory
/v1/default/namespaces/{namespace_id}/memoriesCommit memories
Commit memory items with automatic fact extraction.
This is the main endpoint for storing memories.
Features:
- Efficient batch processing
- Automatic fact extraction from natural language
- Entity recognition and linking
- Document tracking with automatic upsert (when document_id is provided)
- Temporal and semantic linking
The system automatically:
- Extracts semantic facts from the content
- Generates embeddings
- Deduplicates similar facts
- Creates temporal, semantic, and entity links
- Tracks document metadata
Processing is asynchronous. The response carries an operation_id; poll GET /v1/default/namespaces/{namespace_id}/operations/{operation_id} to know when the facts are searchable. The async field is accepted for compatibility and ignored.
Note: If a memory item has a document_id that already exists, the old document and its memory units will be deleted before creating new ones (upsert behavior).
Parameters
namespace_idstringpathrequiredRequest body · application/json
itemsMemoryItem[]requiredcontentstringrequiredtimestampstring (date-time) | stringWhen the content occurred. Accepts an ISO 8601 datetime string (e.g. '2024-01-15T10:30:00Z'), null/omitted (defaults to now), or the special string 'unset' to explicitly store without any timestamp (use this for timeless content such as fictional documents or static reference material).
contextstring | nullmetadatamap<string, string>document_idstring | nullOptional document ID for this memory item.
entitiesEntityInput[]Optional entities to combine with auto-extracted entities.
textstringrequiredThe entity name/text
typestring | nullOptional entity type (e.g., 'PERSON', 'ORG', 'CONCEPT')
tagsstring[]Optional tags for visibility scoping. Memories with tags can be filtered during search.
signal_scopes"per_tag" | "combined" | "all_combinations" | string[][]How to scope signals during consolidation. 'per_tag' runs one consolidation pass per individual tag, creating separate signals for each tag. 'combined' (default) runs a single pass with all tags together. A list of tag lists runs one pass per inner list, giving full control over which combinations to use.
strategystring | nullNamed commit strategy for this item. Overrides the namespace's default strategy for this item only. Strategies are defined in the namespace config under 'commit_strategies'.
update_mode"replace" | "append"How to handle an existing document with the same document_id. 'replace' (default) deletes old data and reprocesses from scratch. 'append' concatenates new content to the existing document text and reprocesses.
fact_type"knowledge" | "experience" | "decision"Optional fact-type override: every fact extracted from this item is stored with this type ('knowledge', 'experience', or 'decision', never 'signal'). The deterministic "record this decision" path; omit to let the LLM classify.
asyncbooleandeprecateddefault falseIgnored; commit is always asynchronous. Poll the returned operation_id via GET /v1/default/namespaces/{namespace_id}/operations.
document_tagsstring[]deprecatedDeprecated. Use item-level tags instead.
/v1/default/namespaces/{namespace_id}/memories/searchSearch memory
Search memory using semantic similarity and spreading activation.
types is optional; each entry must be one of:
knowledge: General knowledge about people, places, events, and things that happenexperience: Memories about experience, conversations, actions taken, and tasks performedsignal: Consolidated patterns, preferences, and lessons drawn from accumulated evidencedecision: Durable commitments and choices
Omit types to search all four.
Parameters
namespace_idstringpathrequiredRequest body · application/json
querystringrequiredtypesstring[]List of fact types to search: 'knowledge', 'experience', 'signal', 'decision'. Defaults to knowledge, experience, signal, and decision if not specified on the public search endpoint.
budgetBudgetdefault "mid"Budget levels for search/illuminate operations.
max_tokensintegerdefault 4096tracebooleandefault falsequery_timestampstring | nullISO format date string (e.g., '2023-05-30T23:40:00'). Used as the query-time anchor for relative temporal expressions and recency scoring.
includeIncludeOptionsdefault {}Options for including additional data (entities are included by default)
entitiesEntityIncludeOptionsdefault {"max_tokens":500}Include entity signals. Set to null to disable entity inclusion.
max_tokensintegerdefault 500Ignored. Search returns entity names and ids only, so there are no entity signal tokens to budget.
chunksChunkIncludeOptionsInclude raw chunks. Set to {} to enable, null to disable (default: disabled).
max_tokensintegerdefault 8192Maximum tokens for chunks (chunks may be truncated)
source_factsSourceFactsIncludeOptionsInclude source facts for signal-type results. Set to {} to enable, null to disable (default: disabled).
max_tokensintegerdefault 4096Maximum total tokens for source facts across all signals (-1 = unlimited)
max_tokens_per_signalintegerdefault -1Maximum tokens of source facts per signal (-1 = unlimited)
tagsstring[]Filter memories by tags. If not specified, all memories are returned.
tags_match"any" | "all" | "any_strict" | "all_strict"default "any"How to match tags: 'any' (OR, includes untagged), 'all' (AND, includes untagged), 'any_strict' (OR, excludes untagged), 'all_strict' (AND, excludes untagged).
tag_groupsTagGroupLeaf | TagGroupAnd | TagGroupOr | TagGroupNot[]Compound tag filter using boolean groups. Groups in the list are AND-ed. Each group is a leaf {tags, match} or compound {and: [...]}, {or: [...]}, {not: ...}.
tagsstring[]requiredmatch"any" | "all" | "any_strict" | "all_strict"default "any_strict"as_ofstring | nullDecision time-travel: ISO timestamp (same forms as query_timestamp). Decision results resolve their supersession chain to the node standing as of this time; non-decision results are untouched.
include_invalidatedbooleandefault falseReturn facts whose validity interval has closed (superseded or contradicted) alongside the standing ones. Inert unless the namespace has enable_validity_filter on, since nothing is dropped otherwise.
entity_classstring | nullRestrict the graph retrieval arm's entity expansion to entities of this ontology class (case-insensitive name). Other arms are unaffected.
/v1/default/namespaces/{namespace_id}/illuminateIlluminate and generate answer
Illuminate and formulate an answer using namespace identity, knowledge, and synthesized signals.
This endpoint:
- Retrieves experiences (conversations and events)
- Retrieves knowledge relevant to the query
- Retrieves signals synthesized by consolidation
- Uses LLM to formulate a contextual answer
- Returns plain text answer and the facts used
Parameters
namespace_idstringpathrequiredRequest body · application/json
querystringrequiredbudgetBudgetdefault "low"Budget levels for search/illuminate operations.
contextstring | nullExtra context for this conclusion. It is injected as an 'Additional Context' section of the agent's system prompt, not appended to the query, and is capped at 4000 tokens.
max_tokensintegerdefault 4096Maximum tokens for the response
includeIlluminateIncludeOptionsOptions for including additional data (disabled by default)
factsFactsIncludeOptionsInclude facts that the answer is based on. Set to {} to enable, null to disable (default: disabled).
tool_callsToolCallsIncludeOptionsInclude tool calls trace. Set to {} for full trace (input+output), {output: false} for inputs only.
outputbooleandefault trueInclude tool outputs in the trace. Set to false to only include inputs (smaller payload).
response_schemaobject | nullOptional JSON Schema for structured output. When provided, the response will include a 'structured_output' field with the LLM response parsed according to this schema.
tagsstring[]Filter memories by tags during conclusion. If not specified, all memories are considered.
tags_match"any" | "all" | "any_strict" | "all_strict"default "any"How to match tags: 'any' (OR, includes untagged), 'all' (AND, includes untagged), 'any_strict' (OR, excludes untagged), 'all_strict' (AND, excludes untagged).
tag_groupsTagGroupLeaf | TagGroupAnd | TagGroupOr | TagGroupNot[]Compound tag filter using boolean groups. Groups in the list are AND-ed. Each group is a leaf {tags, match} or compound {and: [...]}, {or: [...]}, {not: ...}.
tagsstring[]requiredmatch"any" | "all" | "any_strict" | "all_strict"default "any_strict"fact_types"knowledge" | "experience" | "signal" | "decision" | "procedure"[]Filter which fact types are retrieved during illuminate. None means all types (knowledge, experience, signal, decision).
exclude_automationsbooleandefault falseIf true, exclude all automations from the illuminate loop (skip search_automations tool).
exclude_automation_idsstring[]Exclude specific automations by ID from the illuminate loop.
llm_output_languagestring | nullLanguage the answer must be written in (e.g. 'en', 'fr'). Overrides the namespace's llm_output_language config; when neither is set the answer follows the language of the query.
/v1/default/namespaces/{namespace_id}/memories/listList memory units
List memory units with pagination and optional full-text search. Supports filtering by type. Results are sorted by most recent first (mentioned_at DESC, then created_at DESC).
Parameters
namespace_idstringpathrequiredtype"knowledge" | "experience" | "signal" | "decision" | "procedure"queryqstring | nullqueryconsolidation_statestring | nullquerystatus"standing" | "superseded"queryorder"asc" | "desc"querysincestring (date-time) | nullqueryuntilstring (date-time) | nullquerylimitintegerqueryoffsetintegerquery/v1/default/namespaces/{namespace_id}/memories/{memory_id}Get memory unit
Get a single memory unit by ID with all its metadata including entities and tags. Note: the 'history' field is deprecated and always returns an empty list - use GET /memories/{memory_id}/history instead.
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequired/v1/default/namespaces/{namespace_id}/memoriesClear memory namespace memories
Delete memory units for a memory namespace. Optionally filter by type (knowledge, experience, signal, decision) to delete only specific types. This is a destructive operation that cannot be undone. The namespace profile (disposition and background) will be preserved.
Parameters
namespace_idstringpathrequiredtypestring | nullqueryOptional fact type filter (knowledge, experience, signal, decision)
/v1/default/namespaces/{namespace_id}/graphGet memory graph data
Retrieve graph data for visualization, optionally filtered by type (knowledge/experience/signal/decision).
Parameters
namespace_idstringpathrequiredtypestring | nullquerylimitintegerqueryqstring | nullquerytagsstring[]querytags_matchstringquerydocument_idstring | nullquerychunk_idstring | nullquery/v1/default/namespaces/{namespace_id}/decisions/reconcileReconcile standing decisions
On-demand sweep pairing the namespace's standing decisions and marking supersessions commit-time detection missed. Capped per invocation; repeated calls converge. Billable LLM pairing.
Parameters
namespace_idstringpathrequired/v1/default/namespaces/{namespace_id}/memories/{memory_id}/supersedeSupersede a decision
Manually mark a standing decision as superseded by another standing decision. Writes the same supersedes link, metadata, and history event as commit-time detection, with source "manual".
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequiredRequest body · application/json
superseded_bystring (uuid)requiredId of the standing decision that replaces this one.
/v1/default/namespaces/{namespace_id}/memories/{memory_id}/supersedeRevive a decision
Undo a supersession: restore the decision to standing (lifecycle metadata keys are removed), delete the incoming supersedes link, and append a revived history event.
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequired/v1/default/namespaces/{namespace_id}/memories/{memory_id}/lineageGet decision lineage
Walk the supersession chain through a memory unit, both directions, returning the ordered chain (newest first), the standing head, and optionally which decision was standing at as_of.
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequiredas_ofstring (date-time) | nullquery/v1/default/namespaces/{namespace_id}/memories/{memory_id}/historyGet signal history
Get the full history of a signal, with each change's source facts resolved to their text.
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequired/v1/default/namespaces/{namespace_id}/memories/{memory_id}/signalsClear signals for a memory
Delete all signals derived from a specific memory and reset it for re-consolidation. The memory itself is not deleted. A consolidation job is triggered automatically so the memory will produce fresh signals on the next consolidation run.
Parameters
namespace_idstringpathrequiredmemory_idstringpathrequired