---
title: "Get Student Sheet"
method: GET
path: "/teacher/classes/{class_id}/students/{student_id}/dashboard"
tags: ["class_dashboard"]
---

# Get Student Sheet

`GET /teacher/classes/{class_id}/students/{student_id}/dashboard`

## Request

- Base URL: `https://api.excellence-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.excellence-ai.com/teacher/classes/{class_id}/students/{student_id}/dashboard`
- Auth: OAuth 2 (password, token URL `api/login`)

One student's marks, productions, and mastery profile for the period.

Both period semantics meet here: marks and productions are windowed, the
mastery profile is cumulative from September.

## Path parameters

- `class_id` string, required
- `student_id` string, required

## Query parameters

- `period` string, nullable: Selected period: t1 / t2 / t3 / this_week / this_month / vacances_ete / school_year. An unrecognised value falls back to the full school year rather than erroring, so a stale bookmark still renders.

## Response `200`

Successful Response

- StudentSheetResponse: `has_radar` is sent rather than left to the client to infer: whether three axes are enough to draw a shape is a display rule, and computing it in two places is how the caption and the chart end up disagreeing.
  - `student_id` string, required
  - `display_name` string, required
  - `class_name` string, required
  - `period` string, required
  - `general` number, nullable
  - `by_type` object
  - `class_general` number, nullable
  - `class_by_type` object
  - `devoirs_done` integer, required
  - `devoirs_assigned` integer, required
  - `controles_done` integer, required
  - `controles_assigned` integer, required
  - `autonomy_exercises` integer, required
  - `last_activity` string, date-time, nullable
  - `productions` StudentProductionResponse[], required
    - `activity_id` string, required
    - `activity_type` union, required
      - 'evaluation' | 'devoir' | 'cours' | 'controle'
      - 'self_practice' | 'homework_helper'
    - `title` string, required
    - `occurred_at` string, date-time, required
    - `grade` number, nullable
    - `status` 'non_rendu' | 'absent' | 'termine' | 'en_cours', nullable
    - `target_id` string, nullable
  - `profile` ChapterProfilePointResponse[], required
    - `chapter` string, required
    - `student_mastery` number, nullable
    - `class_mastery` number, nullable
  - `has_radar` boolean, required
  - `evaluated_chapters` integer, required
  - `total_chapters` integer, required
  - `weights` object, required

## Other responses

- `400`: Malformed identifier
- `403`: Not authorized for this resource
- `404`: Resource not found
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-09-14** `0a41d91c9d20`: 1 breaking, 5 info
  - the `productions/items/activity_type` response's property type changed from `string` to no type for status `200`
  - added `subschema #1, subschema #2` to the `productions/items/activity_type` response property `anyOf` list for the response status `200`
  - removed the `controle` enum value from the `productions/items/activity_type` response property for the response status `200`
  - removed the `cours` enum value from the `productions/items/activity_type` response property for the response status `200`
  - …2 more

[Operation history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/teacher/classes/:class_id/students/:student_id/dashboard/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/379e4a57dee8?raw)
