Canvas Lti Registrations API

The Lti Registrations API from Canvas — 28 operation(s) for lti registrations.

Operations 36

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/{account_id}/lti_registrations List LTI registrations in an account · List LTI Registrations in an account #
Ask an LLM
“Which LTI registrations are available in my Canvas account, including ones inherited from Site Admin?”
“Can I sort the list of LTI registrations in an account by name or date?”
Tell an agent
List the LTI registrations in account {account_id} using the lti_registrations endpoint.
Show LTI registrations for account {account_id} sorted by {sort}.
POST /v1/accounts/{account_id}/lti_registrations Create an LTI registration · Create an LTI Registration #
Ask an LLM
“How do I manually register a new LTI 1.3 tool with its configuration and developer key?”
“Can I create an LTI registration with an admin nickname and vendor name?”
Tell an agent
Create an LTI registration named {name} in account {account_id} via the lti_registrations endpoint.
Register LTI tool {name} from vendor {vendor} in account {account_id} with configuration {configuration}.
GET /v1/accounts/{account_id}/apps List LTI apps in an account via the apps alias · List LTI Registrations in an account #
Ask an LLM
“What LTI apps are installed in an account when I call the apps endpoint instead of lti_registrations?”
“Does the apps listing return registrations enabled at the parent root account too?”
Tell an agent
List the apps in account {account_id} using the apps alias endpoint.
Page through apps in account {account_id}, page {page}, {per_page} per page.
POST /v1/accounts/{account_id}/apps Create an LTI app via the apps alias · Create an LTI Registration #
Ask an LLM
“Can I add a new LTI app to an account through the apps endpoint?”
“What do I send to the apps endpoint to create a tool with a developer key and account binding?”
Tell an agent
Create a new app named {name} in account {account_id} using the apps alias endpoint.
Add app {name} to account {account_id} through the apps endpoint with overlay {overlay}.
GET /v1/accounts/{account_id}/lti_registrations/{id} Show an LTI registration · Show an LTI Registration #
Ask an LLM
“How do I see the configuration and account binding of one LTI registration?”
“Can I fetch a single LTI registration by its id with extra details included?”
Tell an agent
Show LTI registration {id} in account {account_id} from the lti_registrations endpoint.
Get LTI registration {id} in account {account_id} including {include}.
PUT /v1/accounts/{account_id}/lti_registrations/{id} Update an LTI registration · Update an LTI Registration #
Ask an LLM
“Can I rename an LTI registration or change its admin nickname?”
“Why would updating an LTI registration's tool configuration return a 422 error?”
Tell an agent
Rename LTI registration {id} in account {account_id} to {name} via the lti_registrations endpoint.
Set the workflow state of LTI registration {id} in account {account_id} to {workflow_state} with comment {comment}.
DELETE /v1/accounts/{account_id}/lti_registrations/{id} Delete an LTI registration · Delete an LTI Registration #
Ask an LLM
“How do I remove an LTI registration I created from my account?”
“What happens when I delete an LTI registration through the lti_registrations endpoint?”
Tell an agent destructive · confirm first
Delete LTI registration {id} from account {account_id} using the lti_registrations endpoint.
Remove the LTI registration {id} owned by account {account_id}.
GET /v1/accounts/{account_id}/apps/{id} Show an LTI app via the apps alias · Show an LTI Registration #
Ask an LLM
“Can I look up a single app's configuration through the apps endpoint?”
“Which account binding does a specific app have when fetched from the apps path?”
Tell an agent
Show app {id} in account {account_id} using the apps alias endpoint.
Fetch app {id} from account {account_id} via apps, including {include}.
PUT /v1/accounts/{account_id}/apps/{id} Update an LTI app via the apps alias · Update an LTI Registration #
Ask an LLM
“Can I change an app's name or description through the apps endpoint?”
“Is locking deployments on an app possible when editing it via the apps path?”
Tell an agent
Update app {id} in account {account_id} via the apps endpoint to have description {description}.
Set lock_deploying to {lock_deploying} on app {id} in account {account_id} through the apps alias.
DELETE /v1/accounts/{account_id}/apps/{id} Delete an LTI app via the apps alias · Delete an LTI Registration #
Ask an LLM
“How do I delete an app from an account using the apps endpoint?”
“Does deleting an app through the apps path remove the whole registration?”
Tell an agent destructive · confirm first
Delete app {id} from account {account_id} via the apps alias endpoint.
Remove app {id} in account {account_id} using the apps path.
GET /v1/accounts/{account_id}/lti_registration_by_client_id/{client_id} Look up an LTI registration by client ID · Show an LTI Registration (via the client_id) #
Ask an LLM
“How do I find an LTI registration when I only know the developer key's client_id?”
“Can I fetch an LTI registration's configuration from its client ID on the lti_registration_by_client_id path?”
Tell an agent
Look up the LTI registration with client ID {client_id} in account {account_id} via lti_registration_by_client_id.
Find which LTI registration in account {account_id} uses client_id {client_id}.
GET /v1/accounts/{account_id}/app_by_client_id/{client_id} Look up an LTI app by client ID via apps alias · Show an LTI Registration (via the client_id) #
Ask an LLM
“Can I look up an app by its client_id using the app_by_client_id endpoint?”
“Which app matches a given developer key client ID when using the apps alias?”
Tell an agent
Get the app with client ID {client_id} in account {account_id} from the app_by_client_id endpoint.
Use app_by_client_id to show the app for client {client_id} in account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/by_utid/{utid} Find an LTI registration by unified tool ID · Get LTI Registration by Unified Tool ID #
Ask an LLM
“How do I look up an LTI registration by its unified tool ID?”
“Does a unified tool ID lookup search both manual configurations and IMS registrations?”
Tell an agent
Find the LTI registration with unified tool ID {utid} in account {account_id} via lti_registrations/by_utid.
Look up active LTI registration by UTID {utid} accessible from account {account_id}.
GET /v1/accounts/{account_id}/apps/by_utid/{utid} Find an LTI app by unified tool ID via apps alias · Get LTI Registration by Unified Tool ID #
Ask an LLM
“Can I find an app by unified tool ID using the apps/by_utid path?”
“Will the apps by_utid lookup only return apps active in my account?”
Tell an agent
Get the app with unified tool ID {utid} in account {account_id} from apps/by_utid.
Use the apps alias to find the app whose UTID is {utid} for account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/install_status/{client_id} Check if a Site Admin LTI tool is installed locally · Check LTI Registration Install Status #
Ask an LLM
“How can I tell whether a Site Admin LTI registration already has a local copy in my account?”
“Is there a way to check the install status of an LTI registration by client ID?”
Tell an agent
Check the install status of LTI client {client_id} in account {account_id} via lti_registrations/install_status.
Tell me whether the Site Admin LTI registration {client_id} is installed in account {account_id}.
GET /v1/accounts/{account_id}/apps/install_status/{client_id} Check app install status via apps alias · Check LTI Registration Install Status #
Ask an LLM
“Can I check whether a Site Admin app is installed in my account using the apps install_status path?”
“Does the apps install_status endpoint return the local copy of an app?”
Tell an agent
Check app install status for client {client_id} in account {account_id} via apps/install_status.
Using the apps alias, see if client {client_id} has a local install in account {account_id}.
PUT /v1/accounts/{account_id}/lti_registrations/{id}/reset Reset an LTI registration to default settings · Reset an LTI Registration to Defaults #
Ask an LLM
“How do I undo all account-level customizations on an LTI registration?”
“Does resetting an LTI registration clear its overlay for this account?”
Tell an agent destructive · confirm first
Reset LTI registration {id} in account {account_id} to defaults via the lti_registrations endpoint.
Clear every overlay customization on LTI registration {id} for account {account_id}.
PUT /v1/accounts/{account_id}/apps/{id}/reset Reset an LTI app to defaults via apps alias · Reset an LTI Registration to Defaults #
Ask an LLM
“Can I reset an app to its default settings through the apps reset path?”
“Will resetting an app via the apps alias remove my account's overlay changes?”
Tell an agent destructive · confirm first
Reset app {id} in account {account_id} to defaults using the apps alias endpoint.
Via apps/reset, wipe customizations from app {id} in account {account_id}.
POST /v1/accounts/{account_id}/lti_registrations/{id}/bind Enable or disable an LTI registration for a root account · Bind an LTI Registration to a Root Account #
Ask an LLM
“How do I turn on an inherited Site Admin LTI registration for my root account?”
“Can I switch an LTI registration off for a root account without deleting it?”
Tell an agent
Bind LTI registration {id} to root account {account_id} with state {workflow_state} via lti_registrations.
Turn LTI registration {id} {workflow_state} for root account {account_id}.
DELETE /v1/accounts/{account_id}/lti_registrations/{id}/bind Remove an inherited LTI registration from an account · Remove an Inherited LTI Registration #
Ask an LLM
“How do I remove a Site Admin LTI registration that my account inherited?”
“Which feature flag must be on to delete the binding for an inherited LTI registration?”
Tell an agent destructive · confirm first
Remove the inherited LTI registration {id} binding from account {account_id} via lti_registrations.
Delete the account binding for inherited LTI registration {id} in account {account_id}.
POST /v1/accounts/{account_id}/apps/{id}/bind Enable or disable an LTI app for a root account (apps) · Bind an LTI Registration to a Root Account #
Ask an LLM
“Can I enable an app for my root account through the apps bind endpoint?”
“Is binding an app via the apps path only allowed for root accounts?”
Tell an agent
Via apps/bind, set app {id} to {workflow_state} for root account {account_id}.
Using the apps alias, bind app {id} to root account {account_id} as {workflow_state}.
DELETE /v1/accounts/{account_id}/apps/{id}/bind Remove an inherited LTI app via apps alias · Remove an Inherited LTI Registration #
Ask an LLM
“Can I remove an inherited Site Admin app from my account with the apps bind path?”
“Does deleting the apps binding only work for inherited apps?”
Tell an agent destructive · confirm first
Remove inherited app {id} from account {account_id} via the apps/bind endpoint.
Using the apps alias, drop the inherited binding for app {id} in account {account_id}.
POST /v1/accounts/{account_id}/lti_registrations/{id}/install_from_template Install an LTI registration from a Site Admin template · Install an LTI Registration from a Template #
Ask an LLM
“How do I install a local copy of a Site Admin template LTI registration that I can customize?”
“Will customizing a registration installed from a template change the original template?”
Tell an agent
Install template LTI registration {id} into account {account_id} via lti_registrations.
Make a local copy of Site Admin LTI template {id} in root account {account_id}.
POST /v1/accounts/{account_id}/apps/{id}/install_from_template Install an LTI app from a template via apps alias · Install an LTI Registration from a Template #
Ask an LLM
“Can I install an app from a Site Admin template using the apps install_from_template path?”
“Is installing an app from a template through apps restricted to root accounts?”
Tell an agent
Install app template {id} into account {account_id} via the apps alias endpoint.
Using apps/install_from_template, copy template app {id} into account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/{registration_id}/deployments/{deployment_id}/context_search Search accounts and courses for an LTI deployment · Search for Accounts and Courses #
Ask an LLM
“How do I find courses or sub-accounts by name or SIS id when scoping an LTI deployment?”
“Can I limit an LTI deployment context search to children of one account?”
Tell an agent
Search for {search_term} among accounts and courses for deployment {deployment_id} of LTI registration {registration_id} in account {account_id}.
Find courses matching {search_term} under account {only_children_of} for LTI deployment {deployment_id}, registration {registration_id}, account {account_id}.
GET /v1/accounts/{account_id}/apps/{registration_id}/deployments/{deployment_id}/context_search Search accounts and courses for an app deployment · Search for Accounts and Courses #
Ask an LLM
“Can I search accounts and courses for an app deployment using the apps context_search path?”
“Does the apps context search match on course code as well as name?”
Tell an agent
Via the apps alias, search {search_term} for deployment {deployment_id} of app {registration_id} in account {account_id}.
Using apps context_search, list contexts for app {registration_id} deployment {deployment_id} in account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/{id}/overlay_history Get the overlay history of an LTI registration · Get LTI Registration Overlay History #
Ask an LLM
“How do I see past overlay customizations made to an LTI registration?”
“Can I limit how many overlay history items I get back for an LTI registration?”
Tell an agent
Show the overlay history for LTI registration {id} in account {account_id} via lti_registrations.
Get the last {limit} overlay changes to LTI registration {id} in account {account_id}.
GET /v1/accounts/{account_id}/apps/{id}/overlay_history Get an LTI app's overlay history via apps alias · Get LTI Registration Overlay History #
Ask an LLM
“Can I read an app's overlay history from the apps overlay_history path?”
“How many overlay history entries does the apps endpoint return for one app?”
Tell an agent
Via the apps alias, show overlay history for app {id} in account {account_id}.
Using apps/overlay_history, return {limit} entries for app {id} in account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/{id}/history Get the full change history of an LTI registration · Get LTI Registration History #
Ask an LLM
“How do I audit every change made to an LTI registration, including developer key changes?”
“Is there a full change log for an LTI registration's fields and internal configuration?”
Tell an agent
Show the complete change history of LTI registration {id} in account {account_id} via lti_registrations.
List all history entries for LTI registration {id} in account {account_id}.
GET /v1/accounts/{account_id}/apps/{id}/history Get an LTI app's full change history via apps alias · Get LTI Registration History #
Ask an LLM
“Can I get an app's complete change history through the apps history path?”
“Does the apps history endpoint include developer key changes for the app?”
Tell an agent
Via the apps alias, list every change made to app {id} in account {account_id}.
Using apps/history, show the audit trail of app {id} for account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id} Get an LTI registration update request · Get LTI Registration Update Request #
Ask an LLM
“How do I view the details of a specific pending update request for an LTI registration?”
“Can I fetch one LTI registration update request by its id?”
Tell an agent
Show update request {update_request_id} for LTI registration {id} in account {account_id} via lti_registrations.
Get LTI update request {update_request_id} on registration {id}, account {account_id}, including {include}.
GET /v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id} Get an LTI app update request via apps alias · Get LTI Registration Update Request #
Ask an LLM
“Can I read a specific app update request through the apps update_requests path?”
“What does one app update request contain when fetched via the apps alias?”
Tell an agent
Via the apps alias, show update request {update_request_id} for app {id} in account {account_id}.
Using apps/update_requests, fetch request {update_request_id} for app {id} in account {account_id}.
GET /v1/accounts/{account_id}/lti_registrations/{id}/latest_update_request Get the latest update request for an LTI registration · Get Latest LTI Registration Update Request #
Ask an LLM
“How do I see the most recent update request for an LTI registration regardless of status?”
“What does Canvas return when an LTI registration has no update requests at all?”
Tell an agent
Show the latest update request for LTI registration {id} in account {account_id} via lti_registrations.
Get the newest pending or past update request on LTI registration {id} in account {account_id}.
GET /v1/accounts/{account_id}/apps/{id}/latest_update_request Get an LTI app's latest update request via apps · Get Latest LTI Registration Update Request #
Ask an LLM
“Can I get the most recent update request for an app from the apps latest_update_request path?”
“Does the apps latest update request call 404 when nothing has been requested?”
Tell an agent
For app {id} in account {account_id}, return only its most recent update request through the apps alias.
Using apps/latest_update_request, get the newest request for app {id} in account {account_id}.
PUT /v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id}/apply Accept or reject an LTI registration update request · Apply LTI Registration Update Requst #
Ask an LLM
“How do I accept a tool's update request so it replaces the LTI registration's configuration?”
“Can I reject an LTI registration update request without applying any changes?”
Tell an agent
Apply update request {update_request_id} to LTI registration {id} in account {account_id} with accepted {accepted} via lti_registrations.
Reject LTI update request {update_request_id} on registration {id} in account {account_id}, accepted {accepted}, noting {comment}.
PUT /v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id}/apply Accept or reject an LTI app update request (apps) · Apply LTI Registration Update Requst #
Ask an LLM
“Can I accept an app update request through the apps update_requests apply path?”
“When applying an app update request via apps, can I pass my own overlay?”
Tell an agent
Via the apps alias, apply request {update_request_id} to app {id} in account {account_id} with accepted {accepted}.
Using apps apply, accept {accepted} request {update_request_id} for app {id} in account {account_id} with overlay {overlay}.

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-lti-registrations-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-lti-registrations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Lti Registrations 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 (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-lti-registrations-api-openapi.yml