Instructure Developer Documentation Portal
Community
  • Introduction
  • Services
    • Elevate Standards Alignment - AB Connect API
      • Introduction
        • Authentication
        • Addressing Object Properties
        • Requesting Additional Properties in the Response
        • Filtering Using ODATA Like Statements
        • Sorting
        • Facets
        • Paging Data
        • Call Throttling
        • Working with Related Object
        • Error Responses
        • Character Set Support
        • How To Articles, Recommendations and Suggestions
        • Examples
        • Using AB Connect's Embeddable Widgets
      • Reference
        • Standards
        • Standard Collections
        • Events
        • Topics
        • Concepts
        • Assets
        • Asset Definitions
        • Asset Collections
        • Managing and Predicting Relationships
        • Providers
    • Canvas LMS
      • Basics
        • GraphQL
        • API Change Log
        • SIS IDs
        • Pagination
        • Throttling
        • Compound Documents
        • File Uploads
        • API Endpoint Attributes
        • Masquerading
      • OAuth2
        • OAuth2 Overview
        • OAuth2 Endpoints
        • Developer Keys
      • Resources
        • Access Tokens
        • Account Calendars
        • Account Domain Lookups
        • Account Notifications
        • Account Reports
        • Accounts
        • Accounts (LTI)
        • Admins
        • Analytics
        • Announcement External Feeds
        • Announcements
        • API Token Scopes
        • Appointment Groups
        • Assignment Extensions
        • Assignment Groups
        • Assignments
        • Authentication Providers
        • Authentications Log
        • Blackout Dates
        • BlockEditorTemplate
        • Blueprint Courses
        • Bookmarks
        • Brand Configs
        • Calendar Events
        • Collaborations
        • CommMessages
        • Communication Channels
        • Conferences
        • Content Exports
        • Content Migrations
        • Content Security Policy Settings
        • Content Shares
        • Conversations
        • Course Audit log
        • Course Pace
        • Course Quiz Extensions
        • Course Reports
        • Courses
        • Custom Gradebook Columns
        • Developer Key Account Bindings
        • Developer Keys
        • Discussion Topics
        • Enrollment Terms
        • Enrollments
        • ePortfolios
        • ePub Exports
        • Error Reports
        • External Tools
        • Favorites
        • Feature Flags
        • Files
        • Grade Change Log
        • Gradebook History
        • Grading Period Sets
        • Grading Periods
        • Grading Standards
        • Group Categories
        • Groups
        • History
        • InstAccess tokens
        • JWTs
        • Late Policy
        • Learning Object Dates
        • Line Items
        • LiveAssessments
        • Logins
        • LTI Launch Definitions
        • LTI Registrations
        • LTI Resource Links
        • Media Objects
        • Moderated Grading
        • Modules
        • Names and Role
        • New Quiz Items
        • New Quizzes
        • New Quizzes Accommodations
        • New Quizzes Reports
        • Notification Preferences
        • Originality Reports
        • Outcome Groups
        • Outcome Imports
        • Outcome Results
        • Outcomes
        • Pages
        • Peer Reviews
        • Planner
        • Poll Sessions
        • PollChoices
        • Polls
        • PollSubmissions
        • Proficiency Ratings
        • Progress
        • Public JWK
        • Quiz Assignment Overrides
        • Quiz Extensions
        • Quiz IP Filters
        • Quiz Question Groups
        • Quiz Questions
        • Quiz Reports
        • Quiz Statistics
        • Quiz Submission Events
        • Quiz Submission Files
        • Quiz Submission Questions
        • Quiz Submission User List
        • Quiz Submissions
        • Quizzes
        • Result
        • Roles
        • Rubrics
        • Sandboxes
        • Score
        • Search
        • Sections
        • Services
        • Shared Brand Configs
        • SIS Import Errors
        • SIS Imports
        • SIS Integration
        • Smart Search
        • Submission Comments
        • Submissions
        • Tabs
        • Temporary Enrollment Pairings
        • User Observees
        • Users
        • What If Grades
      • Outcomes
        • Outcomes CSV Format
      • Group Categories
        • Group Categories CSV Format
      • SIS
        • SIS CSV Format
      • External Tools
        • LTI
          • Introduction
          • Registration
          • Launch Overview
          • Configuring
          • Variable Substitutions
          • Deep Linking
          • Grading
          • Provisioning
          • PostMessage
          • Platform Notification Service
          • Placements
            • Placements Overview
            • Navigation
            • Homework Submission
            • Editor Button
            • Migration Selection
            • Link Selection (Modules)
            • Assignment Selection
            • Collaborations
        • xAPI
        • Canvas Roles
        • Plagiarism Detection Platform
          • Overview
          • Plagiarism Detection Platform Assignments
          • Plagiarism Detection Platform Users
          • Plagiarism Detection Submissions
          • Webhooks Subscriptions for Plagiarism Platform
          • JWT Access Tokens
      • Data Services
        • Live Events
          • Overview
            • Introduction
            • Setup
            • Caliper
            • Metadata
          • Event Format
            • Canvas
              • Account
              • Asset
              • Assignment
              • Attachment
              • Content
              • Conversation
              • Course
              • Discussion
              • Enrollment
              • Grade
              • Group
              • Learning
              • Logged
              • Module
              • Outcome
              • Outcomes
              • Plagiarism
              • Quiz
              • Rubric
              • Sis
              • Submission
              • Syllabus
              • User
              • Wiki
            • Caliper IMS 1.1
              • Assessment
              • Basic
              • Forum
              • Grading
              • Navigation Events
              • Session
    • Catalog
      • APIs
        • Analytics
        • Bulk Enrollments
        • Catalogs
        • Certificates
        • Completed Certificates
        • Courses
        • Email Domain Set
        • Enrollments
        • Orders
        • Programs
        • Progresses
        • Tags
        • User Registrations
        • Users
        • Waitlist Applicants
    • Credentials
      • Getting Started
      • Authentication
        • Password-Based Authentication
        • Authorization Code-Based Authentication
      • Pagination
      • APIs
        • Assertions
        • Backpack
        • Badgeclasses
        • Issuers
        • Organizations
        • Users
      • Release Notes
    • Data Access Platform
      • Key Concepts
      • Data Formats
      • Rate Limits & Policies
      • Datasets
        • Namespaces
          • canvas
            • canvas types
          • canvas_logs
          • catalog
        • Additional Notes
        • Entity Relationship Diagram
      • Query API
        • Authentication
        • Reference
      • Command Line (DAP CLI)
        • Getting Started
        • Secure Connection
        • Reference
          • dap snapshot
          • dap incremental
          • dap list
          • dap schema
          • dap initdb
          • dap syncdb
          • dap dropdb
      • Client Library
        • Examples
        • Reference
      • Release Notes
      • Status
    • DataSync
      • Interop API
      • Interop Data API
      • Grades Exchange API
      • OneRoster API
      • Platform API
    • Instructure Media
      • Studio API
    • Quizzes
      • Quiz API
Powered by GitBook

Copyright © 2008-2024 Instructure, Inc. All rights reserved. Various trademarks held by their respective owners.

On this page
  • List your groups
  • List the groups available in a context.
  • Get a single group
  • Create a group
  • Edit a group
  • Delete a group
  • Invite others to a group
  • List group's users
  • Upload a file
  • Preview processed html
  • Group activity stream
  • Group activity stream summary
  • Permissions
  • List group memberships
  • Get a single group membership
  • Create a membership
  • Update a membership
  • Leave a group

Was this helpful?

  1. Services
  2. Canvas LMS
  3. Resources

Groups

Groups serve as the data for a few different ideas in Canvas. The first is that they can be a community in the canvas network. The second is that they can be organized by students in a course, for study or communication (but not grading). The third is that they can be organized by teachers or account administrators for the purpose of projects, assignments, and grading. This last kind of group is always part of a group category, which adds the restriction that a user may only be a member of one group per category.

All of these types of groups function similarly, and can be the parent context for many other types of functionality and interaction, such as collections, discussions, wikis, and shared files.

Group memberships are the objects that tie users and groups together.

A Group object looks like:

{
  // The ID of the group.
  "id": 17,
  // The display name of the group.
  "name": "Math Group 1",
  // A description of the group. This is plain text.
  "description": null,
  // Whether or not the group is public.  Currently only community groups can be
  // made public.  Also, once a group has been set to public, it cannot be changed
  // back to private.
  "is_public": false,
  // Whether or not the current user is following this group.
  "followed_by_user": false,
  // How people are allowed to join the group.  For all groups except for
  // community groups, the user must share the group's parent course or account. 
  // For student organized or community groups, where a user can be a member of as
  // many or few as they want, the applicable levels are
  // 'parent_context_auto_join', 'parent_context_request', and 'invitation_only'. 
  // For class groups, where students are divided up and should only be part of
  // one group of the category, this value will always be 'invitation_only', and
  // is not relevant. * If 'parent_context_auto_join', anyone can join and will be
  // automatically accepted. * If 'parent_context_request', anyone  can request to
  // join, which must be approved by a group moderator. * If 'invitation_only',
  // only those how have received an invitation my join the group, by accepting
  // that invitation.
  "join_level": "invitation_only",
  // The number of members currently in the group
  "members_count": 0,
  // The url of the group's avatar
  "avatar_url": "https://<canvas>/files/avatar_image.png",
  // The course or account that the group belongs to. The pattern here is that
  // whatever the context_type is, there will be an _id field named after that
  // type. So if instead context_type was 'account', the course_id field would be
  // replaced by an account_id field.
  "context_type": "Course",
  // The course or account name that the group belongs to.
  "context_name": "Course 101",
  "course_id": 3,
  // Certain types of groups have special role designations. Currently, these
  // include: 'communities', 'student_organized', and 'imported'. Regular
  // course/account groups have a role of null.
  "role": null,
  // The ID of the group's category.
  "group_category_id": 4,
  // The SIS ID of the group. Only included if the user has permission to view SIS
  // information.
  "sis_group_id": "group4a",
  // The id of the SIS import if created through SIS. Only included if the user
  // has permission to manage SIS information.
  "sis_import_id": 14,
  // the storage quota for the group, in megabytes
  "storage_quota_mb": 50,
  // optional: the permissions the user has for the group. returned only for a
  // single group and include[]=permissions
  "permissions": {"create_discussion_topic":true,"create_announcement":true},
  // optional: A list of users that are members in the group. Returned only if
  // include[]=users. WARNING: this collection's size is capped (if there are an
  // extremely large number of users in the group (thousands) not all of them will
  // be returned).  If you need to capture all the users in a group with certainty
  // consider using the paginated /api/v1/groups/<group_id>/memberships endpoint.
  "users": null,
  // Indicates whether this group category is non-collaborative. A value of true
  // means these group categories rely on the manage_tags permissions and do not
  // have collaborative features
  "non_collaborative": null
}

A GroupMembership object looks like:

{
  // The id of the membership object
  "id": 92,
  // The id of the group object to which the membership belongs
  "group_id": 17,
  // The id of the user object to which the membership belongs
  "user_id": 3,
  // The current state of the membership. Current possible values are 'accepted',
  // 'invited', and 'requested'
  "workflow_state": "accepted",
  // Whether or not the user is a moderator of the group (the must also be an
  // active member of the group to moderate)
  "moderator": true,
  // optional: whether or not the record was just created on a create call (POST),
  // i.e. was the user just added to the group, or was the user already a member
  "just_created": true,
  // The id of the SIS import if created through SIS. Only included if the user
  // has permission to manage SIS information.
  "sis_import_id": 4
}

GET /api/v1/users/self/groups

Scope: url:GET|/api/v1/users/self/groups

Returns a paginated list of active groups for the current user.

Request Parameters:

Parameter
Type
Description

context_type

string

Only include groups that are in this type of context.

Allowed values: Account, Course

include[]

string

Allowed values: tabs

Example Request:

curl https://<canvas>/api/v1/users/self/groups?context_type=Account \
     -H 'Authorization: Bearer <token>'

GET /api/v1/accounts/:account_id/groups

Scope: url:GET|/api/v1/accounts/:account_id/groups

GET /api/v1/courses/:course_id/groups

Scope: url:GET|/api/v1/courses/:course_id/groups

Returns the paginated list of active groups in the given context that are visible to user.

Request Parameters:

Parameter
Type
Description

only_own_groups

boolean

Will only include groups that the user belongs to if this is set

include[]

string

Allowed values: tabs

collaboration_state

string

Filter groups by their collaboration state:

  • “all”: Return both collaborative and non-collaborative groups

  • “collaborative”: Return only collaborative groups (default)

  • “non_collaborative”: Return only non-collaborative groups

Example Request:

curl https://<canvas>/api/v1/courses/1/groups \
     -H 'Authorization: Bearer <token>'

GET /api/v1/groups/:group_id

Scope: url:GET|/api/v1/groups/:group_id

Returns the data for a single group, or a 401 if the caller doesn’t have the rights to see it.

Request Parameters:

Parameter
Type
Description

include[]

string

  • “permissions”: Include permissions the current user has for the group.

Allowed values: permissions, tabs

Example Request:

curl https://<canvas>/api/v1/groups/<group_id> \
     -H 'Authorization: Bearer <token>'

POST /api/v1/groups

Scope: url:POST|/api/v1/groups

POST /api/v1/group_categories/:group_category_id/groups

Scope: url:POST|/api/v1/group_categories/:group_category_id/groups

Creates a new group. Groups created using the “/api/v1/groups/” endpoint will be community groups.

Request Parameters:

Parameter
Type
Description

name

string

The name of the group

description

string

A description of the group

is_public

boolean

whether the group is public (applies only to community groups)

join_level

string

no description

Allowed values: parent_context_auto_join, parent_context_request, invitation_only

storage_quota_mb

integer

The allowed file storage for the group, in megabytes. This parameter is ignored if the caller does not have the manage_storage_quotas permission.

sis_group_id

string

The sis ID of the group. Must have manage_sis permission to set.

Example Request:

curl https://<canvas>/api/v1/groups \
     -F 'name=Math Teachers' \
     -F 'description=A place to gather resources for our classes.' \
     -F 'is_public=true' \
     -F 'join_level=parent_context_auto_join' \
     -H 'Authorization: Bearer <token>'

PUT /api/v1/groups/:group_id

Scope: url:PUT|/api/v1/groups/:group_id

Request Parameters:

Parameter
Type
Description

name

string

The name of the group

description

string

A description of the group

is_public

boolean

Whether the group is public (applies only to community groups). Currently you cannot set a group back to private once it has been made public.

join_level

string

no description

Allowed values: parent_context_auto_join, parent_context_request, invitation_only

avatar_id

integer

The id of the attachment previously uploaded to the group that you would like to use as the avatar image for this group.

storage_quota_mb

integer

The allowed file storage for the group, in megabytes. This parameter is ignored if the caller does not have the manage_storage_quotas permission.

members[]

string

An array of user ids for users you would like in the group. Users not in the group will be sent invitations. Existing group members who aren’t in the list will be removed from the group.

sis_group_id

string

The sis ID of the group. Must have manage_sis permission to set.

override_sis_stickiness

boolean

Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness

Example Request:

curl https://<canvas>/api/v1/groups/<group_id> \
     -X PUT \
     -F 'name=Algebra Teachers' \
     -F 'join_level=parent_context_request' \
     -H 'Authorization: Bearer <token>'

DELETE /api/v1/groups/:group_id

Scope: url:DELETE|/api/v1/groups/:group_id

Deletes a group and removes all members.

Example Request:

curl https://<canvas>/api/v1/groups/<group_id> \
     -X DELETE \
     -H 'Authorization: Bearer <token>'

POST /api/v1/groups/:group_id/invite

Scope: url:POST|/api/v1/groups/:group_id/invite

Sends an invitation to all supplied email addresses which will allow the receivers to join the group.

Request Parameters:

Parameter
Type
Description

invitees[]

Required string

An array of email addresses to be sent invitations.

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/invite \
     -F 'invitees[]=leonard@example.com' \
     -F 'invitees[]=sheldon@example.com' \
     -H 'Authorization: Bearer <token>'

GET /api/v1/groups/:group_id/users

Scope: url:GET|/api/v1/groups/:group_id/users

Returns a paginated list of users in the group.

Request Parameters:

Parameter
Type
Description

search_term

string

The partial name or full ID of the users to match and return in the results list. Must be at least 3 characters.

include[]

string

“avatar_url”: Include users’ avatar_urls.

Allowed values: avatar_url

exclude_inactive

boolean

Whether to filter out inactive users from the results. Defaults to false unless explicitly provided.

Example Request:

curl https://<canvas>/api/v1/groups/1/users \
     -H 'Authorization: Bearer <token>'

POST /api/v1/groups/:group_id/files

Scope: url:POST|/api/v1/groups/:group_id/files

Upload a file to the group.

Only those with the “Manage Files” permission on a group can upload files to the group. By default, this is anybody participating in the group, or any admin over the group.

POST /api/v1/groups/:group_id/preview_html

Scope: url:POST|/api/v1/groups/:group_id/preview_html

Preview html content processed for this group

Request Parameters:

Parameter
Type
Description

html

string

The html content to process

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/preview_html \
     -F 'html=<p><badhtml></badhtml>processed html</p>' \
     -H 'Authorization: Bearer <token>'

Example Response:

{
  "html": "<p>processed html</p>"
}

GET /api/v1/groups/:group_id/activity_stream

Scope: url:GET|/api/v1/groups/:group_id/activity_stream

Returns the current user’s group-specific activity stream, paginated.

For full documentation, see the API documentation for the user activity stream, in the user api.

GET /api/v1/groups/:group_id/activity_stream/summary

Scope: url:GET|/api/v1/groups/:group_id/activity_stream/summary

Returns a summary of the current user’s group-specific activity stream.

For full documentation, see the API documentation for the user activity stream summary, in the user api.

GET /api/v1/groups/:group_id/permissions

Scope: url:GET|/api/v1/groups/:group_id/permissions

Request Parameters:

Parameter
Type
Description

permissions[]

string

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/permissions \
  -H 'Authorization: Bearer <token>' \
  -d 'permissions[]=read_roster'
  -d 'permissions[]=send_messages_all'

Example Response:

{'read_roster': 'true', 'send_messages_all': 'false'}

GET /api/v1/groups/:group_id/memberships

Scope: url:GET|/api/v1/groups/:group_id/memberships

A paginated list of the members of a group.

Request Parameters:

Parameter
Type
Description

filter_states[]

string

Only list memberships with the given workflow_states. By default it will return all memberships.

Allowed values: accepted, invited, requested

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/memberships \
     -F 'filter_states[]=invited&filter_states[]=requested' \
     -H 'Authorization: Bearer <token>'

GET /api/v1/groups/:group_id/memberships/:membership_id

Scope: url:GET|/api/v1/groups/:group_id/memberships/:membership_id

GET /api/v1/groups/:group_id/users/:user_id

Scope: url:GET|/api/v1/groups/:group_id/users/:user_id

Returns the group membership with the given membership id or user id.

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/memberships/<membership_id> \
     -H 'Authorization: Bearer <token>'
curl https://<canvas>/api/v1/groups/<group_id>/users/<user_id> \
     -H 'Authorization: Bearer <token>'

POST /api/v1/groups/:group_id/memberships

Scope: url:POST|/api/v1/groups/:group_id/memberships

Join, or request to join, a group, depending on the join_level of the group. If the membership or join request already exists, then it is simply returned.

For differentiation tags, you can bulk add users using one of two methods:

  1. Provide an array of user IDs via the ‘members[]` parameter.

  2. Use the course-wide option with the following parameters:

    • ‘all_in_group_course` [Boolean]: If set to true, the endpoint will add every currently enrolled student (from the course context) to the differentiation tag.

    • ‘exclude_user_ids[]` [Integer]: When using `all_in_group_course`, you can optionally exclude specific users by providing their IDs in this parameter.

In this context, these parameters only apply to differentiation tag memberships.

Request Parameters:

Parameter
Type
Description

user_id

string

  • The ID of the user for individual membership creation.

members[]

integer

  • Bulk add multiple users to a differentiation tag.

all_in_group_course

boolean

  • If true, add all enrolled students from the course.

exclude_user_ids[]

integer

  • An array of user IDs to exclude when using all_in_group_course.

Example Request:

(Individual membership creation)
curl https://<canvas>/api/v1/groups/<group_id>/memberships \
     -F 'user_id=self' \
     -H 'Authorization: Bearer <token>'
(Bulk addition using members array)
curl https://<canvas>/api/v1/groups/<group_id>/memberships \
     -F 'members[]=123' \
     -F 'members[]=456' \
     -H 'Authorization: Bearer <token>'
(Bulk addition using all_in_group_course with exclusions)
curl https://<canvas>/api/v1/groups/<group_id>/memberships \
     -F 'all_in_group_course=true' \
     -F 'exclude_user_ids[]=123' \
     -H 'Authorization: Bearer <token>'

PUT /api/v1/groups/:group_id/memberships/:membership_id

Scope: url:PUT|/api/v1/groups/:group_id/memberships/:membership_id

PUT /api/v1/groups/:group_id/users/:user_id

Scope: url:PUT|/api/v1/groups/:group_id/users/:user_id

Accept a membership request, or add/remove moderator rights.

Request Parameters:

Parameter
Type
Description

workflow_state

string

Currently, the only allowed value is “accepted”

Allowed values: accepted

moderator

string

no description

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/memberships/<membership_id> \
     -F 'moderator=true'
     -H 'Authorization: Bearer <token>'
curl https://<canvas>/api/v1/groups/<group_id>/users/<user_id> \
     -F 'moderator=true'
     -H 'Authorization: Bearer <token>'

DELETE /api/v1/groups/:group_id/memberships/:membership_id

Scope: url:DELETE|/api/v1/groups/:group_id/memberships/:membership_id

DELETE /api/v1/groups/:group_id/users/:user_id

Scope: url:DELETE|/api/v1/groups/:group_id/users/:user_id

Leave a group if you are allowed to leave (some groups, such as sets of course groups created by teachers, cannot be left). You may also use ‘self’ in place of a membership_id.

Example Request:

curl https://<canvas>/api/v1/groups/<group_id>/memberships/<membership_id> \
     -X DELETE \
     -H 'Authorization: Bearer <token>'
curl https://<canvas>/api/v1/groups/<group_id>/users/<user_id> \
     -X DELETE \
     -H 'Authorization: Bearer <token>'

PreviousGroup CategoriesNextHistory

Last updated 14 days ago

Was this helpful?

“tabs”: Include the list of tabs configured for each group. See the for more information.

Returns a list of objects.

“tabs”: Include the list of tabs configured for each group. See the for more information.

Returns a list of objects.

“tabs”: Include the list of tabs configured for each group. See the for more information.

Returns a object.

Returns a object.

Modifies an existing group. Note that to set an avatar image for the group, you must first upload the image file to the group, and the use the id in the response as the argument to this function. See the for details on the file upload workflow.

Returns a object.

Returns a object.

Returns a list of objects.

This API endpoint is the first step in uploading a file to a group. See the for details on the file upload workflow.

Returns permission information for the calling user in the given group. See also the and counterparts.

List of permissions to check against the authenticated user. Permission names are documented in the endpoint.

Returns a list of objects.

Returns a object.

Returns a object.

This documentation is generated directly from the Canvas LMS source code, available .

GroupsController#index
GroupsController#context_index
GroupsController#show
GroupsController#create
GroupsController#update
File Upload Documentation
GroupsController#destroy
GroupsController#invite
GroupsController#users
GroupsController#create_file
File Upload Documentation
GroupsController#preview_html
GroupsController#activity_stream
GroupsController#activity_stream_summary
GroupsController#permissions
GroupMembershipsController#index
GroupMembershipsController#show
GroupMembershipsController#create
GroupMembershipsController#update
GroupMembershipsController#destroy
on Github
List your groups
Group
List the groups available in a context.
Group
Get a single group
Group
Create a group
Group
Edit a group
Group
Delete a group
Group
Invite others to a group
List group's users
Upload a file
Preview processed html
Group activity stream
Group activity stream summary
Permissions
List group memberships
GroupMembership
Get a single group membership
GroupMembership
Create a membership
Update a membership
GroupMembership
Leave a group
Course
Account
User
List available tabs API
List available tabs API
List available tabs API
Create a role