Canvas Accounts API

The Accounts API from Canvas — 19 operation(s) for accounts.

Operations 21

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/accounts List accounts I can view or manage · List accounts #
Ask an LLM
“Which Canvas accounts am I an admin of?”
“Why do students and teachers get an empty list of accounts?”
Tell an agent
List every account I can view or manage.
List my admin accounts and include {include}.
GET /v1/horizon_accounts List accounts with Horizon enabled · List horizon accounts #
Ask an LLM
“Which of my accounts have the Horizon setting turned on?”
“Is Site Admin included when I list Horizon accounts?”
Tell an agent
List the Horizon accounts I have access to.
Show my Horizon-enabled accounts including {include}.
GET /v1/manageable_accounts List accounts where I can manage courses · Get accounts that admins can manage #
Ask an LLM
“In which accounts do I have permission to create or manage courses as an admin?”
“What accounts can I manage courses in?”
Tell an agent
List the manageable accounts where I can administer courses.
Show the accounts I'm allowed to manage courses in.
GET /v1/course_creation_accounts List accounts where I can create courses · Get accounts that users can create courses in #
Ask an LLM
“Where am I allowed to create a new course?”
“Which accounts give me course-creation permission?”
Tell an agent
List the accounts I can create courses in.
Show where I have permission to start a new course.
GET /v1/course_accounts List accounts visible through my teaching roles · List accounts for course admins #
Ask an LLM
“As a teacher or TA, which accounts can I see through my course enrollments?”
“What accounts do my designer enrollments give me visibility into?”
Tell an agent
List the accounts I can see through my teacher, TA or designer enrollments.
Show the course-admin accounts tied to my enrollments.
GET /v1/accounts/{id} Get details of an account · Get a single account #
Ask an LLM
“What are the details of a specific account, by ID or SIS ID?”
“Can I look up an account using its SIS account ID?”
Tell an agent
Get account {id}.
Show me the details for the account with ID {id}.
PUT /v1/accounts/{id} Update an account's name and settings · Update an account #
Ask an LLM
“How do I rename an account or change its default time zone?”
“Can I change the default storage quota for courses in an account?”
Tell an agent
Rename account {id} to {name}.
Set the default time zone of account {id} to {default_time_zone}.
GET /v1/accounts/{account_id}/settings Get an account's settings · Settings #
Ask an LLM
“What settings are configured on my account?”
“Which permission do I need to read an account's settings?”
Tell an agent
Get the settings for account {account_id}.
Show me how account {account_id} is configured.
GET /v1/settings/environment Get global environment settings · List environment settings #
Ask an LLM
“What global settings does the root account expose to the web interface?”
“Can I read the ENV.SETTINGS values through the API?”
Tell an agent
List the environment settings for the root account.
Show the global ENV settings the web UI uses.
GET /v1/accounts/{account_id}/permissions Check my permissions on an account · Permissions #
Ask an LLM
“Do I have a given permission in this account?”
“Can I check permissions against the domain root account using self?”
Tell an agent
Check whether I have {permissions} on account {account_id}.
Show my permissions on account {account_id}.
GET /v1/accounts/{account_id}/sub_accounts List an account's sub-accounts · Get the sub-accounts of an account #
Ask an LLM
“What sub-accounts sit under this account?”
“Can I list sub-accounts recursively, all the way down the tree?”
Tell an agent
List the sub-accounts of account {account_id}.
List every nested sub-account under account {account_id}, recursively set to {recursive}.
POST /v1/accounts/{account_id}/sub_accounts Create a sub-account · Create a new sub-account #
Ask an LLM
“How do I add a new department as a sub-account?”
“Can I give a new sub-account its own SIS ID when I create it?”
Tell an agent
Create a sub-account called {name} under account {account_id}.
Add sub-account {name} with SIS ID {sis_account_id} to account {account_id}.
GET /v1/accounts/{account_id}/terms_of_service Get an account's terms of service · Get the Terms of Service #
Ask an LLM
“What terms of service does this account show users?”
“Where can I read the account's terms of use?”
Tell an agent
Get the terms of service for account {account_id}.
Show account {account_id}'s terms of use.
GET /v1/manually_created_courses_account Get the manually-created courses sub-account · Get the manually-created courses sub-account for the domain root account #
Ask an LLM
“Which sub-account holds courses that were created by hand?”
“Where do manually created courses land in the root account?”
Tell an agent
Get the manually-created courses sub-account for the root account.
Show the sub-account that holds hand-made courses.
GET /v1/accounts/{account_id}/courses List and search courses in an account · List active courses in an account #
Ask an LLM
“What courses exist in this account?”
“Can I find only published courses in a given term?”
Tell an agent
List the courses in account {account_id}.
Search account {account_id} for courses matching {search_term}.
DELETE /v1/accounts/{account_id}/users/{user_id} Remove a user from the root account · Delete a user from the root account #
Ask an LLM
“How do I delete a user from my institution's root account?”
“Will removing a user here also remove them from other root accounts?”
Tell an agent destructive · confirm first
Delete user {user_id} from root account {account_id}.
Remove user {user_id}'s record from account {account_id}.
DELETE /v1/accounts/{account_id}/users Remove several users from the root account · Delete multiple users from the root account #
Ask an LLM
“Can I delete a batch of users from the root account in one call?”
“How do I bulk-remove users from my institution?”
Tell an agent destructive · confirm first
Delete multiple users from root account {account_id}.
Bulk-remove the users I list from account {account_id}.
PUT /v1/accounts/{account_id}/users/bulk_update Update several users at once · Update multiple users #
Ask an LLM
“How do I apply the same change to many users in bulk?”
“Can I update attributes for a list of user IDs in one request?”
Tell an agent
Bulk update users {user_ids} in account {account_id}.
Apply {user} to users {user_ids} in account {account_id}.
PUT /v1/accounts/{account_id}/users/{user_id}/restore Restore a deleted user to the root account · Restore a deleted user from a root account #
Ask an LLM
“How do I undo the deletion of a user from the root account?”
“Can I bring back a deleted user along with their most recent login?”
Tell an agent
Restore deleted user {user_id} in account {account_id}.
Undo the removal of user {user_id} from root account {account_id}.
DELETE /v1/accounts/{account_id}/sub_accounts/{id} Delete a sub-account · Delete a sub-account #
Ask an LLM
“How do I delete a sub-account that's no longer used?”
“Why can't I delete a sub-account that still has active courses?”
Tell an agent destructive · confirm first
Delete sub-account {id} from account {account_id}.
Remove the empty sub-account {id} under {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-accounts-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-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Accounts 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 (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-accounts-api-openapi.yml