Canvas Group Categories API

The Group Categories API from Canvas — 12 operation(s) for group categories.

Operations 16

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

GET /v1/accounts/{account_id}/group_categories List group sets in an account · List group categories for a context #
Ask an LLM
“What group categories exist at the account level in Canvas?”
“Can I list only the non-collaborative group sets for a sub-account?”
Tell an agent
List the group categories in account {account_id}.
Show account {account_id} group sets with collaboration state {collaboration_state}.
POST /v1/accounts/{account_id}/group_categories Create a group set in an account · Create a Group Category #
Ask an LLM
“How do I set up a new group category across an entire account?”
“Can an account-wide group set allow self signup or cap group size?”
Tell an agent
Create an account group category named {name} in account {account_id}.
Add group set {name} to account {account_id} with a limit of {group_limit} members per group.
GET /v1/courses/{course_id}/group_categories List group sets in a course · List group categories for a context #
Ask an LLM
“Which group sets has my instructor created in this course?”
“Are differentiation tags listed among a course's group categories?”
Tell an agent
List group categories for course {course_id}.
Show the course {course_id} group sets filtered by {collaboration_state}.
POST /v1/courses/{course_id}/group_categories Create a group set in a course · Create a Group Category #
Ask an LLM
“Can I create project groups for my class and have students split automatically?”
“Is it possible to auto-create a fixed number of groups when making a course group set?”
Tell an agent
Create a course group set called {name} in {course_id}.
Make group category {name} in course {course_id} and split students into {split_group_count} groups.
GET /v1/group_categories/{group_category_id} Get one group set · Get a single group category #
Ask an LLM
“Can I look up the settings of a specific group category?”
“Does a group set have self signup or auto leader turned on?”
Tell an agent
Get group category {group_category_id}.
Show the configuration of group set {group_category_id}.
PUT /v1/group_categories/{group_category_id} Edit a group set's settings · Update a Group Category #
Ask an LLM
“Can I rename a group category or change its member limit later?”
“Is turning on automatic group leaders for an existing set possible?”
Tell an agent
Rename group category {group_category_id} to {name}.
Set auto leader to {auto_leader} on group set {group_category_id}.
DELETE /v1/group_categories/{group_category_id} Delete a group set and its groups · Delete a Group Category #
Ask an LLM
“Does deleting a group category also delete every group inside it?”
“Which group sets are protected from deletion?”
Tell an agent destructive · confirm first
Delete group category {group_category_id} and all its groups.
Remove group set {group_category_id}.
POST /v1/courses/{course_id}/group_categories/bulk_manage_differentiation_tag Bulk create, rename or delete differentiation tags · Bulk manage differentiation tags #
Ask an LLM
“Can I create, rename and delete several differentiation tags in one request?”
“Do bulk differentiation tag changes roll back if one fails?”
Tell an agent
Apply differentiation tag operations {operations} to tag set {group_category} in course {course_id}.
In course {course_id}, bulk update the differentiation tags under {group_category} with {operations}.
GET /v1/courses/{course_id}/group_categories/differentiation_tag_candidate_count Count students eligible for a differentiation tag · Get differentiation tag candidate count #
Ask an LLM
“How many students in my course could be added to a differentiation tag?”
“Can I exclude certain users when counting differentiation tag candidates?”
Tell an agent
Count students in course {course_id} eligible for differentiation tag {differentiation_tag_id}.
Tell me how many course {course_id} students with role {enrollment_role_id} could be tagged.
POST /v1/courses/{course_id}/group_categories/import_tags Import differentiation tags from CSV · Import differentiation tags #
Ask an LLM
“Can I upload a CSV to create differentiation tags for my course?”
“What file format does the differentiation tag import expect?”
Tell an agent
Import differentiation tags into course {course_id} from {attachment}.
Create course {course_id} differentiation tags using the CSV {attachment}.
POST /v1/group_categories/{group_category_id}/import Import groups into a group set from CSV · Import category groups #
Ask an LLM
“Can I bulk-create groups inside a group set by uploading a spreadsheet?”
“Is importing group memberships from a CSV supported?”
Tell an agent
Import groups into group category {group_category_id} from {attachment}.
Load the CSV {attachment} to build groups in set {group_category_id}.
GET /v1/group_categories/{group_category_id}/groups List the groups in a group set · List groups in group category #
Ask an LLM
“Which groups belong to a particular group category?”
“Can I page through all the groups created under one set?”
Tell an agent
List the groups in group category {group_category_id}.
Show every group under set {group_category_id}.
GET /v1/group_categories/{group_category_id}/export Export a group set's groups and members as CSV · export groups in and users in category #
Ask an LLM
“Can I download a CSV of who is in each group of a group set?”
“Is the group membership export in a format I can re-import?”
Tell an agent
Export groups and users in category {group_category_id} to CSV.
Download the membership spreadsheet for group set {group_category_id}.
GET /v1/courses/{course_id}/group_categories/export_tags Export a course's differentiation tags and users · export tags and users in course #
Ask an LLM
“Can I get a CSV of which students carry which differentiation tags in a course?”
“Is there an export of tag assignments ready to re-import?”
Tell an agent
Export differentiation tags and their users for course {course_id}.
Download the course {course_id} tag membership CSV.
GET /v1/group_categories/{group_category_id}/users List users in a group set · List users in group category #
Ask an LLM
“Which students in a group set haven't been placed in a group yet?”
“Can I search the members of a group category by name?”
Tell an agent
List users in group category {group_category_id}.
Show unassigned students in group set {group_category_id}.
POST /v1/group_categories/{group_category_id}/assign_unassigned_members Spread unassigned students evenly across groups · Assign unassigned members #
Ask an LLM
“Can Canvas automatically place leftover students into existing groups?”
“Does auto-assigning group members run in the background or right away?”
Tell an agent
Assign all unassigned members of group category {group_category_id} to groups.
Evenly distribute leftover students in set {group_category_id}, synchronously {sync}.

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:canvas-group-categories-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-group-categories-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Group Categories 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:


# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-group-categories-api-openapi.yml