Everything an agent needs at the start of a run, in one call
Core profile (bounded), due and open records, pending actions, recent journal days, the latest weekly digest, and selected KV namespaces.
AuthorizationBearer <token>Your space key (om_...). Create one with POST /v1/spaces.
budget_chars?integer200 <= value <= 200004000journal_days?|0 <= value <= 317due_within_days?|0 <= value <= 907kv?stringComma-separated KV namespaces to include, e.g. settings,cursors.
length <= 500collections?stringComma-separated record collections, limiting due and open_records. Default: all.
length <= 500open_limit?|Most open_records to return, soonest due first. Default: 20 across all collections, or 50 if you name collections. 0 leaves them out.
0 <= value <= 50Context
application/json- response
now*stringtimezone*stringtoday*stringprofile*due*array<>Open records due within due_within_days.
open_records*array<>Open records, soonest due first: all collections unless you name some, up to open_limit.
open_records_total*numberHow many open records there are, including any past open_limit.
actions*array<>Pending, approved, and executing actions.
journal*array<>weekly*|nullkv*last_dream*|nullcurl -X GET 'https://api.openmemory.sh/v1/context'{ "now": "string", "timezone": "string", "today": "string", "profile": { "text": "string", "facts_included": 0, "facts_total": 0, "truncated": true, "dream_summary": "string" }, "due": [ { "id": "string", "collection": "string", "key": "string", "status": "string", "due_at": "string", "data": { "property1": null, "property2": null }, "origin": "user", "version": 0, "created_at": "string", "updated_at": "string" } ], "open_records": [ { "id": "string", "collection": "string", "key": "string", "status": "string", "due_at": "string", "data": { "property1": null, "property2": null }, "origin": "user", "version": 0, "created_at": "string", "updated_at": "string" } ], "open_records_total": 0, "actions": [ { "id": "string", "class": "string", "summary": "string", "payload": { "property1": null, "property2": null }, "payload_hash": "string", "preconditions": [ null ], "meta": { "property1": null, "property2": null }, "idempotency_key": "string", "status": "pending", "receipt": { "property1": null, "property2": null }, "expires_at": "string", "created_at": "string", "updated_at": "string" } ], "journal": [ { "kind": "day", "date": "string", "summary": "string", "decisions": [ "string" ], "open_loops": [ "string" ], "source_refs": [ "string" ], "origin": "user", "updated_at": "string" } ], "weekly": { "kind": "day", "date": "string", "summary": "string", "decisions": [ "string" ], "open_loops": [ "string" ], "source_refs": [ "string" ], "origin": "user", "updated_at": "string" }, "kv": { "property1": { "property1": null, "property2": null }, "property2": { "property1": null, "property2": null } }, "last_dream": { "id": "string", "status": "string", "finished_at": "string", "report": null }}Apply several writes atomically POST
All ops succeed or none do. Version and status checks abort the whole batch with 409, and error.details.op_index says which op failed when that can be told. Ops that read first (record.update, journal merge, action.propose) see the state from before the batch.
Client-mode dreaming: get the job for your model GET
Returns the waiting job, or null. With start_if_due=true, starts a dream first when the last one is older than the dream interval. Call it from a nightly run, give instructions + input to your model, and submit the JSON it returns.