---
title: "List Exercise History"
method: GET
path: "/teacher-exercise-history"
tags: ["teacher-exercise-history"]
---

# List Exercise History

`GET /teacher-exercise-history`

List distinct library exercises the current teacher already gave.

Draft assignments are excluded — only actually-given work counts.
All Mongo lookups are batched (one query per collection), so the cost
stays flat regardless of assignment count.

## Response `200`

Successful Response

- TeacherExerciseHistoryEntry[]
  - `exercise_id` string, required
  - `library` 'excellence' | 'calcul' | 'annales', required
  - `title` string, nullable
  - `content_preview` string, nullable
  - `category_path` string[]
  - `type` string, nullable
  - `origin` string, nullable
  - `difficulty` string, nullable
  - `last_given_at` string, date-time, nullable
  - `times_given` integer
  - `assignment_titles` string[]

## Changes

- **2026-09-10** `da2adc76dec3` — 1 info
  - added the optional property `items/origin` to the response with the `200` status

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/teacher-exercise-history/get.md)

---

[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/2a0c1636fd3b?raw)
