---
title: "List Programmes"
method: GET
path: "/programmes"
tags: ["Programmes"]
---

# List Programmes

`GET /programmes`

Return all programmes ordered by `sort_order` (6ème → Terminale).

Filters by the user's `teacher_type` so a lycée teacher doesn't see
Sup / Spé / ECG in their picker tree, AND by `subject` (matière) so a
physique-chimie teacher doesn't get the maths grades leaking into their
tree (which produced duplicate "Terminale" nodes). Admins always see
everything. Rows with empty `teacher_types` fall through (visible to all).

## Query parameters

- `include_disabled` boolean
- `subject` 'maths' | 'physique-chimie', nullable — Scope the curriculum tree to a matière. Defaults to the teacher's own subject; admins see all when omitted. Legacy maths rows (no field) match the maths clause.

## Response `200`

Successful Response

- Programme[]
  - `id` string, required
  - `grade_key` string, required
  - `grade_display` string, required
  - `subject` string
  - `disabled` boolean
  - `sort_order` integer
  - `chapters` Chapter[]
    - `display` string, required
    - `legacy_slug` string, nullable
    - `sort_order` integer
    - `thematics` Thematic[]
      - `key` string, required
      - `label` string, required
      - `sort_order` integer
    - `curriculum_details` object, nullable
  - `teacher_types` string[]
  - `updated_at` string, date-time, nullable

## Other responses

- `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-service-production.skmtc.workers.dev/v1/apis/excellence-ai/excellence-learning/revisions/c407f3b5a05b/schema)
