---
title: "What one person said, newest first"
method: POST
path: "/api/v1/memory/by-speaker"
tags: ["speakers"]
---

# What one person said, newest first

`POST /api/v1/memory/by-speaker`

## Request

- Base URL: `https://api.wontopos.com`
- URL: `https://api.wontopos.com/api/v1/memory/by-speaker`
- Auth: API key in header `X-API-Key`

`speaker` is the tag written at store time — `"me"` for the assistant’s own words, otherwise a registered name. Same cursor paging as /images. `chunks` and `records_to_delete` say how much a delete would actually remove, which is usually more than `returned` — worth showing someone before they confirm one. (`points_to_delete` is the same number under a deprecated name.)

## Headers

- `X-WOS-Model` string

## Request body

- object
  - `user_id` string, required: The store to operate on. Stores are explicit: create one first or use the built-in "default". Use the id the store was created with: 1-64 ASCII letters, digits, ., _ or -, starting with a letter or digit. Ids that differ only by case name one store.
  - `speaker` string, required: `"me"` for the assistant, or a registered person.
  - `limit` integer: Per page, 5–20 (default 20).
  - `before` string: Cursor: `next_before` from the previous page.
  - `skip_ids` string[]: Cursor: `next_skip_ids`, accumulated.

## Response `200`

Success.

- object
  - `user_id` string
  - `speaker` string
  - `memories` Memory[]
    - `id` string, uuid
    - `content` string
    - `category` string: Category of the memory, e.g. "general".
    - `similarity` number: How close this memory is to the query (0–1), higher is closer. It is NOT the ranking key — results already arrive best-first, and ordering by this field instead produces a WORSE order, not the same one. Take `memories` in the order given. There is no `score` field.
    - `importance` number: How much weight this memory carries, as the engine assigned it.
    - `time_bucket` string: Month bucket, e.g. "2026-07". Omitted when temporal fields are stripped.
    - `is_superseded` boolean: True if a later memory has superseded this one.
    - `superseded_by` string, nullable: Id of the memory that superseded this one, or null.
    - `created_at` string, date-time: When the memory was stored (RFC3339). Omitted when temporal fields are stripped.
    - `event_date` string, date-time: When the content actually happened (RFC3339), if known.
    - `speaker` string: WHO said it: "me" (the agent itself) or a registered person. Absent = untagged.
  - `returned` integer
  - `chunks` integer: How much a delete here would remove — usually more than `returned`.
  - `records_to_delete` integer: The same count. Prefer this name.
  - `points_to_delete` integer: Deprecated alias of `records_to_delete`; both carry the same value. Read `records_to_delete`.
  - `has_more` boolean
  - `next_before` string, nullable
  - `next_skip_ids` string[]

## Other responses

- `400`: speaker missing or empty.
- `401`: Missing or invalid API key.
- `404`: Store (user_id) does not exist. Create it first: POST /api/v1/memory/collection.
- `429`: Rate limited (per-account, per-tier RPM). Retry after the indicated delay.
- `501`: The selected model’s engine does not implement this endpoint (Tablet 2 and newer do). The message names the model.

---

[API](https://skmtc.dev/wontopos/apis/wontopos-memory-api.md) · [All operations](https://skmtc.dev/wontopos/apis/wontopos-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wontopos/apis/wontopos-memory-api/revisions/48dda7326a33?raw)
