Canvas Enrollments API

The Enrollments API from Canvas — 12 operation(s) for enrollments.

Operations 14

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v1/courses/{course_id}/enrollments List enrollments in a course · List enrollments #
Ask an LLM
“Who is enrolled in my course, students and teachers alike?”
“Can I list only the active student enrollments in a course?”
Tell an agent
List the enrollments in course {course_id}.
List {type} enrollments in course {course_id} with state {state}.
POST /v1/courses/{course_id}/enrollments Enroll a user in a course · Enroll a user #
Ask an LLM
“How do I add a student to a course?”
“Can I enroll someone as a teacher and skip the invitation?”
Tell an agent
Enroll user {user_id} in course {course_id} as a {type}.
Add user {user_id} to course {course_id} as {type} with state {enrollment_state}.
GET /v1/sections/{section_id}/enrollments List enrollments in a section · List enrollments #
Ask an LLM
“Who is enrolled in a particular course section?”
“Can I filter a section's roster by role?”
Tell an agent
List the enrollments in section {section_id}.
List {role} enrollments in section {section_id}.
POST /v1/sections/{section_id}/enrollments Enroll a user in a section · Enroll a user #
Ask an LLM
“How do I put a student into a specific section?”
“Can I enroll a TA directly into one section of a course?”
Tell an agent
Enroll user {user_id} in section {section_id} as a {type}.
Add user {user_id} to section {section_id} as {type} and notify them by setting notify to {notify}.
GET /v1/users/{user_id}/enrollments List a user's enrollments · List enrollments #
Ask an LLM
“Which courses is a particular user enrolled in?”
“Can I see a student's enrollments for one grading period?”
Tell an agent
List all enrollments for user {user_id}.
List user {user_id}'s enrollments with state {state}.
GET /v1/accounts/{account_id}/enrollments/{id} Get an enrollment by ID · Enrollment by ID #
Ask an LLM
“What are the details of one enrollment record?”
“Can I look up a single enrollment by its ID within an account?”
Tell an agent
Get enrollment {id} in account {account_id}.
Show me enrollment record {id} from account {account_id}.
POST /v1/accounts/{account_id}/bulk_enrollment Bulk enroll users across courses · Enroll multiple users to one or more courses #
Ask an LLM
“How do I enroll a list of users into several courses at once?”
“Can I bulk-enroll people with a start and end date?”
Tell an agent
Enroll users {user_ids} into courses {course_ids} in account {account_id}.
Bulk enroll {user_ids} as {enrollment_type} in courses {course_ids} under account {account_id}.
DELETE /v1/courses/{course_id}/enrollments/{id} Conclude, deactivate or delete an enrollment · Conclude, deactivate, or delete an enrollment #
Ask an LLM
“How do I remove a student from a course?”
“What happens if I deactivate an enrollment instead of concluding it?”
Tell an agent destructive · confirm first
Conclude enrollment {id} in course {course_id}.
Apply task {task} to enrollment {id} in course {course_id}.
POST /v1/courses/{course_id}/enrollments/{id}/accept Accept a course invitation · Accept Course Invitation #
Ask an LLM
“How do I accept a pending invitation to join a course?”
“Can I accept my course invite through the API?”
Tell an agent
Accept my invitation {id} to course {course_id}.
Join course {course_id} by accepting pending enrollment {id}.
POST /v1/courses/{course_id}/enrollments/{id}/reject Decline a course invitation · Reject Course Invitation #
Ask an LLM
“How do I decline an invitation to a course?”
“Can I turn down a pending course invite?”
Tell an agent destructive · confirm first
Reject my invitation {id} to course {course_id}.
Decline pending enrollment {id} in course {course_id}.
PUT /v1/courses/{course_id}/enrollments/{id}/reactivate Reactivate an inactive enrollment · Re-activate an enrollment #
Ask an LLM
“How do I bring back a student whose enrollment was deactivated?”
“Can an inactive enrollment be turned back on?”
Tell an agent
Reactivate enrollment {id} in course {course_id}.
Make inactive enrollment {id} in course {course_id} active again.
PUT /v1/courses/{course_id}/users/{user_id}/last_attended Record a student's last attended date · Add last attended date #
Ask an LLM
“How do I record the last day a student attended my course?”
“Can I set a last attendance date on a student's enrollment?”
Tell an agent
Set user {user_id}'s last attended date in course {course_id} to {date}.
Record that student {user_id} last attended course {course_id} on {date}.
GET /v1/users/{user_id}/temporary_enrollment_status Check a user's temporary enrollment status · Show Temporary Enrollment recipient and provider status #
Ask an LLM
“Is this user giving or receiving a temporary enrollment?”
“Can I see whether someone is a temporary enrollment provider or recipient?”
Tell an agent
Show the temporary enrollment status for user {user_id}.
Check user {user_id}'s temporary enrollment status in account {account_id}.
GET /v1/temporary_enrollment_status Check temporary enrollment status for many users · Bulk Temporary Enrollment Status #
Ask an LLM
“Can I check temporary enrollment status for a whole list of users at once?”
“What's the limit on users per bulk temporary enrollment check?”
Tell an agent
Get temporary enrollment statuses for users {user_ids}.
Check temporary enrollment status in bulk for {user_ids} in account {account_id}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canvas:canvas-enrollments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

canvas-enrollments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Enrollments API
  version: v1
  summary: The complete Canvas LMS REST API, converted from the Swagger 1.2 documents Instructure publishes under https://canvas.instructure.com/doc/api/.
  description: The Canvas LMS REST API covers courses, assignments, quizzes, grades, users, enrollments, accounts, files, modules, rubrics, submissions, SIS imports, LTI, analytics and account administration.
  contact:
    name: Instructure Canvas
    url: https://canvas.instructure.com/doc/api/
  license:
    name: AGPL-3.0
    url: https://github.com/instructure/canvas-lms/blob/master/LICENSE
servers:
- url: https://canvas.instructure.com/api
  description: Instructure-hosted Canvas (canvas.instructure.com)
- url: https://{canvas_host}/api
  description: Any Canvas instance; Canvas is multi-tenant and self-hostable, so the host is the institution's Canvas domain.
  variables:
    canvas_host:
      default: canvas.instructure.com
      description: Your institution's Canvas hostname, e.g. school.instructure.com
security:
- bearerAuth: []
- oauth2: []
tags:


# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-enrollments-api-openapi.yml