---
title: "Get Class Appreciation"
method: GET
path: "/teacher/assignments/{assignment_id}/v2-class-appreciation"
tags: ["v2_evaluations"]
---

# Get Class Appreciation

`GET /teacher/assignments/{assignment_id}/v2-class-appreciation`

Class-wide narrative appreciation. Auto-generated on first visit
AFTER the assignment's due date passes; cached against the class-evals
ETag so subsequent visits short-circuit. Returns 404 with an empty body
when the assignment is unknown, not yet overdue, or has no sessions
to summarize — the frontend treats all three identically (empty state).
Mirrors the no-annotation return type of `get_class_evaluations` above
so the 304/404 short-circuits don't fight pyright.

## Path parameters

- `assignment_id` string, required

## Response `200`

Successful Response

- ClassAppreciationResponse
  - `assignment_id` string, required
  - `text` string, required
  - `author_type` 'ai' | 'human', required
  - `generated_at` string, date-time, required

## Other responses

- `400` — Malformed identifier
- `403` — Not authorized for this resource
- `404` — Resource not found
- `422` — Validation Error
- `502` — Upstream LLM returned unusable output

---

[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)
