Rubrics

rubrics

Methods

Create A Rubric ->
post/v5/rubrics

Create a rubric, optionally with its initial criteria in the same request.

The rubric is created for the caller's account at version 1. If the optional criteria field is supplied it must contain at least one entry, and each entry is created as a criterion attached to the new rubric; omit it to create an empty rubric and add criteria later via the criteria endpoint. The response returns the created rubric together with the full detail of any criteria created in this call.

List Rubrics -> CursorPage<>
get/v5/rubrics

List the current account's rubrics, paginated.

Only the latest version of each rubric is returned, and archived rubrics are excluded (this endpoint has no option to include them). The optional title filter matches as a case-insensitive substring, and the optional tags filter narrows results to rubrics carrying the given tags. Each returned rubric carries only a slim criteria summary (title and weight per criterion) rather than full criteria; use the get-rubric endpoint to retrieve full criteria detail.

Get A Rubric ->
get/v5/rubrics/{rubric_id}

Retrieve a single rubric with the full detail of its current criteria.

Returns the latest version of the rubric along with all of its current (latest-version) criteria in full — not the slim title/weight summary returned by the list endpoint. Archived rubrics remain retrievable through this endpoint even though they are hidden from the list endpoint.

Update Or Restore A Rubric ->
patch/v5/rubrics/{rubric_id}

Update a rubric's fields, or restore a previously archived rubric.

The request body is a discriminated union. Send {"restore": true} to restore an archived rubric (clearing its archived state); send any other field set (such as title or tags) to update those fields, carrying forward any field not supplied. Both paths are append-only and produce a new version of the rubric rather than mutating the existing row. Updating the fields of an archived rubric is rejected — restore it first. Restoring a rubric that is not archived is a no-op that returns it unchanged without creating a new version.

Archive A Rubric -> { id, deleted, object }
delete/v5/rubrics/{rubric_id}

Archive a rubric (soft delete).

This is a soft delete, not a permanent one: it records an archived timestamp on the rubric while retaining the rubric and its version history, so it can later be brought back via the restore variant of the update endpoint. An archived rubric is hidden from the list endpoint but stays retrievable by id. The rubric's criteria are left untouched — archiving does not cascade to or delete them. Archiving a rubric that is already archived is rejected.

Domain types

RestoreRequest = { restore }
RubricArchiveResponse = { id, deleted, object }
RubricResponse = { id, created_at, created_by, 7 more... }
Rubrics

Criteria

rubrics.criteria

Methods

Add A Criterion To A Rubric ->
post/v5/rubrics/{rubric_id}/criteria

Add a single criterion to an existing rubric.

Creates a new criterion at version 1 under the given rubric. Criteria are versioned independently of the rubric they belong to. The request is rejected if the target rubric is archived.

path Parameters
rubric_id: string
Response fields
Request example
200Example
Update A Criterion ->
patch/v5/rubrics/{rubric_id}/criteria/{rubric_criteria_id}

Apply a partial update to a criterion, creating a new version.

Updates are append-only: rather than overwriting the criterion in place, each update inserts a new immutable version with an incremented version number, so every prior state stays available through the versions endpoint. Fields not supplied are carried forward from the current version. The request is rejected if the criterion does not belong to the rubric named in the path.

List Criterion Versions -> { has_more, items, total, 2 more... }
get/v5/rubrics/{rubric_id}/criteria/{rubric_criteria_id}/versions

List the full version history of a single criterion, paginated.

Because criterion updates are append-only, this returns one entry per version, exposing every prior state of the criterion, ordered by version descending (newest first) by default. The request is rejected if the criterion does not belong to the rubric named in the path.

Domain types

CriterionListVersionsResponse = { has_more, items, total, 2 more... }
RubricCriteriaInput = { title, annotations, weight }
RubricCriteriaResponse = { id, created_at, rubric_id, 5 more... }
RubricCriteriaSummaryResponse = { title, weight }

Slim criteria projection for list endpoints (title + weight only).