The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December. Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
Hi,
I'm trying to understand how LTI external apps work so I can know my options when I have one built. I see that some of the complex are web pages that are loaded into an iframe. Are the simple ones also web pages or are they data streams that canvas knows how to display properly?
If I want our LTI app to work will more than just canvas but also Moodle and others, what should I ensure?
What are my options for the way this thing is build from the developer's standpoint?
Thanks.
Hi @jlopez ,
Just as a disclaimer, I have never dug deep into the guts and core of LTI and I have only developed LTI apps that interact specifically with Canvas. That being said, as far as I am aware, LTI apps always point to an external site. This can be iframed or it can be set to open in a new tab. When an LTI tool is launched (whether it be from Canvas or Moodle or any other platform), there are some standard pieces of information that are passed along to the external site using POST. The LTI standard dictates some essential pieces of information that are passed and how they are passed but there are additional pieces of information that can be added for a specific platform or even custom information that can be configured at the tool level. For example, Canvas passes data like:
There are ways to pass information back through LTI although this information is relatively limited (things like content or a score). However, as long as the platform you are developing for has an extensive API like Canvas, your possibilities are incredible but tied to the platforms you specifically develop for.
One of the great benefits of LTI is that you can handle authentication without making a user login to your external site. You can also go through what is often referred to as the "OAuth handshake" where a user can grant your app permission to act on their behalf within the platform.
As far as what options are far as the way your app is built from the developer's standpoint, that depends on your developer. The app can be written in almost any programming language (Ruby, PHP, Coldfusion, etc.). In fact, because it is loading an external site, you can create pretty much anything that you can think of.
Here are a few resources that can help you get started:
I am sure that there are some other good ones but I can't remember any others off the top of my head.
While maybe not quite as specific as you may have been hoping for, hopefully this will help you know what other questions you may need to ask.
I also like to use the IMS test page. http://ltiapps.net/test/tc.php It has some nice built in methods to insert the less frequent parameter values and makes it much easier to get sample launches. The data is already in the form. You just need the url, key and secret.
It was developed by Stephen Vickers at IMS. He's done the official bootcamp training for IMS a few times.
Hi @jlopez ,
I am going through having a look at some of the early days in the Canvas Developers group, and checking in to see if older enquiries have been answered. I also noticed there hasn’t been any discussion on this question in quite some time.
I am wondering, were you ever able to resolve this with the assistance provided? I am hoping I can assume that it is well and truly resolved by now, but if not, please let us know and we can certainly have another look. Alternatively, if have some insights you may be able to share for others that would be awesome too!
I will mark this as assumed answered for the time being, however, by all means please let us know if you still have an outstanding question and we will take a peek!
Cheers,
Stuart
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in