openapi: 3.2.0 info: title: Canvas LMS REST Submission Comments API version: v1 summary: The complete Canvas LMS REST API, converted from the Swagger 1.2 documents Instructure publishes under https://canvas.instructure.com/doc/api/. description: The Canvas LMS REST API covers courses, assignments, quizzes, grades, users, enrollments, accounts, files, modules, rubrics, submissions, SIS imports, LTI, analytics and account administration. contact: name: Instructure Canvas url: https://canvas.instructure.com/doc/api/ license: name: AGPL-3.0 url: https://github.com/instructure/canvas-lms/blob/master/LICENSE servers: - url: https://canvas.instructure.com/api description: Instructure-hosted Canvas (canvas.instructure.com) - url: https://{canvas_host}/api description: Any Canvas instance; Canvas is multi-tenant and self-hostable, so the host is the institution's Canvas domain. variables: canvas_host: default: canvas.instructure.com description: Your institution's Canvas hostname, e.g. school.instructure.com security: - bearerAuth: [] - oauth2: [] tags: - name: Submission Comments x-resource: submission_comments externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html paths: /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/{id}: put: tags: - Submission Comments operationId: edit_submission_comment summary: Edit a submission comment description: Edit the given submission comment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: comment: type: string description: If this argument is present, edit the text of a comment. application/x-www-form-urlencoded: schema: type: object properties: comment: type: string description: If this argument is present, edit the text of a comment. responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: SubmissionComment externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html delete: tags: - Submission Comments operationId: delete_submission_comment summary: Delete a submission comment description: Delete the given submission comment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: SubmissionComment externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files: post: tags: - Submission Comments operationId: upload_file_submission_comments summary: Upload a file description: 'Upload a file to attach to a submission comment See the {file:file.file_uploads.html File Upload Documentation} for details on the file upload workflow. The final step of the file upload workflow will return the attachment data, including the new file id. The caller can then PUT the file_id to the submission API to attach it to a comment' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/annotation_notification: post: tags: - Submission Comments operationId: send_annotation_notification summary: Send annotation notification description: 'Send notification of annotation to other users of the submission Must have permission to send_messages on Site Admin account. annotation notifications go to all users on the submission and the observers for those users. annotation notifications also go to the instructors unless it is sent from an instructor. annotation notifications from instructors go to students if assignment is set to post automatically or if the assignment is posted. returns {}, status 200' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: author_id: type: string description: The user that created the annotation required: - author_id application/x-www-form-urlencoded: schema: type: object properties: author_id: type: string description: The user that created the annotation required: - author_id responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/submission_comments.html components: securitySchemes: bearerAuth: type: http scheme: bearer description: 'Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html' oauth2: type: oauth2 description: Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauth_endpoints.html flows: authorizationCode: authorizationUrl: https://canvas.instructure.com/login/oauth2/auth tokenUrl: https://canvas.instructure.com/login/oauth2/token refreshUrl: https://canvas.instructure.com/login/oauth2/token scopes: {} externalDocs: description: Canvas LMS REST API Documentation url: https://canvas.instructure.com/doc/api/ x-generated-from: https://canvas.instructure.com/doc/api/api-docs.json x-provenance: method: derived derived_by: API Evangelist enrichment pipeline (Swagger 1.2 -> OpenAPI 3.1 conversion) source: openapi/_original/swagger-1.2/*.json (144 verbatim first-party Swagger 1.2 documents) source_url: https://canvas.instructure.com/doc/api/api-docs.json fetched: '2026-09-05' http_status: 200