Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Moderated Grading API
9 actions
9 updates
phrasing
extends
openapi/canvas-moderated-grading-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canvas's API. It is a proposal applied on top of the contract, not a document Canvas publishes.
What the actions change
x-apievangelist-phrasing
Targets 9
$.info
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/moderated_students'].get
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/moderated_students'].post
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/bulk_select'].put
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/status'].get
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/{provisional_grade_id}/select'].put
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish'].post
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish_async'].post
$.paths['/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_provisional_grades/status'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Canvas LMS REST Moderated Grading API
version: 1.0.0
extends: openapi/canvas-moderated-grading-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 8
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/moderated_students'].get
update:
x-apievangelist-phrasing:
intent: List students picked for moderation
effect: read
questions:
- Which students' work has been selected for moderated grading on an assignment?
- Can I see the moderation set for a moderated assignment?
instructions:
- text: List students selected for moderation on assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Show the moderation set for assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/moderated_students'].post
update:
x-apievangelist-phrasing:
intent: Add students to the moderation set
effect: write
questions:
- How do I choose which students get a second grader on a moderated assignment?
- Can I add several students to moderation at once?
instructions:
- text: Select students {student_ids} for moderation on assignment {assignment_id} in course {course_id}.
slots:
student_ids: requestBody.student_ids
assignment_id: path.assignment_id
course_id: path.course_id
- text: Add {student_ids} to the moderation set of assignment {assignment_id} in course {course_id}.
slots:
student_ids: requestBody.student_ids
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/bulk_select'].put
update:
x-apievangelist-phrasing:
intent: Choose many provisional grades at once
effect: write
questions:
- As final grader, can I pick the provisional grades for many students in one go?
- Who is allowed to bulk select provisional grades?
instructions:
- text: Bulk select provisional grades on assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Choose the winning provisional grades for several students on assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/status'].get
update:
x-apievangelist-phrasing:
intent: Check if a student needs provisional grades
effect: read
questions:
- Does a student's submission still need provisional grades?
- How can a grader tell whether a named student needs another provisional grade?
instructions:
- text: Check provisional grade status for student {student_id} on assignment {assignment_id} in course {course_id}.
slots:
student_id: query.student_id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Does student {student_id} still need provisional grading on assignment {assignment_id} in course {course_id}.
slots:
student_id: query.student_id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/{provisional_grade_id}/select'].put
update:
x-apievangelist-phrasing:
intent: Select a provisional grade for a submission
effect: write
questions:
- How does the final grader choose which provisional grade a student receives?
- Can an admin pick one grader's score over another for a submission?
instructions:
- text: Select provisional grade {provisional_grade_id} on assignment {assignment_id} in course {course_id}.
slots:
provisional_grade_id: path.provisional_grade_id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Use provisional grade {provisional_grade_id} as the student's grade for assignment {assignment_id} in course {course_id}.
slots:
provisional_grade_id: path.provisional_grade_id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish'].post
update:
x-apievangelist-phrasing:
intent: Publish selected provisional grades
effect: write
questions:
- How do I release moderated grades to students once they are chosen?
- Can provisional grades be published again after they've been published once?
instructions:
- text: Publish the provisional grades for assignment {assignment_id} in course {course_id} now.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Release the selected moderated grades on assignment {assignment_id} in course {course_id} immediately.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/provisional_grades/publish_async'].post
update:
x-apievangelist-phrasing:
intent: Publish provisional grades in the background
effect: write
questions:
- For a large class, can moderated grades be published as a background job?
- Is there a non-blocking way to publish provisional grades?
instructions:
- text: Publish provisional grades for assignment {assignment_id} in course {course_id} as a background job.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
- text: Queue an asynchronous grade publish for moderated assignment {assignment_id} in course {course_id}.
slots:
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_provisional_grades/status'].get
update:
x-apievangelist-phrasing:
intent: Check provisional status for an anonymous student
effect: read
questions:
- With anonymous grading on, can I check if a submission needs provisional grades?
- How do I check grading status using a student's anonymous id?
instructions:
- text: Look up anonymized grading needs of {anonymous_id} on assignment {assignment_id} in course {course_id}.
slots:
anonymous_id: query.anonymous_id
assignment_id: path.assignment_id
course_id: path.course_id
- text: Does anonymous submission {anonymous_id} need more grading on assignment {assignment_id} in course {course_id}.
slots:
anonymous_id: query.anonymous_id
assignment_id: path.assignment_id
course_id: path.course_id
method: generated
generated: '2026-10-01'
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/canvas-moderated-grading-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.