Canvas Submissions API
The Submissions API from Canvas — 32 operation(s) for submissions.
Operations 46
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions
Submit a course assignment as a student · Submit an assignment
#
Ask an LLM
“How do I turn in homework for a course assignment through the API?”
“Can a student submit a website URL or a text entry as their course assignment?”
Tell an agent
Turn in assignment {assignment_id} in course {course_id} as a {submission_type} submission.
Submit the link {url} for assignment {assignment_id} in course {course_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions
List all submissions for a course assignment · List assignment submissions
#
Ask an LLM
“Which students have turned in a given assignment in my Canvas course?”
“Can I get a course assignment's submissions grouped by student?”
Tell an agent
List all submissions for assignment {assignment_id} in course {course_id}.
Show course {course_id} submissions on assignment {assignment_id} grouped by student.
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions
Submit an assignment through a course section · Submit an assignment
#
Ask an LLM
“Can a student submit an assignment through their section rather than the course?”
“Is it possible to hand in an online text entry to an assignment using my section id?”
Tell an agent
Submit assignment {assignment_id} via section {section_id} as a {submission_type} entry.
Hand in the text {body} for assignment {assignment_id} through section {section_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions
List a section's submissions for an assignment · List assignment submissions
#
Ask an LLM
“Which students in one section have turned in a particular assignment?”
“Can I pull assignment submissions for just a single section instead of the whole course?”
Tell an agent
List submissions for assignment {assignment_id} from section {section_id} only.
Show what section {section_id} handed in for assignment {assignment_id}, grouped per student.
GET
/v1/courses/{course_id}/students/submissions
List course submissions across students and assignments · List submissions for multiple assignments
#
Ask an LLM
“Can I fetch submissions for several students and several assignments at once in a course?”
“What submissions in my course were graded since last Monday?”
Tell an agent
List submissions in course {course_id} for students {student_ids} on assignments {assignment_ids}.
Get every submission in course {course_id} graded since {graded_since}.
GET
/v1/sections/{section_id}/students/submissions
List section submissions across students and assignments · List submissions for multiple assignments
#
Ask an LLM
“Can I pull submissions for many students and assignments within just one section?”
“Which submissions in a section were turned in after a given date?”
Tell an agent
List section {section_id} submissions for students {student_ids} across assignments {assignment_ids}.
Show submissions in section {section_id} for grading period {grading_period_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}
Get one student's submission for a course assignment · Get a single submission
#
Ask an LLM
“How can I see a specific student's submission on a course assignment?”
“Can I include submission comments and the rubric assessment when fetching one student's course submission?”
Tell an agent
Get user {user_id}'s submission for assignment {assignment_id} in course {course_id}.
Open student {user_id}'s course {course_id} submission on assignment {assignment_id} with its comments.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}
Grade or comment on a student's course submission · Grade or comment on a submission
#
Ask an LLM
“How do I post a grade for one student's submission in a course?”
“Can I excuse a student from a course assignment instead of grading it?”
Tell an agent
Give student {user_id} a grade of {posted_grade} on assignment {assignment_id} in course {course_id}.
Comment {text_comment} on user {user_id}'s submission for assignment {assignment_id} in course {course_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}
Get one student's submission through a section · Get a single submission
#
Ask an LLM
“Can I look up one student's assignment submission through their section?”
“Is there a section-scoped way to fetch a single student's submission with its rubric assessment?”
Tell an agent
Get the section {section_id} submission by user {user_id} on assignment {assignment_id}.
Show student {user_id}'s work for assignment {assignment_id} as seen in section {section_id}.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}
Grade or comment on a submission through a section · Grade or comment on a submission
#
Ask an LLM
“How do I grade a student's work using their section id?”
“Can a section-limited instructor leave a comment on a student's submission?”
Tell an agent
Grade user {user_id} {posted_grade} for assignment {assignment_id} via section {section_id}.
Leave the comment {text_comment} on student {user_id}'s assignment {assignment_id} work in section {section_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Get a course submission by its anonymous id · Get a single submission by anonymous id
#
Ask an LLM
“How do I fetch a submission by its anonymous id when grading anonymously in a course?”
“Can I view an anonymized course submission without knowing which student made it?”
Tell an agent
Get anonymous submission {anonymous_id} for assignment {assignment_id} in course {course_id}.
Show the anonymously graded course {course_id} submission {anonymous_id} on assignment {assignment_id}.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Grade a course submission by its anonymous id · Grade or comment on a submission by anonymous id
#
Ask an LLM
“How do I enter a grade for a course submission using only its anonymous id?”
“Can I comment on an anonymous course submission without revealing the student?”
Tell an agent
Grade anonymous submission {anonymous_id} on course {course_id} assignment {assignment_id} as {posted_grade}.
Add comment {text_comment} to anonymous submission {anonymous_id} for assignment {assignment_id} in course {course_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Get a section submission by its anonymous id · Get a single submission by anonymous id
#
Ask an LLM
“How can a section grader retrieve a submission by anonymous id?”
“Can I open an anonymized submission scoped to one section during anonymous grading?”
Tell an agent
Get section {section_id} anonymous submission {anonymous_id} for assignment {assignment_id}.
Look up anonymized work {anonymous_id} on assignment {assignment_id} through section {section_id}.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Grade a section submission by its anonymous id · Grade or comment on a submission by anonymous id
#
Ask an LLM
“Can I post an anonymous grade through a section using the anonymous id?”
“Is it possible to excuse an anonymously graded submission within a section?”
Tell an agent
Grade anonymized work {anonymous_id} on assignment {assignment_id} in section {section_id} as {posted_grade}.
Excuse anonymous submission {anonymous_id} for assignment {assignment_id} via section {section_id}.
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files
Start a file upload for a course submission · Upload a file
#
Ask an LLM
“How does a student upload a file to attach to a course assignment submission?”
“What's the first step for uploading a submission file before turning in a course assignment?”
Tell an agent
Start a submission file upload for user {user_id} on assignment {assignment_id} in course {course_id}.
Begin uploading an attachment to course {course_id} assignment {assignment_id} for student {user_id}.
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files
Start a file upload for a section submission · Upload a file
#
Ask an LLM
“Can I begin a submission file upload through a section instead of a course?”
“Where do I initiate attaching a file to an assignment submission using a section id?”
Tell an agent
Initiate a submission file upload via section {section_id} for assignment {assignment_id} and user {user_id}.
Open a file upload for student {user_id}'s section {section_id} submission on assignment {assignment_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/gradeable_students
List students who can be graded on an assignment · List gradeable students
#
Ask an LLM
“Which students are gradeable for one assignment?”
“Can I sort the list of students I'm able to grade on an assignment?”
Tell an agent
List gradeable students for assignment {assignment_id} in course {course_id}.
Show the students I can grade on assignment {assignment_id} in course {course_id}, sorted by {sort}.
GET
/v1/courses/{course_id}/assignments/gradeable_students
List students eligible for several assignments · List multiple assignments gradeable students
#
Ask an LLM
“Which students are eligible to submit a whole set of assignments?”
“Will a section-limited instructor only see their own students across multiple assignments?”
Tell an agent
List students eligible to submit assignments {assignment_ids} in course {course_id}.
Show who can hand in any of assignments {assignment_ids} in course {course_id}.
POST
/v1/courses/{course_id}/submissions/update_grades
Bulk grade submissions across a course's assignments · Grade or comment on multiple submissions
#
Ask an LLM
“Can I grade many students across several assignments in a course in one request?”
“Does bulk grading across a whole course run as a background job?”
Tell an agent
Bulk update grades and comments for multiple assignments in course {course_id}.
Submit a batch of student grades spanning several assignments in course {course_id} as an async job.
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/update_grades
Bulk grade one course assignment's submissions · Grade or comment on multiple submissions
#
Ask an LLM
“How do I grade every student on one course assignment in a single call?”
“Can I add comments to many students' submissions for one course assignment at once?”
Tell an agent
Bulk grade all listed students on assignment {assignment_id} in course {course_id}.
Apply a batch of comments and scores to course {course_id} assignment {assignment_id}.
POST
/v1/sections/{section_id}/submissions/update_grades
Bulk grade submissions across a section · Grade or comment on multiple submissions
#
Ask an LLM
“Can I bulk grade a whole section's submissions across different assignments?”
“Can a section instructor update many grades for their section in one go?”
Tell an agent
Bulk update grades for multiple assignments in section {section_id}.
Run a batch grading job across every assignment for section {section_id}.
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/update_grades
Bulk grade one assignment within a section · Grade or comment on multiple submissions
#
Ask an LLM
“How do I grade a section's students on a single assignment in one batch?”
“Can I bulk excuse a section's students from one assignment?”
Tell an agent
Bulk grade section {section_id} students on assignment {assignment_id}.
Queue batch grades and comments for assignment {assignment_id} within section {section_id}.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark a course submission as read · Mark submission as read
#
Ask an LLM
“How do I mark a student's course submission as read?”
“Can I clear the unread badge on one submission in a course?”
Tell an agent
Mark user {user_id}'s submission on assignment {assignment_id} in course {course_id} as read.
Flag the course {course_id} assignment {assignment_id} submission from {user_id} as seen.
DELETE
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark a course submission as unread · Mark submission as unread
#
Ask an LLM
“Can I flip a submission in a course back to unread?”
“How do I restore the unread indicator on a course submission I already opened?”
Tell an agent destructive · confirm first
Set the course {course_id} submission from {user_id} on assignment {assignment_id} back to unread.
Make student {user_id}'s assignment {assignment_id} work in course {course_id} show as unread again.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark a section submission as read · Mark submission as read
#
Ask an LLM
“Can I mark a submission read using the student's section?”
“Is there a section-scoped call to dismiss the unread marker on a submission?”
Tell an agent
Mark section {section_id} submission by {user_id} on assignment {assignment_id} read.
Record that I've seen student {user_id}'s assignment {assignment_id} work via section {section_id}.
DELETE
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark a section submission as unread · Mark submission as unread
#
Ask an LLM
“Can I set a submission back to unread through a section?”
“Is there a section-level way to undo marking a student's submission as read?”
Tell an agent destructive · confirm first
Revert section {section_id} submission from {user_id} on assignment {assignment_id} to unread.
Put the unread flag back on student {user_id}'s assignment {assignment_id} work in section {section_id}.
PUT
/v1/courses/{course_id}/submissions/bulk_mark_read
Mark many course submissions as read at once · Mark bulk submissions as read
#
Ask an LLM
“Can I mark a batch of submissions in a course as read in one call?”
“Is there a bulk way to clear unread status on a list of course submission ids?”
Tell an agent
Mark submissions {submission_ids} in course {course_id} as read.
Bulk mark these course {course_id} submission ids read: {submission_ids}.
PUT
/v1/sections/{section_id}/submissions/bulk_mark_read
Mark many section submissions as read at once · Mark bulk submissions as read
#
Ask an LLM
“Can I mark a list of submissions as read for one section in bulk?”
“Is bulk read-marking available per section rather than per course?”
Tell an agent
Mark submissions {submission_ids} in section {section_id} as read.
Clear unread status in bulk for section {section_id} submission ids {submission_ids}.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}
Mark a course submission's grade, comment or rubric read · Mark submission item as read
#
Ask an LLM
“Can I mark only the grade or only the comments on a course submission as read?”
“What submission items can be marked read individually in a course?”
Tell an agent
Mark only the {item} item read on user {user_id}'s assignment {assignment_id} work in course {course_id}.
Mark just the comment item read on student {user_id}'s course {course_id} assignment {assignment_id} submission.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}
Mark a section submission's grade, comment or rubric read · Mark submission item as read
#
Ask an LLM
“Can I mark just the rubric part of a submission as read through a section?”
“Is per-item read marking (grade, comment, rubric) available via a section?”
Tell an agent
Mark item {item} read on section {section_id} submission by {user_id} for assignment {assignment_id}.
Mark only the grade as read on student {user_id}'s assignment {assignment_id} work in section {section_id}.
PUT
/v1/courses/{course_id}/submissions/{user_id}/clear_unread
Clear unread status on all of a user's course submissions · Clear unread status for all submissions
#
Ask an LLM
“How can a site admin clear every unread submission flag for a user in a course?”
“Is there a way to reset a student's unread status on all their course submissions at once?”
Tell an agent
Clear unread status on all of user {user_id}'s submissions in course {course_id}.
Wipe every unread marker for student {user_id} across course {course_id}.
PUT
/v1/sections/{section_id}/submissions/{user_id}/clear_unread
Clear unread status on all of a user's section submissions · Clear unread status for all submissions
#
Ask an LLM
“Can a site admin clear all unread submission flags for a user within one section?”
“Is there a section-scoped reset of a student's unread submissions?”
Tell an agent
Clear unread status on every submission by user {user_id} in section {section_id}.
Reset all unread submission markers for student {user_id} through section {section_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Check if a student has seen new rubric comments (course) · Get rubric assessments read state
#
Ask an LLM
“Has a student seen the new rubric comments on their course submission yet?”
“Can I check the read state of rubric comments using the course rubric_comments path?”
Tell an agent
Check whether user {user_id} has read the rubric comments on assignment {assignment_id} in course {course_id}.
Get the rubric comments read state for student {user_id}, course {course_id}, assignment {assignment_id}.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Mark rubric comments read on my course submission · Mark rubric assessments as read
#
Ask an LLM
“As a student, how do I mark the rubric comments on my course submission as read?”
“Can only the submission owner mark rubric comments as seen in a course?”
Tell an agent
Mark the rubric comments on my assignment {assignment_id} submission in course {course_id} read for user {user_id}.
Acknowledge rubric comments for student {user_id} on course {course_id} assignment {assignment_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Check if a student has seen rubric grading (course) · Get rubric assessments read state
#
Ask an LLM
“Has a student viewed the rubric assessment grading on their course assignment?”
“Where do I check the rubric assessments read state for a course submission?”
Tell an agent
Check whether user {user_id} has seen the rubric assessment on assignment {assignment_id} in course {course_id}.
Get rubric assessments read state for course {course_id} assignment {assignment_id} student {user_id}.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Mark rubric grading read on my course submission · Mark rubric assessments as read
#
Ask an LLM
“How does a student acknowledge rubric assessment grading on a course assignment?”
“Can a student mark their course rubric assessment as viewed through the API?”
Tell an agent
Mark the rubric assessment on my course {course_id} assignment {assignment_id} submission as read for {user_id}.
Record that student {user_id} viewed rubric grading on assignment {assignment_id} in course {course_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Check if a student has seen rubric comments (section) · Get rubric assessments read state
#
Ask an LLM
“Can I check through a section whether a student read their new rubric comments?”
“Is there a section-scoped rubric_comments read-state lookup?”
Tell an agent
Check if user {user_id} in section {section_id} has read rubric comments on assignment {assignment_id}.
Get section {section_id} rubric comments read state for student {user_id} on assignment {assignment_id}.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Mark rubric comments read on my section submission · Mark rubric assessments as read
#
Ask an LLM
“Can a student mark rubric comments as read through their section?”
“Is there a section path for acknowledging new rubric comments on my submission?”
Tell an agent
Mark rubric comments read for user {user_id} on assignment {assignment_id} via section {section_id}.
Acknowledge rubric comments on student {user_id}'s section {section_id} assignment {assignment_id} submission.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Check if a student has seen rubric grading (section) · Get rubric assessments read state
#
Ask an LLM
“Can I see through a section whether a student viewed their rubric assessment?”
“Is there a section-level rubric_assessments read-state check?”
Tell an agent
Check if user {user_id} in section {section_id} has seen rubric grading on assignment {assignment_id}.
Get section {section_id} rubric assessments read state for student {user_id}, assignment {assignment_id}.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Mark rubric grading read on my section submission · Mark rubric assessments as read
#
Ask an LLM
“Can a student acknowledge rubric assessment grading through their section?”
“Is there a section path to mark my rubric assessment as viewed?”
Tell an agent
Mark the rubric assessment read for user {user_id} on assignment {assignment_id} via section {section_id}.
Record that student {user_id} in section {section_id} viewed rubric grading for assignment {assignment_id}.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Check if a student read document annotations (course) · Get document annotations read state
#
Ask an LLM
“Has a student read the annotations I made on their submitted document in a course?”
“Can I check document annotation read state for a course submission?”
Tell an agent
Check whether user {user_id} has read document annotations on assignment {assignment_id} in course {course_id}.
Get annotation read state for student {user_id}'s course {course_id} assignment {assignment_id} document.
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Mark document annotations read on my course submission · Mark document annotations as read
#
Ask an LLM
“How does a student mark the annotations on their submitted document as read in a course?”
“Can only the student who owns the submission mark document annotations read?”
Tell an agent
Mark document annotations read for user {user_id} on assignment {assignment_id} in course {course_id}.
Acknowledge the annotations on my course {course_id} assignment {assignment_id} document as {user_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Check if a student read document annotations (section) · Get document annotations read state
#
Ask an LLM
“Can I see through a section whether a student read annotations on their document?”
“Is there a section-scoped document annotations read-state lookup?”
Tell an agent
Check if user {user_id} in section {section_id} read document annotations on assignment {assignment_id}.
Get section {section_id} annotation read state for student {user_id}'s assignment {assignment_id} upload.
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Mark document annotations read on my section submission · Mark document annotations as read
#
Ask an LLM
“Can a student mark document annotations as read through their section?”
“Is there a section path to acknowledge annotations on my submitted file?”
Tell an agent
Mark document annotations read for user {user_id} on assignment {assignment_id} via section {section_id}.
Acknowledge annotations on student {user_id}'s section {section_id} assignment {assignment_id} document.
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submission_summary
Count graded, ungraded and missing course submissions · Submission Summary
#
Ask an LLM
“How many students in my course are graded, ungraded or haven't submitted an assignment?”
“Can a course submission summary include deactivated students?”
Tell an agent
Summarize submission counts for assignment {assignment_id} in course {course_id}.
Tell me how many course {course_id} students are graded, ungraded, or not submitted on assignment {assignment_id}.
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submission_summary
Count graded, ungraded and missing section submissions · Submission Summary
#
Ask an LLM
“What's the graded versus ungraded versus not-submitted breakdown for one section?”
“Can I get submission summary counts for an assignment in just one section?”
Tell an agent
Summarize submission counts for assignment {assignment_id} in section {section_id}.
Break down section {section_id} students by graded, ungraded and missing for assignment {assignment_id}.
Documentation
📖
Documentation
https://canvas.instructure.com/doc/api/
📖
Authentication
https://canvas.instructure.com/doc/api/file.oauth.html
📖
APIReference
https://canvas.instructure.com/doc/api/
📖
RateLimits
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/rate-limits/canvas-rate-limits.yml
Specifications
SDKs
Other Resources
🔗
Pagination
https://canvas.instructure.com/doc/api/file.pagination.html
🔗
Swagger
https://canvas.instructure.com/doc/api/api-docs.json
🔗
OAuthScopes
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/scopes/canvas-scopes.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/errors/canvas-problem-types.yml
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/data-model/canvas-data-model.yml