Canvas Assignment Groups API

The Assignment Groups API from Canvas — 2 operation(s) for assignment groups.

Operations 5

GET /v1/courses/{course_id}/assignment_groups List assignment groups #
POST /v1/courses/{course_id}/assignment_groups Create an Assignment Group #
GET /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Get an Assignment Group #
PUT /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Edit an Assignment Group #
DELETE /v1/courses/{course_id}/assignment_groups/{assignment_group_id} Destroy an Assignment Group #

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-assignment-groups-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-assignment-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Assignment Groups 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: Assignment Groups
  x-resource: assignment_groups
  externalDocs:
    url: https://canvas.instructure.com/doc/api/assignment_groups.html
paths:
  /v1/courses/{course_id}/assignment_groups:
    get:
      tags:
      - Assignment Groups
      operationId: list_assignment_groups
      summary: List assignment groups
      description: 'Returns the paginated list of assignment groups for the current context.

        The returned groups are sorted by their position field.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - assignments
            - discussion_topic
            - all_dates
            - assignment_visibility
            - overrides
            - submission
            - observed_users
            - can_edit
            - score_statistics
            - peer_review
        required: false
        description: 'Associations to include with the group. "discussion_topic", "all_dates", "can_edit",

          "assignment_visibility" & "submission" are only valid if "assignments" is also included.

          "score_statistics" requires that the "assignments" and "submission" options are included.

          The "assignment_visibility" option additionally requires that the Differentiated Assignments course feature be turned on.

          If "observed_users" is passed along with "assignments" and "submission", submissions for observed users will also be included as an array.

          The "peer_review" option requires that the Peer Review Grading course feature be turned on and that "assignments" is included.'
      - name: assignment_ids
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: 'If "assignments" are included, optionally return only assignments having their ID in this array. This argument may also be passed as

          a comma separated string.'
      - name: exclude_assignment_submission_types
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - online_quiz
            - discussion_topic
            - wiki_page
            - external_tool
        required: false
        description: 'If "assignments" are included, those with the specified submission types

          will be excluded from the assignment groups.'
      - name: override_assignment_dates
        in: query
        schema:
          type: boolean
        required: false
        description: Apply assignment overrides for each assignment, defaults to true.
      - name: grading_period_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'The id of the grading period in which assignment groups are being requested

          (Requires grading periods to exist.)'
      - name: scope_assignments_to_student
        in: query
        schema:
          type: boolean
        required: false
        description: 'If true, all assignments returned will apply to the current user in the

          specified grading period. If assignments apply to other students in the

          specified grading period, but not the current user, they will not be

          returned. (Requires the grading_period_id argument and grading periods to

          exist. In addition, the current user must be a student.)'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AssignmentGroup'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/assignment_groups.html
    post:
      tags:
      - Assignment Groups
      operationId: create_assignment_group
      summary: Create an Assignment Group
      description: Create a new assignment group for this course.
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The assignment group's name
                position:
                  type: integer
                  format: int64
                  description: The position of this assignment group in relation to the other assignment groups
                group_weight:
                  type: number
                  description: The percent of the total grade that this assignment group represents
                sis_source_id:
                  type: string
                  description: The sis source id of the Assignment Group
                integration_data:
                  type: object
                  additionalProperties: true
                  description: The integration data of the Assignment Group
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The assignment group's name
                position:
                  type: integer
                  format: int64
                  description: The position of this assignment group in relation to the other assignment groups
                group_weight:
                  type: number
                  description: The percent of the total grade that this assignment group represents
                sis_source_id:
                  type: string
                  description: The sis source id of the Assignment Group
                integration_data:
                  type: object
                  additionalProperties: true
                  description: The integration data of the Assignment Group
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentGroup'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/assignment_groups.html
  /v1/courses/{course_id}/assignment_groups/{assignment_group_id}:
    get:
      tags:
      - Assignment Groups
      operationId: get_assignment_group
      summary: Get an Assignment Group
      description: Returns the assignment group with the given id.
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: assignment_group_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - assignments
            - discussion_topic
            - assignment_visibility
            - submission
            - score_statistics
        required: false
        description: 'Associations to include with the group. "discussion_topic" and "assignment_visibility" and "submission"

          are only valid if "assignments" is also included. "score_statistics" is only valid if "submission" and

          "assignments" are also included. The "assignment_visibility" option additionally requires that the Differentiated Assignments

          course feature be turned on.'
      - name: override_assignment_dates
        in: query
        schema:
          type: boolean
        required: false
        description: Apply assignment overrides for each assignment, defaults to true.
      - name: grading_period_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'The id of the grading period in which assignment groups are being requested

          (Requires grading periods to exist on the account)'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentGroup'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/assignment_groups.html
    put:
      tags:
      - Assignment Groups
      operationId: edit_assignment_group
      summary: Edit an Assignment Group
      description: Modify an existing Assignment Group.
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: assignment_group_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The assignment group's name
                position:
                  type: integer
                  format: int64
                  description: The position of this assignment group in relation to the other assignment groups
                group_weight:
                  type: number
                  description: The percent of the total grade that this assignment group represents
                sis_source_id:
                  type: string
                  description: The sis source id of the Assignment Group
                integration_data:
                  type: object
                  additionalProperties: true
                  description: The integration data of the Assignment Group
                rules:
                  type: string
                  description: 'The grading rules that are applied within this assignment group

                    See the Assignment Group object definition for format'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The assignment group's name
                position:
                  type: integer
                  format: int64
                  description: The position of this assignment group in relation to the other assignment groups
                group_weight:
                  type: number
                  description: The percent of the total grade that this assignment group represents
                sis_source_id:
                  type: string
                  description: The sis source id of the Assignment Group
                integration_data:
                  type: object
                  additionalProperties: true
                  description: The integration data of the Assignment Group
                rules:
                  type: string
                  description: 'The grading rules that are applied within this assignment group

                    See the Assignment Group object definition for format'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentGroup'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/assignment_groups.html
    delete:
      tags:
      - Assignment Groups
      operationId: destroy_assignment_group
      summary: Destroy an Assignment Group
      description: Deletes the assignment group with the given id.
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: assignment_group_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: move_assignments_to
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'The ID of an active Assignment Group to which the assignments that are

          currently assigned to the destroyed Assignment Group will be assigned.

          NOTE: If this argument is not provided, any assignments in this Assignment

          Group will be deleted.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentGroup'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/assignment_groups.html
components:
  schemas:
    AssignmentGroup:
      type: object
      properties:
        id:
          type: integer
          example: 1
          description: the id of the Assignment Group
        name:
          type: string
          example: group2
          description: the name of the Assignment Group
        position:
          type: integer
          example: 7
          description: the position of the Assignment Group
        group_weight:
          type: integer
          example: 20
          description: the weight of the Assignment Group
        sis_source_id:
          type: string
          example: '1234'
          description: the sis source id of the Assignment Group
        integration_data:
          type: object
          additionalProperties: true
          example:
            '5678': 0954
          description: the integration data of the Assignment Group
        assignments:
          type: array
          items:
            type: integer
          example: []
          description: the assignments in this Assignment Group (see the Assignment API for a detailed list of fields)
        rules:
          type: string
          description: the grading rules that this Assignment Group has
  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