About the Canvas APIs

Canvas has 2 APIs that are publicly available to developers:

Both APIs communicate with the same data in Canvas, but do so using different methods.

This isn’t going to be about the differences between the REST and GraphQL APIs. But a developer should know that everything that is accessible through the REST API is NOT included in the GraphQL API.

The GraphQL API is recently new. Why is that important? Because Canvas has said that new features will be primarily developed in the GraphQL API.

A developer should also know that Canvas requires administrators to generate developer keys to access the admin’s Canvas environment through the API. Overall the Canvas API helps third-party developers implement integration features with a school’s Canvas environment, such as:

  • Single sign-on
  • Rostering
  • Content integration
  • Grade passback

Single Sign-On

Besides signing into the app, the app can create an account for a user if this is the user’s first time signing in or match the user with an existing account. This function is done through Canva’s authentication process.

Canvas uses the OAuth2 protocol to authenticate users into external apps. This protocol will authenticate a user without passing their password to the app. If an edtech developer wishes to use any other part of the Canvas API, the user will first need to be authenticated by Canvas. This is a developer’s first step in creating deep linking integrations with Canvas.


The Canvas API can be used to retrieve a list of users, their courses, and enrollments. These lists are helpful for developers who want to create accounts for users before the user logs in. In addition to rostering through the API, developers can gather lists of real-time enrollments (think about the changes for when a student leaves or joins a course during the school year).

Content Integration

Once a user is authenticated by Canvas, a third-party app can act on the user’s behalf. So, a developer can generate resources that appear in the user's Canvas environment. Content integration lets apps better communicate with Canvas while maintaining control of the app’s user experience.

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

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

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

Here’s a full list of all resources that are available through the API.

Grade Passback

The API can also integrate to assign grades to students. The Canvas API can sync grades between assignments in an app and the Canvas gradebook. This feature reduces the time teachers spend gathering grades and adding to their gradebooks.

When developers rely on the API to sync grades, they won't have to spend time developing a gradebook or other methods to export grades.

How do I get started with the Canvas API?

Here’s the Canvas API documentation here. As Canvas is open source, developers can install Canvas for free on servers for testing.

Read More on Canvas

Here are other articles we’ve written on Canvas to help you on your journey:

If you're looking for a partner who can help guide you through developing LMS integrations (like these), then let’s introduce ourselves. We’re Edlink!

Introducing Edlink
Our Mission at Edlink
What is the Edlink Unified API?