How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Canvas Submissions API

The Submissions API from Canvas — 32 operation(s) for submissions.

Canvas Submissions API is one of 145 APIs that Canvas publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Submissions. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, authentication docs, a GitHub repository, an API reference, and rate-limit docs.

This API exposes 46 operations across 32 paths, and defines 2 schemas. It is described by OpenAPI 3.2.0, at version v1.

Requests are made against 2 base URLs: https://canvas.instructure.com/api, https://{canvas_host}/api.

46 operations 32 paths 2 schemas 2 DELETE18 GET8 POST18 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.2.0
API Version
v1
Base URL
https://canvas.instructure.com/api/v1
Authentication
HTTP Bearer, OAuth 2.0
License
Resource Areas
1

Authentication & Security 2

Canvas Submissions API declares 2 security schemes for authenticating requests. It accepts HTTP bearer tokens (bearerAuth). It supports OAuth 2.0 (oauth2) using the authorizationCode flow. By default, every request must be authenticated.

  • bearerAuth — Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html
  • oauth2 — Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauthendpoints.html

Paths & Operations 46

Across 32 paths, the API surfaces 46 operations — 2 DELETE, 18 GET, 8 POST, 18 PUT. Each is listed below with its method, path, parameters, and response codes.

Submissions 46
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions
Submit an assignment
submit_assignment_courses 2 params body → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions
List assignment submissions
list_assignment_submissions_courses 4 params → 200
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions
Submit an assignment
submit_assignment_sections 2 params body → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions
List assignment submissions
list_assignment_submissions_sections 4 params → 200
GET
/v1/courses/{course_id}/students/submissions
List submissions for multiple assignments
list_submissions_for_multiple_assignments_courses 14 params → 200
GET
/v1/sections/{section_id}/students/submissions
List submissions for multiple assignments
list_submissions_for_multiple_assignments_sections 14 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}
Get a single submission
get_single_submission_courses 4 params → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}
Grade or comment on a submission
grade_or_comment_on_submission_courses 3 params body → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}
Get a single submission
get_single_submission_sections 4 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}
Grade or comment on a submission
grade_or_comment_on_submission_sections 3 params body → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Get a single submission by anonymous id
get_single_submission_by_anonymous_id_courses 4 params → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Grade or comment on a submission by anonymous id
grade_or_comment_on_submission_by_anonymous_id_courses 3 params body → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Get a single submission by anonymous id
get_single_submission_by_anonymous_id_sections 4 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/anonymous_submissions/{anonymous_id}
Grade or comment on a submission by anonymous id
grade_or_comment_on_submission_by_anonymous_id_sections 3 params body → 200
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/files
Upload a file
upload_file_courses 3 params → 200
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/files
Upload a file
upload_file_sections 3 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/gradeable_students
List gradeable students
list_gradeable_students 4 params → 200
GET
/v1/courses/{course_id}/assignments/gradeable_students
List multiple assignments gradeable students
list_multiple_assignments_gradeable_students 2 params → 200
POST
/v1/courses/{course_id}/submissions/update_grades
Grade or comment on multiple submissions
grade_or_comment_on_multiple_submissions_courses_submissions 1 param body → 200
POST
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/update_grades
Grade or comment on multiple submissions
grade_or_comment_on_multiple_submissions_courses_assignments 2 params body → 200
POST
/v1/sections/{section_id}/submissions/update_grades
Grade or comment on multiple submissions
grade_or_comment_on_multiple_submissions_sections_submissions 1 param body → 200
POST
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/update_grades
Grade or comment on multiple submissions
grade_or_comment_on_multiple_submissions_sections_assignments 2 params body → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark submission as read
mark_submission_as_read_courses 3 params → 200
DELETE
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark submission as unread
mark_submission_as_unread_courses 3 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark submission as read
mark_submission_as_read_sections 3 params → 200
DELETE
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read
Mark submission as unread
mark_submission_as_unread_sections 3 params → 200
PUT
/v1/courses/{course_id}/submissions/bulk_mark_read
Mark bulk submissions as read
mark_bulk_submissions_as_read_courses 1 param body → 200
PUT
/v1/sections/{section_id}/submissions/bulk_mark_read
Mark bulk submissions as read
mark_bulk_submissions_as_read_sections 1 param body → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}
Mark submission item as read
mark_submission_item_as_read_courses 4 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/read/{item}
Mark submission item as read
mark_submission_item_as_read_sections 4 params → 200
PUT
/v1/courses/{course_id}/submissions/{user_id}/clear_unread
Clear unread status for all submissions
clear_unread_status_for_all_submissions_courses 2 params → 200
PUT
/v1/sections/{section_id}/submissions/{user_id}/clear_unread
Clear unread status for all submissions
clear_unread_status_for_all_submissions_sections 2 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Get rubric assessments read state
get_rubric_assessments_read_state_courses_rubric_comments 3 params → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Mark rubric assessments as read
mark_rubric_assessments_as_read_courses_rubric_comments 3 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Get rubric assessments read state
get_rubric_assessments_read_state_courses_rubric_assessments 3 params → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Mark rubric assessments as read
mark_rubric_assessments_as_read_courses_rubric_assessments 3 params → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Get rubric assessments read state
get_rubric_assessments_read_state_sections_rubric_comments 3 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_comments/read
Mark rubric assessments as read
mark_rubric_assessments_as_read_sections_rubric_comments 3 params → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Get rubric assessments read state
get_rubric_assessments_read_state_sections_rubric_assessments 3 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/rubric_assessments/read
Mark rubric assessments as read
mark_rubric_assessments_as_read_sections_rubric_assessments 3 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Get document annotations read state
get_document_annotations_read_state_courses 3 params → 200
PUT
/v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Mark document annotations as read
mark_document_annotations_as_read_courses 3 params → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Get document annotations read state
get_document_annotations_read_state_sections 3 params → 200
PUT
/v1/sections/{section_id}/assignments/{assignment_id}/submissions/{user_id}/document_annotations/read
Mark document annotations as read
mark_document_annotations_as_read_sections 3 params → 200
GET
/v1/courses/{course_id}/assignments/{assignment_id}/submission_summary
Submission Summary
submission_summary_courses 4 params → 200
GET
/v1/sections/{section_id}/assignments/{assignment_id}/submission_summary
Submission Summary
submission_summary_sections 4 params → 200

Schemas 2

The contract defines 2 schemas that model the data the API accepts and returns. The most detailed are Submission__submissions (31 properties), SubmissionComment (8 properties). Each schema is shown below with its type and property counts.

SubmissionComment
object
8 properties
Submission__submissions
object
31 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

canvas-submissions-api-openapi.yml Raw ↑

Other APIs Canvas publishes across the network.

Canvas LMS GraphQL API
Canvas LTI Integrations
Canvas Courses API
Canvas Access Tokens API
Canvas Accessibility Course Scans API
Canvas Accessibility Course Statistics API
Canvas Account Calendars API
Canvas Account Domain Lookups API
Canvas Account Notifications API
Canvas Account Reports API
Canvas Accounts API
Canvas Accounts (Lti) API
Where this information came from

This is an independent, third-party profile of Canvas Submissions API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.