Skip to main content
A source is what a profile stored and extracts memories from: one ingested session, or one remembered fact. ingest and remember return its source_id in their 202, so you have it before extraction finishes. Re-ingesting a session keeps its source id and replaces what it held.

List a profile’s sources

Every source a profile stored, most recently written first, without content:
session_id is null for a remembered fact — the only place the two kinds differ. Paged like every listing: page[number] / page[size], with meta.total_pages / meta.total_results.

Find one session’s source

Add ?session_id= to look up the source a session was stored as, without paging or re-deriving its id:
It returns zero or one source. An unknown session, another profile’s session, or one whose ingest is still queued is an empty page (total_results: 0) — a listing, not a 404. A session_id over 128 characters is a 422.

Read one source

One source with its content, returned in the shape it was sent — a JSON body as JSON, a string as a string:

Trace a memory to its source

Read one memory by id to see where it came from — exactly one field is set:
  • A fact names the source it was extracted from in source_id — read it with GET …/sources/{source_id}.
  • A derived memory names the memories it was built from in derived_from — read each one to follow it back. Every read is a single call, however many memories are cited.

Forget one source

Forget a single source and the memories derived from it, leaving the rest of the profile intact. This is also how you forget one session — delete the session’s source, either with the source_id from the ingest 202 or the one from ?session_id= above:
A source that is not there answers 404 — an unknown id, another profile’s source, or one already forgotten. Retrying is safe: on a 502 or 504, repeat it and read a 404 as done.
A source id is an opaque UUID. Another profile’s source or memory answers 404 — the same as one that does not exist — and an id that is not a UUID is a 422.