---
title: "Submit Session Photos"
method: POST
path: "/exercise-sessions/{session_id}/photo-submission"
tags: ["photo_submissions"]
---

# Submit Session Photos

`POST /exercise-sessions/{session_id}/photo-submission`

## Path parameters

- `session_id` string, required

## Request body

- SessionPhotoSubmissionCreate — Session-level "je rends tout" submission: photos are dispatched across the session's exercises before per-exercise grading.
  - `photo_urls` string[], required
  - `include_transcription` boolean
  - `device_type` string, nullable

## Response `200`

Successful Response

- SessionPhotoSubmissionResponse — One entry per session exercise, in session order — including exercises no photo was mapped to (`attempt_index` null, empty `photo_indices`).
  - `results` PhotoDispatchResultResponse[], required
    - `exercise_id` string, required
    - `photo_indices` integer[], required
    - `attempt_index` integer, nullable, required
    - `error` string, nullable, required

## Other responses

- `400` — Malformed identifier
- `403` — Not authorized for this resource
- `404` — Resource not found
- `409` — Business rule violated
- `422` — Validation Error

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc.dev/excellence-ai/apis/excellence-learning/revisions/c81ed506912f?raw)
