Schools that use Canvas are searching for vendors who can provide products that integrate with their LMS. Integrations can help make the lives of teachers easier and save you time when you develop your app. Making sure that your app offers integration with Canvas is a great way to win over schools when technology admins are looking for vendors to work with.

One way to integrate external apps with Canvas is to use the Canvas API. The Canvas API helps third-party developers implement functions that let their apps communicate with a school's Canvas environment. Today, we're going to discuss how the Canvas API works and some of the important functions you can build into your app.

About the Canvas APIs

Canvas actually has two APIs that are publicly available to developers: a REST API and a GraphQL API. Both APIs communicate with the same data in Canvas but do so using different methods.

We're not going to cover all of the differences between the REST and GraphQL APIs. However, you should know that Canvas' GraphQL API is more recent. According to Canvas, new features will be primarily developed in the GraphQL API. Also, not everything that is accessible through the REST API is included in the GraphQL API.

Note that Canvas requires administrators to generate developer keys in order to access their Canvas environment through the API. More information about Canvas developer keys can be found here.

Single Sign-On

SSO - or single sign-on - allows apps to authenticate students and teachers with their Canvas credentials. The app can then create an account for the user if this is their first time signing in or match the user with an existing account.

Canvas uses the OAuth2 protocol to authenticate users into external apps. This protocol will authenticate a user without passing their password to the app. There are many benefits to implementing SSO into your app. If you wish to use any other part of the Canvas API, you'll need to first authenticate Canvas users through SSO.


The Canvas API can be used to retrieve a lists of users, their courses, and their enrollments. This is helpful if you want to be able to create accounts for users before they login. In addition, rostering through the API lets you gather lists of enrollments in real time, reflecting changes when students leave or join courses during the school year.

Content Integration

Once a user is authenticated by Canvas, your app can act on their behalf. This means that your can generate resources that appear in the user's Canvas environment. Content integration lets you better communicate with Canvas while maintaining control of your user experience.

For example, you can use the API to create quizzes in Canvas. A teacher could use this feature in your app to generate quizzes that they assign to their class. Students could then access the quiz from their course in Canvas to complete the quiz.

The Canvas API actually supports API interactions with a large array of resources in Canvas. There are several types of data that your app can access, create, or modify, including:

  • Assignments
  • Polls
  • Rubrics
  • Department analytics
  • Bookmarks
  • Calendar events
  • Discussion topics
  • Groups
  • Modules

Click here for a full list of all resources that are available through the API.

Grade Passback

The API can also be used to assign grades to students. The Canvas API can sync grades between assignments in your app and the Canvas gradebook. This reduces the amount of time teachers have to usually spend to get grades from an external source into their gradebooks.

This benefits you, as well. By relying on the API to sync grades between Canvas gradebooks and your app, you won't have to spend time developing your own gradebook or other methods to export grades.

How do I get started with the Canvas API?

You can find the Canvas API documentation here. As Canvas is open source, you can also install Canvas for free on your own servers for testing. Check out our other posts on Canvas and LMS integration for more information on the topics discussed here.

If you'd like to learn more about how you can integrate your app with Canvas using the Canvas API, you should send us a note. We'd be happy to talk to you about our solutions and how we've been able to help our clients integrate with a variety of learning management systems, like Canvas, Schoology, Blackboard, Google Classroom, and more. If you're interested in hearing more, please email us at or send us a message on our support page.