Remember from a conversation: submit your model's facts
Stores the facts in one transaction. A fact with replaces hides the older fact right away; the next dream removes it, and until then PATCH expires_at to null brings it back. Pinned facts are never replaced, and only a fact the person stated can replace another fact the person stated.
AuthorizationBearer <token>Your space key (om_...). Create one with POST /v1/spaces.
application/json- body
facts*array<>items <= 20What was stored
application/json- response
stored*array<>skipped*array<string>curl -X POST 'https://api.openmemory.sh/v1/memories/extract/result' \ -H 'Content-Type: application/json' \ -d '{ "facts": [ { "text": "string" } ]}'{ "stored": [ { "memory": { "id": "string", "subject": "string", "text": "string", "tier": "core", "tags": [ "string" ], "source_ref": "string", "pinned": true, "origin": "user", "expires_at": "string", "recall_count": 0, "last_recalled_at": "string", "created_at": "string", "updated_at": "string", "match": "keyword" }, "created": true, "replaces": "string" } ], "skipped": [ "string" ]}Remember from a conversation: get a job for your model POST
Returns instructions, the related facts already stored, and an output schema. Run them with your own model, then submit its JSON to /v1/memories/extract/result. The server uses no model of its own for this and does not store the conversation.
Forget: remove matching facts, records, journal text, actions, KV values, and events POST
Looks only in the scopes you list, and the default is memories alone: not_searched names the rest. Facts match when they contain ALL the words in query, as whole words. Everything else matches the exact phrase, ignoring case and accents. Facts, records, KV values, and events are deleted. Journal entries are redacted by default. Actions are always redacted, and any that could still run are superseded. Use dry_run to preview. If truncated is true, run it again. Leaves content-free tombstones.