---
title: "Get Course Improvements"
method: GET
path: "/teacher/courses/{course_id}/improvements"
tags: ["Course improvements"]
---

# Get Course Improvements

`GET /teacher/courses/{course_id}/improvements`

Review the course and return what would make it better.

The first call on a course runs an LLM review and can take tens of seconds;
later calls are served from the stored review until the course is edited.

## Path parameters

- `course_id` string, required

## Query parameters

- `refresh` boolean — Regenerate the review even when the stored one still matches the course content. Backs the « Réanalyser » action.

## Response `200`

Successful Response

- CourseImprovementReviewResponse — `suggestions` is ordered most valuable first, so the UI can render it top-down as a work plan. An empty list means two different things and `too_thin` is what separates them: the course was too short to be worth reviewing (no LLM call was made), or it was reviewed and came back with nothing worth saying. The banner says something different in each case.
  - `suggestions` CourseImprovementSuggestionResponse[], required
    - `title` string, required
    - `detail` string, required
    - `unit_id` string, nullable, required
    - `chat_prompt` string, required
  - `too_thin` boolean, required
  - `generated_at` string, date-time, required

## Other responses

- `404` — Resource not found
- `422` — Validation Error
- `502` — Upstream LLM returned unusable output

## Changes

- **2026-09-05** `437cd8414e9e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/teacher/courses/:course_id/improvements/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)
