Canvas Submission Comments API

The Submission Comments API from Canvas — 3 operation(s) for submission comments.

Operations 4

PUT /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/{id} Edit a submission comment #
DELETE /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/{id} Delete a submission comment #
POST /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/comments/files Upload a file #
POST /v1/courses/{course_id}/assignments/{assignment_id}/submissions/{user_id}/annotation_notification Send annotation notification #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canvas-submission-comments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.

OpenAPI Specification

canvas-submission-comments-api-openapi.yml Raw ↑
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 <token>". 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