---
title: "Add Session Note Internal"
method: POST
path: "/v1/sessions/internal/{session_id}/notes"
tags: ["sessions"]
---

# Add Session Note Internal

`POST /v1/sessions/internal/{session_id}/notes`

The agent records a "note to self" — an unstructured standing reminder
that changes how it behaves for the rest of the conversation (pace/verbosity
the user signalled, a constraint, a name correction). Append-only: the agent
owns the active set in memory and curates it via `supersedes`; this route
persists each note durably (provenance + the corpus for "what feedback are
we getting") and rehydrates the agent on reconnect via the GET below.

Superseding or hitting the agent's soft cap flips `active` to false — we
never delete, so the row survives as analysis material and a future hook for
promoting durable notes to cross-conversation memory (hence person_id).

## Path parameters

- `session_id` string, required

## Request body

- SessionNotePayload
  - `id` string, required
  - `text` string, required
  - `created_turn` integer, nullable
  - `raw_args` object, nullable
  - `supersedes` string[]
  - `evicted` string[]

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
