Product
Jentic OSThe workplace. An in-house AI platform for every employeeJentic OneSafe access. Agents reach your systems without holding keysJentic AIRThe foundation. Gets your existing platforms ready for AI
Pricing
Developers

GET STARTED

API DirectoryBrowse 10,000+ APIs Ready For AI Agent IntegrationDocumentationGuides and API reference

TOOLS

API ScoringCheck your AI Readiness using our scorecardArazzo UIVisualize Arazzo Workflows As Interactive DocumentationArazzo EditorBuild And Edit Multi-Step API Workflows Visually

COMMUNITY

GitHubOpen source projects and examplesOpen StandardsBuilt on open specs. Never locked in.
Resources
Company
About UsOur mission and teamCareersJoin our teamContactGet in touch
Try it now
Jentic OSJentic OneJentic AIR
Pricing
API DirectoryDocumentationAPI ScoringArazzo UIArazzo EditorGitHubOpen Standards
Resources
About UsCareersContact
Try it now
JenticJentic
Products
  • Jentic OS
  • Jentic One
  • Jentic AIR
For Developers
  • API Directory
  • Documentation
  • GitHub
Company
  • About Jentic
  • Careers
  • Contact Us
  • Trust Centre
ISO/IEC 27001:2022 certification badge issued by Prescient SecurityISO/IEC 27001:2022 certification badge issued by Prescient Security

Information Security Management System

Certified to ISO/IEC 27001:2022 by Prescient Security

Terms & Conditions•Privacy Policy•
© 2026 Jentic Technology Ltd. All rights reserved.
Switch to light modeSwitch to dark mode
APIs / Education / Canvas LMS API
Canvas LMS API logo

Developerdocs Instructure Canvas LMS API

Agent-ready OpenAPI document · curated by JenticEducationLmsbearer2 EndpointsREST

Know of an official OpenAPI document? Contribute it →

For Agents

List courses and read course detail from a Canvas LMS instance to power reporting, sync, and learning-analytics automations.

Use for: I need to list every active course on the Canvas instance for the new semester, Retrieve the full record for a Canvas course by ID, Get the course title and start date for course 12345, Monitor the Canvas course catalog for newly published courses

Not supported: Does not handle assignments, submissions, gradebook entries, or user enrolments - use for course list and detail reads only.

Jentic publishes the only available OpenAPI specification for Canvas LMS API, keeping it validated and agent-ready. The Canvas Learning Management System REST API is used by universities, K-12 districts, and corporate learning teams to programmatically read course catalogs and individual course detail. This curated spec covers the two foundational course endpoints that anchor most Canvas integrations and unblock automation against an instance hosted on Instructure's cloud or self-managed.

Jentic One on GithubView OpenAPI Document

Install Jentic One Beta

Connect the Canvas LMS API to your agent

Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Canvas LMS API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.

Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.

1

Step 1: Jentic One Host machine

# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fdeveloperdocs.instructure.com%2Fcanvas-lms" | sh
2

Step 2: Agent machine

# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fdeveloperdocs.instructure.com%2Fcanvas-lms" | sh
jentic register       # connects your agent to your Jentic One instance

Jentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.

Capabilities

What an agent can do with Canvas LMS API.

List all courses on the Canvas instance through GET /courses for catalog sync and reporting

Read full detail for a single course via GET /courses/{course_id} including settings and metadata

Authenticate with a Canvas-issued bearer access token scoped per instance

Target any Canvas instance by templating the {instance} server variable for cloud or on-premise deployments

Anchor downstream sync into a data warehouse, BI tool, or LRS using stable course identifiers

Use Cases

Patterns agents use Canvas LMS API for, with concrete tasks.

★ Course catalog sync to data warehouse

Institutional research and learning-analytics teams use the list-courses endpoint to keep a warehouse copy of the Canvas course catalog in sync. The job pages through GET /courses on a schedule and reads detail for each course via GET /courses/{course_id}. This unlocks downstream reporting in tools like Snowflake, BigQuery, or Looker without hitting the live LMS for every query.

Call GET /courses, page through results, then for each course id call GET /courses/{course_id} and store the detail rows in a staging table.

Course directory for a custom student portal

Schools running a custom student portal alongside Canvas can read the course list and detail to render a directory page outside of Canvas itself. The bearer token model lets the portal call Canvas with an institutional service account and cache responses for fast page loads. Useful when the institution wants Canvas as the system of record but a different surface for discovery.

Fetch GET /courses and render a JSON list of course names and IDs for the portal homepage, then resolve detail on demand via GET /courses/{course_id}.

Compliance and audit reporting on course inventory

Audit teams responsible for accreditation reporting can pull the canonical course list and per-course metadata through the API and reconcile it against the Student Information System. Pairing list-courses with retrieve-course produces the full inventory needed for regional accreditation reviews and Title IV reporting.

List all courses through GET /courses, then for each ID fetch GET /courses/{course_id} and export the combined dataset as a CSV for auditor review.

AI-agent course lookup via Jentic

AI agents helping faculty or administrators answer ad-hoc questions can look up a Canvas course by ID through Jentic instead of holding API keys directly. Jentic stores the bearer token in your Jentic One instance and answers natural-language queries like 'what is the start date of course 4567' by calling GET /courses/{course_id} and returning structured fields.

Search Jentic for 'get a Canvas course by ID', load the schema for GET /courses/{course_id}, and return the course name and enrolment_term_id for course 4567.

Key Endpoints

2 endpoints — jentic publishes the only available openapi specification for canvas lms api, keeping it validated and agent-ready.

METHOD

PATH

DESCRIPTION

GET

/courses

List courses on the Canvas instance

GET

/courses/{course_id}

Get a single course by ID

GET

/courses

List courses on the Canvas instance

GET

/courses/{course_id}

Get a single course by ID

Why Jentic?

What agents get from Jentic-routed access to this vendor.

Setup

Setup

Wiring the Canvas LMS API by hand means setting the bearer header, filling in your institution's instance host, and paging the course list yourself. Through Jentic you install once, import the Canvas LMS API from the API Directory, store the access token once, and your agent calls it.

Permission scoping

Permission scoping

The course id travels in the URL path (/courses/{course_id}), so a rule can pin your agent to reads for a given course. You choose the operations it may call, and both are read-only, so the agent cannot touch assignments, submissions, or enrolments.

Credential management

Credential isolation

Your Canvas access token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.

Intent-based discovery

Intent-based discovery

Agents search Jentic by intent such as 'list Canvas courses' or 'get a Canvas course by ID', and Jentic returns the matching Canvas operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

Related APIs

Alternatives and complements available in the Jentic catalogue.

Alternative

Schoology

→

Schoology is a competing K-12 and higher-ed LMS with a comparable course-and-enrolment API

Choose Schoology when the institution standardised on Schoology rather than Canvas; the agent flow is similar but the auth and base URL differ.

Alternative

Moodle

→

Moodle is the open-source LMS alternative to Canvas with a web services API

Choose Moodle when the institution self-hosts an open-source LMS rather than running Canvas Cloud.

Complementary

Google Classroom

→

Google Classroom often runs alongside Canvas for K-12 day-to-day course flow while Canvas handles formal record-keeping

Use Classroom for daily lesson distribution and Canvas for the registrar-of-record course catalog.

FAQs

Specific to using Canvas LMS API through Jentic.

Why is there no official OpenAPI spec for Canvas LMS API?

Instructure publishes Canvas API documentation but not a single canonical OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Canvas LMS API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

What authentication does the Canvas LMS API use?

Canvas uses HTTP bearer authentication with a Canvas-issued access token scoped to the user that minted it. Tokens can be generated from a user's profile settings or via the Canvas OAuth2 developer flow. Through Jentic the token is stored in your Jentic One instance and injected per call.

Can I list all courses on my Canvas instance with this API?

Yes. Call GET /courses on your instance's /api/v1 base URL. The response includes course IDs that you can pass to GET /courses/{course_id} to retrieve full detail for each course.

What are the rate limits for the Canvas LMS API?

Canvas applies a per-token request quota with a leaky-bucket algorithm. The quota and refill rate vary by instance and are returned in the X-Request-Cost header. The OpenAPI spec does not declare numeric limits because they are tenant-specific. Build with retry-on-429 and monitor the cost header.

How do I look up a Canvas course through Jentic?

Run pip install jentic, then with the async client search for 'get a Canvas course by ID', load the schema for GET /courses/{course_id}, and execute with the course_id parameter. Jentic returns the parsed JSON response.

Does this Canvas API spec cover assignments and submissions?

No. This curated spec covers the two course endpoints (list and retrieve). Assignments, submissions, users, and enrolments are not in this spec - they are part of the broader Canvas REST API and would need to be added separately.

Can I limit what my agent is allowed to do with the Canvas LMS API?

Yes. Jentic One is self-hosted by you, so your own rules decide which Canvas operations and credentials the agent may use. Both endpoints in this spec are read-only, GET /courses and GET /courses/{course_id}, so you can allow only course list and detail reads and the agent cannot touch assignments, submissions, or enrolments. Because the course id travels in the URL path, a rule can pin the agent to reads for a specific course.

GET STARTED

Start building with Canvas LMS API

Explore with Jentic One
View OpenAPI Document