---
title: "Explicit Save — bulk upsert all reflection responses"
method: POST
path: "/api/participant/sessions/{sessionId}/reflection/save"
tags: ["Pre-Session Reflection"]
---

# Explicit Save — bulk upsert all reflection responses

`POST /api/participant/sessions/{sessionId}/reflection/save`

## Request

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

Bulk upserts an array of responses in a single transaction for the
explicit Save button flow. Returns the resulting response set and
the recomputed status.

Same lock-after-start semantics as the autosave endpoint.

## Path parameters

- `sessionId` string, uuid, required

## Request body

- object
  - `responses` object[], required
    - `question_id` string, uuid, required
    - `response_text` string, required

## Response `200`

Bulk save succeeded

- object
  - `success` boolean
  - `data` object
    - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED'
    - `responses` object[]

## Other responses

- `400`: Bad request body
- `401`: Unauthorized
- `403`: Participant not enrolled in this session's cohort
- `404`: Session not found OR live_session_delivery flag off
- `410`: Reflection is locked — session has started

---

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