---
title: "Get pre-session reflection page payload"
method: GET
path: "/api/participant/sessions/{sessionId}/reflection"
tags: ["Pre-Session Reflection"]
---

# Get pre-session reflection page payload

`GET /api/participant/sessions/{sessionId}/reflection`

## Request

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

Returns the composite payload needed to render the participant
pre-session reflection page: session header, AI banner flag,
reflection questions + the participant's existing responses,
computed status, session details, group context, and lock flag.

Gated by `live_session_delivery` feature flag. Returns 403 when the
authenticated user is not enrolled in the session's cohort.

## Path parameters

- `sessionId` string, uuid, required

## Response `200`

Reflection payload

- object
  - `success` boolean
  - `data` PreSessionReflectionPayload
    - `session_id` string, uuid
    - `cohort_id` string, uuid
    - `header` object
      - `session_title` string
      - `program_name` string, nullable
      - `organization_name` string, nullable
      - `duration_minutes` integer, nullable
      - `scheduled_start` string, date-time, nullable
      - `timing_badge` string
    - `ai_features_enabled` boolean
    - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED'
    - `question_count` integer
    - `estimated_minutes` integer
    - `questions` ReflectionQuestionWithResponse[]
      - `id` string, uuid
      - `session_id` string, uuid
      - `prompt` string
      - `placeholder_text` string, nullable
      - `sort_order` integer
      - `response_text` string: Empty string when not yet answered
      - `response_id` string, uuid, nullable
    - `is_incomplete` boolean: MED-984 / E3.1c — When true, the page renders a gray "not yet ready" Alert and the questions/reading_tasks/ prior_commitment fields are withheld (empty/null). Reflection unlocks once the CM completes the session's authored content.
    - `incomplete_reasons` PreSessionIncompleteReasons: MED-984 / E3.1c — Per-rule breakdown of why the session content is considered incomplete. Mirrors the same bar the coach prep surface uses (e1.3d AC-MC1). MED-1182 (E1.3f-R1) removed the reflection-prompt reason — readiness is agenda-only.
      - `sections_missing_required_fields` boolean
    - `pre_session_work_present` boolean: MED-1182 (E1.3f-R1) — the "not blank" signal. True when the session has any pre-session work (≥1 reflection prompt OR reading/tasks OR commitment review enabled). When false and is_incomplete is also false, the session is BLANK: the page renders logistics-only and the dashboard withholds the prep CTA.
    - `reading_tasks` string, nullable: MED-984 / E3.1c — Sanitized HTML for the Reading / Tasks section. Null when no Pre-Session Work row exists OR the authored value is empty — the page omits the section.
    - `session_details` object
      - `topic_label` string, nullable
      - `session_number` integer, nullable
      - `total_sessions` integer, nullable
      - `scheduled_start` string, date-time, nullable
      - `scheduled_end` string, date-time, nullable
      - `duration_minutes` integer, nullable
      - `timezone` string
      - `format` 'Virtual' | 'In-Person'
      - `location` string, nullable
      - `meeting_link` string, nullable
      - `meeting_dial_in` string, nullable
      - `leader` object
        - `user_id` string, uuid, nullable
        - `display_name` string
        - `role_label` 'COACH' | 'PEER LEADER', nullable
    - `group` object
      - `group_id` string, uuid, nullable
      - `group_name` string, nullable
      - `member_count` integer
      - `members` ReflectionGroupMember[]
        - `user_id` string, uuid
        - `first_name` string
        - `last_initial` string
        - `is_current_participant` boolean
    - `is_locked` boolean
    - `prior_commitment` PriorCommitmentBlock: MED-937 / E3.1b — "Reflect on Prior Commitments" payload block. Present on the reflection payload only when the cohort has `commitment_tracking_enabled = true` AND the participant has a non-empty commitment from the immediately preceding session in the same group; otherwise the payload's `prior_commitment` is null and the section is omitted on the page.
      - `commitment_id` string, uuid: PK of the source session_participant_commitments row
      - `commitment_text` string: Prior session's commitment text (read-only on the pre-session page)
      - `reflection_text` string: Participant's saved reflection on the prior commitment (empty string when none saved yet)
    - `prior_commitment_pending` boolean: MED-1226 (AC5) — true when the Commitment Review section is configured but its prior-session data can't exist yet because the prior session (session_number − 1, same group) is not completed. Mutually exclusive with a non-null prior_commitment; the peer-leader prep page shows an 'available later' placeholder instead of hiding the section.

## Other responses

- `401`: Unauthorized
- `403`: Participant not enrolled in this session's cohort
- `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)
