---
title: "Upsert (autosave) the participant's private session notes (AC"
method: PUT
path: "/api/participant/sessions/{sessionId}/notes"
tags: ["Participant Active Session"]
---

# Upsert (autosave) the participant's private session notes (AC

`PUT /api/participant/sessions/{sessionId}/notes`

## Request

- Base URL: `https://api.production.yourmedley.com`
- URL: `https://api.production.yourmedley.com/api/participant/sessions/{sessionId}/notes`
- Auth: HTTP bearer

Autosave path called by the frontend on debounced editor changes.
Empty `notes_html` after trim soft-deletes the row so the participant
can clear by emptying the editor. HTML is sanitized server-side
before persisting (sanitizeRichTextHtml).

## Path parameters

- `sessionId` string, uuid, required

## Request body

- ParticipantNotesUpsertRequest
  - `notes_html` string, required: Tiptap-serialized HTML. Server sanitizes before persisting. Empty string => soft-delete.

## Response `200`

Updated notes payload

- object
  - `success` boolean
  - `data` ParticipantNotesResponse
    - `notes_html` string: Tiptap-serialized HTML. Empty when no notes saved.
    - `updated_at` string, date-time, nullable

## Other responses

- `400`: Body missing notes_html or wrong type
- `401`: Unauthorized
- `403`: Not an active member of the session's group
- `404`: Session not found OR live_session_delivery flag off

---

[API](https://skmtc.dev/withmedley/apis/medley-api.md) - [All operations](https://skmtc.dev/withmedley/apis/medley-api/llms.txt) - [OpenAPI document](https://skmtc.dev/withmedley/apis/medley-api/revisions/40aaac5ca6bd?raw)
