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

# Submit Exercise Photos

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

## Path parameters

- `session_id` string, required
- `exercise_id` string, required

## Request body

- PhotoSubmissionCreate — Per-exercise photo submission. `include_transcription` selects the V3 prompt variant (grading + read-only transcription of the copy).
  - `photo_urls` string[], required
  - `include_transcription` boolean
  - `device_type` string, nullable

## Response `200`

Successful Response

- PhotoSubmissionResponse
  - `attempt_index` integer, required
  - `grading_status` 'processing', 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/d367d251945b?raw)
