Skip to content

api-evangelist/canvas-lms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Canvas LMS (canvas-lms)

Canvas is the open, AGPLv3-licensed learning management system created and maintained by Instructure, Inc. and used by more than 30 million students, teachers, and administrators across higher education, K-12, business, and government. Canvas exposes a deep REST API (190+ resource groups), a GraphQL API, full IMS LTI 1.3 / LTI Advantage services, a Platform Notification Service for server-to-server webhooks, the Data Access Platform (DAP / Canvas Data 2) for warehouse-scale data export, and the SIS Import API for bulk provisioning.

URL: Visit APIs.json

Run: Capabilities Using Naftiko

Tags

  • Learning Management, Education, EdTech, LMS, LTI, Higher Education, K-12, Open Source, AGPL, Canvas

Timestamps

  • Created: 2026-05-25
  • Modified: 2026-05-25

Deployment Options

Mode Hosting Licensing Source
Canvas Free for Teacher canvas.instructure.com (Instructure-hosted) Free, individual teacher accounts Closed (same Canvas binary)
Canvas Cloud (Institutional) Instructure-hosted, per-tenant Contract-priced per FTE / learner Closed (same Canvas binary)
Canvas Self-Hosted Customer infrastructure AGPL-3.0-or-later, no license fee instructure/canvas-lms

APIs

Canvas REST API

The canonical Canvas REST API at /api/v1. 190+ controller-driven resource groups covering Accounts, Courses, Enrollments, Users, Assignments, Submissions, Modules, Discussion Topics, Files, Outcomes, Quizzes, Rubrics, SIS Imports, Developer Keys, External Tools, AI Conversations, AI Experiences, Audit Logs, and more. OAuth2 (RFC 6749) authentication; pagination via RFC 5988 Link headers.

Human URL: https://canvas.instructure.com/doc/api/

Canvas GraphQL API

GraphQL endpoint at /api/graphql exposing the Canvas object graph with the same authentication and permissions model as the REST API. Hosted GraphiQL explorer at /graphiql.

Human URL: https://canvas.instructure.com/doc/api/file.graphql.html

Canvas LTI Advantage Services

1EdTech (IMS Global) LTI 1.3 / LTI Advantage implementation: Deep Linking 2.0, Names and Role Provisioning (NRPS), Assignment & Grade Services (Line Items, Score, Result), Dynamic Registration, Platform Notification Service, and JWK-based key exchange. JWT client-assertion authentication per the IMS Security Framework.

Human URL: https://canvas.instructure.com/doc/api/file.tools_intro.html

Canvas Platform Notification Service

Server-to-server webhook delivery to LTI tools outside the scope of an active user session. Tools register notice handlers for specific event types and receive signed deliveries that integrate with the IMS LTI 1.3 security model.

Human URL: https://canvas.instructure.com/doc/api/file.pns.html

Canvas Data Access Platform (DAP)

Warehouse-scale data export API for Canvas Data 2 — the successor to Canvas Data 1 / Canvas Data CLI. Exposes Canvas tables and Caliper-derived event streams as snapshot and incremental queries against the canvas and catalog namespaces.

Human URL: https://data-access-platform-api.s3.amazonaws.com/index.html

Canvas SIS Import API

Ingests Canvas's canonical SIS CSV format (and ZIP archives of those CSVs) to provision accounts, terms, courses, sections, users, enrollments, groups, group memberships, cross-listings, user observers, logins, admins, change-sis-id mappings, and admin differentiation tags. Supports diffing, batch mode, and asynchronous progress polling.

Human URL: https://canvas.instructure.com/doc/api/sis_imports.html

Open Source Projects

Repo Language Purpose
instructure/canvas-lms Ruby Canvas LMS core source (6,600+ stars)
instructure/canvas-ios Swift Canvas iOS apps (Student, Teacher, Parent)
instructure/canvas-android Kotlin Canvas Android apps
instructure/canvas-rce-api JavaScript Canvas Rich Content Editor API
instructure/canvas-self-hosted Shell Dockerized self-hosted starter
instructure/dap-client-py Python DAP / Canvas Data 2 client
instructure/pandarus Ruby Ruby Canvas API client + code generator
instructure/canvas_oauth_engine Ruby Mountable Rails engine for Canvas OAuth
instructure/ims-lti Ruby IMS LTI library for Ruby
instructure/basiclti-util-java Java Basic LTI utilities for Java
instructure/instructure-ui TypeScript Canvas UI component library
instructure/qti Ruby QTI quiz format library
instructure/QTIMigrationTool Python QTI 1.x → 2.0 converter
instructure/moodle2cc Ruby Moodle → Common Cartridge converter
instructure/common-cartridge-viewer JavaScript Common Cartridge browser viewer
instructure/analytics Ruby Canvas Analytics plugin
instructure/canvas_connect Ruby Adobe Connect plugin for Canvas
instructure/canvas-studio-api-examples Python Canvas Studio API examples

Authentication

The Canvas REST API uses OAuth2 (RFC 6749) with the authorization-code grant:

GET  https://<canvas-install-url>/login/oauth2/auth?client_id=...&response_type=code&state=...&redirect_uri=...
POST https://<canvas-install-url>/login/oauth2/token

Clients must be registered as a Developer Key in the target Canvas account. Manual personal access tokens may be generated from a user's profile for testing only — using them in production violates the Canvas API Policy. Admin users may impersonate other users on read endpoints by appending as_user_id={id} (Masquerading).

LTI 1.3 services use JWT client-assertion authentication per the IMS Security Framework.

Rate Limits

Canvas applies per-user-per-host leaky-bucket throttling. Each response includes X-Request-Cost (units consumed) and X-Rate-Limit-Remaining (room left in the bucket). When the bucket fills, requests return HTTP 403 with body 403 Forbidden (Rate Limit Exceeded). Default Canvas Cloud sizing is roughly a 700-unit bucket with a 5-unit/second drain; operators can tune these per install.

See rate-limits/canvas-lms-rate-limits.yml and the Throttling docs.

Plans & Pricing

Instructure does not publish per-seat list pricing. Canvas is sold in three modes:

  • Canvas Free for Teacher — Free hosted tenant at canvas.instructure.com for individual teachers; limited storage and no SIS / DAP / SLA.
  • Canvas Cloud (Institutional) — Per-FTE contract, quoted by Instructure sales; includes SIS Import API, DAP, PNS, SSO, 99.9% SLA, and account administration.
  • Canvas Self-Hosted — AGPL-3.0 source from instructure/canvas-lms, run on customer infrastructure; no license fee, no commercial support, no DAP.

Add-on products: Canvas Studio (video), Canvas Catalog (course discovery + commerce), Canvas Credentials (Open Badges 3.0 / Verifiable Credentials).

See plans/canvas-lms-plans-pricing.yml.

Common

Maintainers

About

Canvas is the open, AGPLv3-licensed learning management system created and maintained by Instructure, Inc. and used by more than 30 million students, teachers, and administrators across higher education, K-12, business, and government. Canvas exposes a deep REST API (190+ resource groups covering Accounts, Courses, Enrollments, Assignments,…

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors