Canvas · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Canvas LMS REST Quizzes API
8 actions
8 updates
phrasing
extends
openapi/canvas-quizzes-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 8
$.info
$.paths['/v1/courses/{course_id}/quizzes'].get
$.paths['/v1/courses/{course_id}/quizzes'].post
$.paths['/v1/courses/{course_id}/quizzes/{id}'].get
$.paths['/v1/courses/{course_id}/quizzes/{id}'].put
$.paths['/v1/courses/{course_id}/quizzes/{id}'].delete
$.paths['/v1/courses/{course_id}/quizzes/{id}/reorder'].post
$.paths['/v1/courses/{course_id}/quizzes/{id}/validate_access_code'].post
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 Quizzes API
version: 1.0.0
extends: openapi/canvas-quizzes-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: 7
- target: $.paths['/v1/courses/{course_id}/quizzes'].get
update:
x-apievangelist-phrasing:
intent: List the quizzes in a course
effect: read
questions:
- How do I see every classic quiz in a course?
- Can I search a course's quizzes by title?
instructions:
- text: List the quizzes in course {course_id}.
slots:
course_id: path.course_id
- text: Find quizzes in course {course_id} matching {search_term}.
slots:
course_id: path.course_id
search_term: query.search_term
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes'].post
update:
x-apievangelist-phrasing:
intent: Create a quiz in a course
effect: write
questions:
- How do I create a new quiz in a Canvas course?
- Can I set a time limit and number of allowed attempts when creating a quiz?
- What quiz types can I choose, like graded or practice?
instructions:
- text: Create a quiz titled {title} in course {course_id}.
slots:
title: requestBody.quiz[title]
course_id: path.course_id
- text: Create quiz {title} in course {course_id} with a {time_limit}-minute limit.
slots:
title: requestBody.quiz[title]
course_id: path.course_id
time_limit: requestBody.quiz[time_limit]
- text: Create quiz {title} in course {course_id} due {due_at}.
slots:
title: requestBody.quiz[title]
course_id: path.course_id
due_at: requestBody.quiz[due_at]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a single quiz
effect: read
questions:
- How do I see the settings of one quiz?
- What details does Canvas return for a specific quiz?
instructions:
- text: Get quiz {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Show the settings of quiz {id} from course {course_id}.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes/{id}'].put
update:
x-apievangelist-phrasing:
intent: Edit an existing quiz
effect: write
questions:
- How do I change the settings of a quiz that already exists?
- Can I notify students when I update a quiz?
instructions:
- text: Update quiz {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Edit quiz {id} in course {course_id} and notify students of the change.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a quiz
effect: destructive
questions:
- How do I delete a quiz from a course?
- What does Canvas return after a quiz is deleted?
instructions:
- text: Delete quiz {id} from course {course_id}.
slots:
id: path.id
course_id: path.course_id
- text: Remove quiz {id} in course {course_id}.
slots:
id: path.id
course_id: path.course_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes/{id}/reorder'].post
update:
x-apievangelist-phrasing:
intent: Reorder questions in a quiz
effect: write
questions:
- How do I change the order of questions in a quiz?
- Can I move question groups around inside a quiz?
instructions:
- text: Reorder quiz {id} in course {course_id} to {order}.
slots:
id: path.id
course_id: path.course_id
order: requestBody.order[id]
- text: Put the questions of quiz {id} in course {course_id} in the order {order}.
slots:
id: path.id
course_id: path.course_id
order: requestBody.order[id]
method: generated
generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/quizzes/{id}/validate_access_code'].post
update:
x-apievangelist-phrasing:
intent: Check a quiz access code
effect: read
questions:
- How do I check whether an access code for a quiz is correct?
- Can I validate a quiz password before starting?
instructions:
- text: Check if {access_code} is the access code for quiz {id} in course {course_id}.
slots:
access_code: requestBody.access_code
id: path.id
course_id: path.course_id
- text: Validate access code {access_code} on quiz {id} in course {course_id}.
slots:
access_code: requestBody.access_code
id: path.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-quizzes-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.