POST · Get memories

List memories with filters by namespace, tags, dates, and metadata.

There are two endpoints for listing memories:

  • GET /api/memories — filters in the URL (legacy, used by the dashboard and Chrome extension)
  • POST /api/memories/list — filters in a JSON body (new, easier for big metadata-filter payloads)

Both return the same memory rows.

POST shape

curl -X POST https://www.mnueron.com/api/memories/list \
  -H "Authorization: Bearer $MNUERON_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "namespace": "preferences",
    "tags": ["style"],
    "limit": 50,
    "order": "newest"
  }'

Body

FieldTypeDefaultNotes
namespacestringExact match
limitint501..500
offsetint00..100000
created_after / created_beforeint (epoch ms)Inclusive
updated_after / updated_beforeint (epoch ms)Inclusive
metadata_filterobjectJSONB @> containment, e.g. {"speaker":"sarah"}
tagsstring[]tags @> input (memory must have all of these)
entityuuidCanonical entity id — narrows to memories that mention this entity
orderstringupdated_descnewest / oldest / updated_desc / updated_asc

Response

{
  "memories": [
    {
      "id": "...",
      "content": "...",
      "namespace": "preferences",
      "tags": ["style"],
      "metadata": {},
      "created_at": 1737070000000,
      "updated_at": 1737070000000
    }
  ],
  "limit": 50,
  "offset": 0,
  "total": 14
}

total is the COUNT(*) over the same filter, so a paginating UI can render "Showing 1–50 of 14,308" without a second call. It can be null if the count query was skipped for an over-large org (fail-soft).

GET shape (legacy)

curl "https://www.mnueron.com/api/memories?namespace=preferences&limit=50&order=newest" \
  -H "Authorization: Bearer $MNUERON_API_TOKEN"
Query paramSame meaning as POST
qFull-text search (BM25). Returns score per row.
namespace
limit / offset
created_after / created_before / updated_after / updated_before
metadata_filterURL-encoded JSON
entity

Returns a plain array (no envelope), no total.

Last updated 2026-05-24edit