Canvas External Tools API

The External Tools API from Canvas — 11 operation(s) for external tools.

Operations 19

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}/external_tools List a course's external tools · List external tools #
Ask an LLM
“Which LTI tools are installed in a particular course?”
“Can I filter a course's external tools by placement or include ones inherited from the account?”
Tell an agent
List the external tools in course {course_id}.
Search course {course_id}'s external tools for {search_term}.
POST /v1/courses/{course_id}/external_tools Install an external tool in a course · Create an external tool #
Ask an LLM
“How do I add an LTI tool to just one course?”
“Can I install a tool in a course from a config URL or XML?”
Tell an agent
Install external tool {name} in course {course_id} with consumer key {consumer_key}.
Add an LTI tool to course {course_id} from client ID {client_id}.
GET /v1/accounts/{account_id}/external_tools List an account's external tools · List external tools #
Ask an LLM
“What LTI tools are configured at the account level?”
“Can I list only the selectable tools on an account?”
Tell an agent
List the external tools on account {account_id}.
Find account {account_id} tools with placement {placement}.
POST /v1/accounts/{account_id}/external_tools Install an external tool across an account · Create an external tool #
Ask an LLM
“How do I make an LTI tool available to every course under an account?”
“What privacy level and shared secret do I need to install an account-wide tool?”
Tell an agent
Install external tool {name} on account {account_id} with privacy level {privacy_level}.
Add an account-level LTI tool to {account_id} using config URL {config_url}.
GET /v1/groups/{group_id}/external_tools List a group's external tools · List external tools #
Ask an LLM
“Which external tools can a student group use?”
“Can I list LTI tools available inside a group?”
Tell an agent
List the external tools for group {group_id}.
Show group {group_id}'s tools including parent contexts: {include_parents}.
GET /v1/courses/{course_id}/external_tools/sessionless_launch Get a sessionless launch link for a course tool · Get a sessionless launch url for an external tool #
Ask an LLM
“How can I launch an LTI tool in a course without a browser session?”
“Can I get a direct launch URL for a tool tied to an assignment or module item?”
Tell an agent
Get a sessionless launch URL for tool {id} in course {course_id}.
Generate a launch link in course {course_id} for assignment {assignment_id}.
GET /v1/accounts/{account_id}/external_tools/sessionless_launch Get a sessionless launch link for an account tool · Get a sessionless launch url for an external tool #
Ask an LLM
“Can I get a session-free launch URL for a tool installed on an account?”
“Which launch types work for account-level sessionless launches?”
Tell an agent
Get a sessionless launch URL for tool {id} on account {account_id}.
Create an account {account_id} launch link with launch type {launch_type}.
GET /v1/courses/{course_id}/external_tools/{external_tool_id} Get one external tool in a course · Get a single external tool #
Ask an LLM
“How do I see the settings of a specific tool installed in a course?”
“What placements does a given course tool have?”
Tell an agent
Show external tool {external_tool_id} in course {course_id}.
Get course {course_id}'s tool {external_tool_id}.
PUT /v1/courses/{course_id}/external_tools/{external_tool_id} Update an external tool in a course · Edit an external tool #
Ask an LLM
“Can I change the configuration of a tool installed in one course?”
“Will course-level edits to an LTI 1.3 tool get overridden later?”
Tell an agent
Update external tool {external_tool_id} in course {course_id}.
Edit the settings of course {course_id}'s tool {external_tool_id}.
DELETE /v1/courses/{course_id}/external_tools/{external_tool_id} Remove an external tool from a course · Delete an external tool #
Ask an LLM
“How do I uninstall an LTI tool from a single course?”
“Can I delete a course-level external tool?”
Tell an agent destructive · confirm first
Delete external tool {external_tool_id} from course {course_id}.
Uninstall tool {external_tool_id} in course {course_id}.
GET /v1/accounts/{account_id}/external_tools/{external_tool_id} Get one external tool on an account · Get a single external tool #
Ask an LLM
“How do I inspect an account-level LTI tool's configuration?”
“What does a specific account tool's record look like?”
Tell an agent
Show external tool {external_tool_id} on account {account_id}.
Get account {account_id}'s tool {external_tool_id}.
PUT /v1/accounts/{account_id}/external_tools/{external_tool_id} Update an external tool on an account · Edit an external tool #
Ask an LLM
“Can I update an LTI tool that's installed for a whole account?”
“How do I change an account-level tool's settings?”
Tell an agent
Update external tool {external_tool_id} on account {account_id}.
Edit account {account_id}'s tool {external_tool_id}.
DELETE /v1/accounts/{account_id}/external_tools/{external_tool_id} Remove an external tool from an account · Delete an external tool #
Ask an LLM
“How do I uninstall an account-wide LTI tool?”
“Can I delete a tool configured at the account level?”
Tell an agent destructive · confirm first
Delete external tool {external_tool_id} from account {account_id}.
Uninstall account {account_id}'s tool {external_tool_id}.
POST /v1/accounts/{account_id}/external_tools/rce_favorites/{id} Favorite a tool in the rich content editor · Mark tool as RCE Favorite #
Ask an LLM
“How do I pin an editor button tool as a favorite in the rich content editor?”
“Do RCE favorites set on an account apply to its subaccounts?”
Tell an agent
Mark tool {id} as an RCE favorite on account {account_id}.
Make tool {id} a rich content editor favorite for account {account_id}.
DELETE /v1/accounts/{account_id}/external_tools/rce_favorites/{id} Unfavorite a tool in the rich content editor · Unmark tool as RCE Favorite #
Ask an LLM
“Can I remove a tool from the editor's favorites without uninstalling it?”
“How do I take a tool off the RCE favorites list?”
Tell an agent destructive · confirm first
Unmark tool {id} as an RCE favorite on account {account_id}.
Remove tool {id} from account {account_id}'s editor favorites.
POST /v1/accounts/{account_id}/external_tools/top_nav_favorites/{id} Add a tool button to top navigation · Add tool to Top Navigation Favorites #
Ask an LLM
“How do I give a tool its own button in the top navigation bar?”
“What's the limit on top navigation favorites per account?”
Tell an agent
Add tool {id} to top navigation favorites on account {account_id}.
Pin tool {id} to the top nav for account {account_id}.
DELETE /v1/accounts/{account_id}/external_tools/top_nav_favorites/{id} Remove a tool button from top navigation · Remove tool from Top Navigation Favorites #
Ask an LLM
“Can I take a tool's dedicated button out of the top navigation?”
“How do I free up a top navigation favorite slot?”
Tell an agent destructive · confirm first
Remove tool {id} from top navigation favorites on account {account_id}.
Unpin tool {id} from account {account_id}'s top nav.
GET /v1/external_tools/visible_course_nav_tools List visible course nav tools across courses · Get visible course navigation tools #
Ask an LLM
“Which tools show up in the course navigation menu for several courses at once?”
“Can I check visible course navigation tools for a set of context codes?”
Tell an agent
List visible course navigation tools for contexts {context_codes}.
Show the course nav tools I can see across {context_codes}.
GET /v1/courses/{course_id}/external_tools/visible_course_nav_tools List visible course nav tools in one course · Get visible course navigation tools for a single course #
Ask an LLM
“What tools appear in one course's left-hand navigation for me?”
“Which non-hidden course navigation tools apply in a single course?”
Tell an agent
List visible course navigation tools in course {course_id}.
Show the navigation menu tools shown in course {course_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-external-tools-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-external-tools-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST External Tools 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-external-tools-api-openapi.yml