Canvas Groups API

The Groups API from Canvas — 17 operation(s) for groups.

Operations 25

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

POST /v1/groups/{group_id}/files Start a file upload to a group · Upload a file #
Ask an LLM
“How do I upload a file into a student group's files?”
“Can I add an avatar image file to a group before setting it as the avatar?”
Tell an agent
Start uploading a file to group {group_id}.
Request an upload slot for a new file in group {group_id}'s files.
POST /v1/group_categories/{group_category_id}/groups Create a group inside a group set · Create a group #
Ask an LLM
“How do I add a new group to an existing group set in a course?”
“Can I give a group in a category its own SIS group ID?”
Tell an agent
Create a group named {name} in group category {group_category_id}.
Add group {name} to group set {group_category_id} with join level {join_level}.
GET /v1/users/self/groups List groups I belong to · List your groups #
Ask an LLM
“Which groups am I a member of?”
“Can I see only my course groups, not account groups?”
Tell an agent
List all my active groups.
Show my groups in {context_type} contexts only.
GET /v1/accounts/{account_id}/groups List groups in an account · List the groups available in a context #
Ask an LLM
“What groups exist across a whole Canvas account?”
“Can an admin list only the account-level groups they belong to?”
Tell an agent
List the groups in account {account_id}.
Show account {account_id} groups with only own groups set to {only_own_groups}.
GET /v1/courses/{course_id}/groups List groups in a course · List the groups available in a context #
Ask an LLM
“Which student groups have been set up in my course?”
“Can I filter a course's groups by collaboration state?”
Tell an agent
List the groups in course {course_id}.
Show course {course_id} groups with collaboration state {collaboration_state}.
GET /v1/courses/{course_id}/bulk_user_tags Get differentiation tags for many users · Bulk fetch user tags for multiple users in a course #
Ask an LLM
“Which differentiation tags are assigned to each student in a course?”
“Can I look up tag memberships for a list of users in one call?”
Tell an agent
Get the user tags for users {user_ids} in course {course_id}.
Map every student in course {course_id} to their differentiation tag IDs.
GET /v1/groups/{group_id} Get a single group · Get a single group #
Ask an LLM
“How do I look up one group's details by ID?”
“Will I get an error if I fetch a group I don't have rights to see?”
Tell an agent
Get group {group_id}.
Show group {group_id} including {include}.
PUT /v1/groups/{group_id} Edit a group's name, settings or members · Edit a group #
Ask an LLM
“Can I rename a group or change its description?”
“How do I set a group's avatar after uploading the image?”
Tell an agent
Rename group {group_id} to {name}.
Set the avatar of group {group_id} to file {avatar_id}.
DELETE /v1/groups/{group_id} Delete a group · Delete a group #
Ask an LLM
“What happens to members when a group is deleted?”
“Can I remove a group I no longer need?”
Tell an agent destructive · confirm first
Delete group {group_id}.
Remove group {group_id} and all of its members.
POST /v1/groups Create a community group · Create a group #
Ask an LLM
“How do I create a community group that isn't tied to a course?”
“Can I make a public community group anyone can join?”
Tell an agent
Create a community group named {name}.
Create community group {name} described as {description} with join level {join_level}.
POST /v1/groups/{group_id}/invite Invite people to a group by email · Invite others to a group #
Ask an LLM
“Can I invite people to join a group using their email addresses?”
“How do I send group invitations to several people?”
Tell an agent
Invite {invitees} to group {group_id}.
Email a join invitation for group {group_id} to {invitees}.
GET /v1/groups/{group_id}/users List users in a group · List group's users #
Ask an LLM
“Who are the people in a particular group?”
“Can I leave inactive users out of a group's user list?”
Tell an agent
List users in group {group_id}.
Search group {group_id} for users matching {search_term}.
DELETE /v1/groups/{group_id}/users Bulk remove members from a group · Bulk delete memberships Bulk deletes memberships by providing an array of user… #
Ask an LLM
“Can I remove many members from a group at once by user ID?”
“Is there a way to strip every course student out of a differentiation tag group?”
Tell an agent destructive · confirm first
Remove users {user_ids} from group {group_id}.
Remove all course students from tag group {group_id} except {exclude_user_ids}, with all in group course {all_in_group_course}.
POST /v1/groups/{group_id}/preview_html Preview processed HTML for a group · Preview processed html #
Ask an LLM
“Can I preview how HTML will render inside a group's pages?”
“What does group content processing do to my HTML?”
Tell an agent
Preview how {html} renders in group {group_id}.
Run this HTML through group {group_id}'s processing and show me: {html}
GET /v1/groups/{group_id}/activity_stream Show my activity stream for a group · Group activity stream #
Ask an LLM
“What's been happening recently in one of my groups?”
“Can I see just a group's discussions and announcements feed?”
Tell an agent
Show my activity stream for group {group_id}.
List recent activity in group {group_id}.
GET /v1/groups/{group_id}/activity_stream/summary Summarize my group activity stream · Group activity stream summary #
Ask an LLM
“How many unread items do I have in a group, by type?”
“Is there a count-only summary of a group's activity?”
Tell an agent
Summarize my activity stream counts for group {group_id}.
Give me unread activity totals in group {group_id}.
GET /v1/groups/{group_id}/permissions Check my permissions in a group · Permissions #
Ask an LLM
“Am I allowed to post discussions in this group?”
“Which group-level rights does my user have?”
Tell an agent
Check my permissions in group {group_id}.
Tell me whether I have {permissions} in group {group_id}.
GET /v1/groups/{group_id}/memberships List a group's memberships · List group memberships #
Ask an LLM
“Who has a pending request to join my group?”
“Can I list group memberships filtered by state, like invited or accepted?”
Tell an agent
List memberships in group {group_id}.
Show group {group_id} memberships in states {filter_states}.
POST /v1/groups/{group_id}/memberships Join or add someone to a group · Create a membership #
Ask an LLM
“How do I join a group or request to join it?”
“Can I add a specific user to a group as a member?”
Tell an agent
Add user {user_id} to group {group_id}.
Add members {members} to group {group_id}.
GET /v1/groups/{group_id}/memberships/{membership_id} Get a group membership by membership ID · Get a single group membership #
Ask an LLM
“Can I look up a group membership record using its membership ID?”
“What state is a particular membership in?”
Tell an agent
Get membership {membership_id} in group {group_id}.
Show the status of group {group_id} membership {membership_id}.
PUT /v1/groups/{group_id}/memberships/{membership_id} Accept or moderate a membership by ID · Update a membership #
Ask an LLM
“How do I accept a pending join request using the membership ID?”
“Can I make a member a group moderator by their membership record?”
Tell an agent
Accept membership {membership_id} in group {group_id} by setting state {workflow_state}.
Set moderator to {moderator} for membership {membership_id} in group {group_id}.
DELETE /v1/groups/{group_id}/memberships/{membership_id} Leave a group by membership ID · Leave a group #
Ask an LLM
“Can I leave a group I joined using my membership ID?”
“Why can't I leave some teacher-created course groups?”
Tell an agent destructive · confirm first
Leave group {group_id} by removing membership {membership_id}.
Remove membership {membership_id} from group {group_id}.
GET /v1/groups/{group_id}/users/{user_id} Get a group membership by user ID · Get a single group membership #
Ask an LLM
“Is a given user a member of this group, and in what state?”
“Can I look up a membership using the user's ID instead of the membership ID?”
Tell an agent
Get the membership of user {user_id} in group {group_id}.
Check whether user {user_id} belongs to group {group_id}.
PUT /v1/groups/{group_id}/users/{user_id} Accept or moderate a membership by user · Update a membership #
Ask an LLM
“How do I accept a user's request to join my group using their user ID?”
“Can I grant moderator rights to a specific user in a group?”
Tell an agent
Accept user {user_id}'s request to join group {group_id} with state {workflow_state}.
Set moderator to {moderator} for user {user_id} in group {group_id}.
DELETE /v1/groups/{group_id}/users/{user_id} Remove a user from a group by user ID · Leave a group #
Ask an LLM
“Can I remove a particular user from a group by their user ID?”
“How does a user leave a group when I only know their user ID?”
Tell an agent destructive · confirm first
Remove user {user_id} from group {group_id}.
Have user {user_id} leave group {group_id}.

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-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-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST 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:


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