---
title: "List/search memories for a subject (sugar over POST /api/search)"
method: GET
path: "/api/memory"
tags: ["Memory"]
---

# List/search memories for a subject (sugar over POST /api/search)

`GET /api/memory`

## Request

- Base URL: `http://localhost:38200`
- URL: `http://localhost:38200/api/memory`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `token`

## Query parameters

- `subjectId` string
- `q` string
- `workspace` string
- `project` string
- `limit` integer
- `offset` integer

## Response `200`

Matching memory contexts.

- SearchResponse
  - `results` Context[]
    - `id` integer
    - `name` string
    - `description` string
    - `content` string
    - `type` 'reference' | 'feedback' | 'project' | 'incident' | 'lesson' | 'user' | 'synthesis' | 'map' | 'moc' | 'handoff' | 'endpoint' | 'trail'
    - `scope` 'personal' | 'workspace' | 'team'
    - `workspace` string, nullable
    - `project` string, nullable
    - `lifecycle` string
    - `tags` string[]
    - `metadata` object
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `mergedInto` integer, nullable: T743, additive. Present ONLY on the response of `POST /api/contexts` when the T711 near-duplicate guard folded this write into an EXISTING row instead of inserting a new one -- the id of that existing (surviving) row, which is also `id` above. Absent/undefined on every other response shape (search, list, get, update) and on a genuine create. A caller that sees `mergedInto` set knows no new row was created and should treat the write as an update to the returned id, not a create.
  - `total` integer
  - `searchMeta` object
  - `grantedResults` object[]
  - `traceEvents` object[]

## Other responses

- `401`: Missing or invalid credentials.

---

[API](https://skmtc.dev/contextq/apis/contextq-api.md) · [All operations](https://skmtc.dev/contextq/apis/contextq-api/llms.txt) · [OpenAPI document](https://skmtc.dev/contextq/apis/contextq-api/revisions/7afc44056a22?raw)
