Skip to main content
The canvas courses command and canvas course subcommand group cover everything from listing your enrolled courses to pulling a full aggregated snapshot of a course’s content. All output is printed as pretty-printed JSON to stdout.

canvas courses

List your enrolled Canvas courses.
canvas courses
canvas courses --all
canvas courses --search "biology" --limit 20
By default, only courses marked as favorites in Canvas are returned. Pass --all to include every active enrollment.
--all
boolean
default:"false"
Include all active enrollments instead of favorites only.
Filter courses by name or course code. Case-insensitive substring match.
--limit
number
default:"50"
Maximum number of courses to return.

canvas course overview

Fetch course-level metadata and teacher information for a single course.
canvas course overview 12345
course_id
string
required
Canvas course ID.

canvas course syllabus

Fetch syllabus metadata and optionally the full syllabus HTML body.
canvas course syllabus 12345
canvas course syllabus 12345 --no-body
canvas course syllabus 12345 --body-char-limit 5000
course_id
string
required
Canvas course ID.
--body/--no-body
boolean
default:"true"
Include the syllabus HTML body in the response. Use --no-body to skip it.
--body-char-limit
number
default:"12000"
Maximum number of characters to include from the syllabus body.

canvas course context

Return an aggregated snapshot of a course — upcoming assignments, recent announcements, and modules — in a single call. Useful for a quick orientation before diving into a specific area.
canvas course context 12345
canvas course context 12345 --body
canvas course context 12345 --upcoming-limit 10 --announcements-limit 5
course_id
string
required
Canvas course ID.
--body/--no-body
boolean
default:"false"
Include the syllabus body in the snapshot. Off by default to keep output compact.
--upcoming-limit
number
default:"20"
Maximum number of upcoming assignments to include.
--announcements-limit
number
default:"10"
Maximum number of announcements to include.
--modules-limit
number
default:"20"
Maximum number of modules to include.
--module-items-limit
number
default:"50"
Maximum number of items per module.

canvas course pages

List wiki pages in a course.
canvas course pages 12345
canvas course pages 12345 --search "syllabus"
canvas course pages 12345 --published --limit 50
course_id
string
required
Canvas course ID.
--search
string
Filter by page title or URL slug. Case-insensitive substring match.
--published
boolean
When set, return only published pages. Omit the flag to include both published and unpublished pages.
--limit
number
default:"100"
Maximum number of pages to return.

canvas course page

Fetch a single wiki page by URL slug or page ID.
canvas course page 12345 syllabus
canvas course page 12345 98765 --force-as-id
course_id
string
required
Canvas course ID.
url_or_id
string
required
Page URL slug (e.g. syllabus) or numeric page ID.
--force-as-id
boolean
default:"false"
Treat the second argument strictly as a numeric page ID rather than a URL slug.
canvas course page only works for wiki pages (URLs containing /pages/). For assignment submission preview routes, use canvas url instead.

canvas course tabs

List the left-sidebar navigation tabs for a course.
canvas course tabs 12345
canvas course tabs 12345 --limit 50
course_id
string
required
Canvas course ID.
--limit
number
default:"100"
Maximum number of tabs to return.

canvas course tab

Fetch a single navigation tab and optionally resolve its destination URL.
canvas course tab 12345 home
canvas course tab 12345 modules
canvas course tab 12345 syllabus --no-target
course_id
string
required
Canvas course ID.
tab_id
string
required
Tab identifier, such as home, modules, or syllabus.
--target/--no-target
boolean
default:"true"
Resolve the tab’s destination URL and fetch its content. Use --no-target to skip the resolution step.

canvas course people

List users enrolled in a course.
canvas course people 12345
canvas course people 12345 --search "jane"
canvas course people 12345 --role student --role ta
canvas course people 12345 --no-email --limit 200
course_id
string
required
Canvas course ID.
--search
string
Filter by name or email address. Case-insensitive substring match.
--role
string
Enrollment type filter (e.g. student, teacher, ta). Repeat the flag to include multiple roles.
--email/--no-email
boolean
default:"true"
Include email addresses in the response.
--limit
number
default:"100"
Maximum number of people to return.

canvas course modules

List modules in a course, optionally including their items.
canvas course modules 12345
canvas course modules 12345 --items
canvas course modules 12345 --items --details
canvas course modules 12345 --search "week 1" --items --limit 10
course_id
string
required
Canvas course ID.
--search
string
Filter by module name. Case-insensitive substring match.
--items/--no-items
boolean
default:"false"
Include items within each module.
--details/--no-details
boolean
default:"false"
Include Canvas content details for module items. Requires --items.
--limit
number
default:"100"
Maximum number of modules to return.
--items-limit
number
default:"100"
Maximum number of items per module.

canvas course grades

Fetch a grade summary with assignment-group breakdown for a student.
canvas course grades 12345
canvas course grades 12345 --student-id 99999
course_id
string
required
Canvas course ID.
--student-id
string
default:"self"
Canvas student ID. Defaults to self (the authenticated user). Accessing another student’s grades requires instructor-level permissions in Canvas.

canvas course submissions

List submission records for a student in a course.
canvas course submissions 12345
canvas course submissions 12345 --assignment 67890
canvas course submissions 12345 --workflow-state submitted --submitted-since 2024-09-01T00:00:00Z
canvas course submissions 12345 --assignment 67890 --assignment 11111 --limit 50
course_id
string
required
Canvas course ID.
--student-id
string
default:"self"
Canvas student ID. Defaults to self.
--assignment
string
Assignment ID filter. Repeat the flag to filter by multiple assignments.
--include
string
Submission include values passed to the Canvas API. Repeat as needed.
--grouped
boolean
default:"false"
Keep Canvas grouped submission shells in the response.
--workflow-state
string
Submission workflow state filter (e.g. submitted, graded, pending_review).
--submitted-since
string
ISO datetime lower bound for submission time.
--graded-since
string
ISO datetime lower bound for grading time.
--limit
number
default:"200"
Maximum number of submissions to return.

Build docs developers (and LLMs) love