---
title: "Autosave / Save Draft for the feedback form (AC5)"
method: PUT
path: "/api/participant/sessions/{sessionId}/post-session/feedback"
tags: ["Participant Post-Session"]
---

# Autosave / Save Draft for the feedback form (AC5)

`PUT /api/participant/sessions/{sessionId}/post-session/feedback`

## Request

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

Partial draft upsert. Any of the four fields may be omitted; only
the provided fields are merged into the row. Status is forced to
'draft' — use the /submit endpoint to transition to 'submitted'.

Returns 409 FEEDBACK_LOCKED if the row is already submitted (AC5
lock).

## Path parameters

- `sessionId` string, uuid, required

## Request body

- UpsertFeedbackDraftRequest
  - `satisfaction_rating` integer, nullable
  - `what_landed` string
  - `what_still_alive` string
  - `what_for_next` string

## Response `200`

Updated draft payload

- object
  - `success` boolean
  - `data` ParticipantFeedbackPayload
    - `satisfaction_rating` integer, nullable: 1 = Not satisfied, 5 = Very satisfied (higher = more satisfied, matching CoachSatisfactionRating). Nullable while draft.
    - `what_landed` string
    - `what_still_alive` string
    - `what_for_next` string
    - `status` 'draft' | 'submitted'
    - `submitted_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable

## Other responses

- `400`: Body field type mismatch
- `401`: Unauthorized
- `403`: Not an active member of the session's group
- `404`: Session not found OR live_session_delivery flag off
- `409`: Feedback already submitted (FEEDBACK_LOCKED)

---

[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)
