---
title: "Create Exercise Rubric"
method: POST
path: "/teacher/exercises/{exercise_id}/rubric"
tags: ["rubrics"]
---

# Create Exercise Rubric

`POST /teacher/exercises/{exercise_id}/rubric`

## Path parameters

- `exercise_id` string, required

## Response `201`

Successful Response

- RubricResponse — Minimal: drops `exercise_id` (lives in the URL) and `exercise_collection` / `created_at` (frontend doesn't read them today). `author` is flattened to a Literal to avoid leaking prompt ids / user ids.
  - `id` string, required
  - `questions` RubricQuestion[], required
    - `question_text` string, required
    - `skills` SkillRef[], required
      - `savoir_faire_id` string, required
      - `name` string, required
      - `description` string, required
    - `criteria` string[], required
  - `author_type` 'ai' | 'human', required

## Other responses

- `400` — Malformed identifier
- `403` — Not authorized for this resource
- `404` — Resource not found
- `409` — Business rule violated
- `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.dev/excellence-ai/apis/excellence-learning/revisions/2a0c1636fd3b?raw)
