Showing results for 
Show  only  | Search instead for 
Did you mean: 
Community Participant

How do I link to an LTI app from a Canvas page?

I know how to invoke an LTI app from the course and user navigation menu. But I want to call that app from inside a Canvas HTML page, via a link or URL. Is that possible? How would the LTI parameters such as the key, secret, user's email address, get passed to the LTI app, from the web page (if that were indeed possible)?

In one of the docs, I read "Once configured, external apps may be able to be added to Modules, Course Navigation, the Rich Content Editor, and Assignments. The external app should include information about where the app can be placed in Canvas.", but nothing about adding them to a Canvas page.

Thanks in advance.

4 Replies
Community Champion

I'm not sure of your context, but you could add the tool to the course navigation and then hide it.  You can then use its URL like a normal link on a page.  It will look something like:  /courses/123/external_tools/45

Community Coach
Community Coach

Hi  @kunal_ashar ,

I too would like to get additional clarification. Have you looked at injecting this into the WYSIWYG editor, which is generally how you would expose an LTI to a page. 

The user would then select the LTI tool in the editor, and that would inject the HTML onto the page.

I will also share this with the Canvas Developers‌ group who may have additional ideas and thoughts to contribute too!

Hope that helps!


Community Participant

Thank you pklove‌ and  @stuart_ryan ‌. Those suggestions are helpful, but it's my bad for not clearly explaining my need, because this wasn't exactly what I was looking for.
My specific need is this:
1. I have an LTI app that needs to take a dynamic (unknown) set of parameters, in addition to the regular LTI parameters.

2. What is means is that, from the Canvas page, I need to call the LTI app, but I need to send a parameter value that is unknown at design time.

3. My course designer who's designing the page, would like to write something like this: <a href="https://my-lti-app/endpoint?parameter=dynamicValue">Click here</a>, where the dynamicValue is something that no one knows until the page is designed.
4. So when a student clicks the "Click here" link, it needs to call/launch my LTI app, send all the LTI POST parameters and also send this custom value.
5. If I create an LTI app as usual, I get a URL that looks like 

Community Participant

Never mind. I figured out how to do exactly what I needed. Peter's and Stuart's original posts helped me get halfway there. Thanks all!