---
title: "POST /v1/courses/{courseId}/courseWork/{courseWorkId}/rubrics"
method: POST
path: "/v1/courses/{courseId}/courseWork/{courseWorkId}/rubrics"
tags: ["courses"]
---

# POST /v1/courses/{courseId}/courseWork/{courseWorkId}/rubrics

`POST /v1/courses/{courseId}/courseWork/{courseWorkId}/rubrics`

Creates a rubric. The requesting user and course owner must have rubrics creation capabilities. For details, see [licensing requirements](https://developers.google.com/workspace/classroom/rubrics/limitations#license-requirements). For further details, see [Rubrics structure and known limitations](/classroom/rubrics/limitations). This request must be made by the Google Cloud console of the [OAuth client ID](https://support.google.com/cloud/answer/6158849) used to create the parent course work item. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user isn't permitted to create rubrics for course work in the requested course. * `INTERNAL` if the request has insufficient OAuth scopes. * `INVALID_ARGUMENT` if the request is malformed and for the following request error: * `RubricCriteriaInvalidFormat` * `NOT_FOUND` if the requested course or course work don't exist or the user doesn't have access to the course or course work. * `FAILED_PRECONDITION` for the following request error: * `AttachmentNotVisible`

## Path parameters

- `courseId` string, required
- `courseWorkId` string, required

## Request body

- Rubric — The rubric of the course work. A rubric is a scoring guide used to evaluate student work and give feedback. For further details, see [Rubrics structure and known limitations](/classroom/rubrics/limitations).
  - `criteria` Criterion[] — List of criteria. Each criterion is a dimension on which performance is rated.
    - `id` string — The criterion ID. On creation, an ID is assigned.
    - `levels` Level[] — The list of levels within this criterion.
      - `title` string — The title of the level. If the level has no points set, title must be set.
      - `description` string — The description of the level.
      - `id` string — The level ID. On creation, an ID is assigned.
      - `points` number, double — Optional points associated with this level. If set, all levels within the rubric must specify points and the value must be distinct across all levels within a single criterion. 0 is distinct from no points.
    - `title` string — The title of the criterion.
    - `description` string — The description of the criterion.
  - `sourceSpreadsheetId` string — Input only. Immutable. Google Sheets ID of the spreadsheet. This spreadsheet must contain formatted rubric settings. See [Create or reuse a rubric for an assignment](https://support.google.com/edu/classroom/answer/9335069). Use of this field requires the `https://www.googleapis.com/auth/spreadsheets.readonly` or `https://www.googleapis.com/auth/spreadsheets` scope.
  - `courseId` string — Identifier of the course. Read-only.
  - `creationTime` string, google-datetime — Output only. Timestamp when this rubric was created. Read-only.
  - `id` string — Classroom-assigned identifier for the rubric. This is unique among rubrics for the relevant course work. Read-only.
  - `updateTime` string, google-datetime — Output only. Timestamp of the most recent change to this rubric. Read-only.
  - `courseWorkId` string — Identifier for the course work this corresponds to. Read-only.

## Response `200`

Successful response

---

[API](https://skmtc.dev/google/apis/classroom.md) · [All operations](https://skmtc.dev/google/apis/classroom/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/google/classroom/revisions/1b98f151d40b/schema)
