PyLTI implementation
Latest commit 3266843 Aug 28, 2015 @pwilkins pwilkins Merge pull request #54 from nikolas/patch-2
document correct exception thrown by flask _check_role() - good catch.


PyLTI - LTI done right

PyLTI:Python implementation of LTI
Author:MIT Office of Digital Learning

PyLTI is a Python implementation of the LTI specification [1]. It supports LTI 1.1.1 and LTI 2.0. While it was written with edX [2] as its LTI consumer, it is a complete implementation of the LTI specification and can be used with any learning management system that supports LTI.

A feature of PyLTI is the way it is used in the creation of an LTI tool. PyLTI is written as a library that exposes an API. This separation of concerns enables a developer to focus on the business logic of their tool and support of their framework of choice.

To demonstrate this usage, there are also a collection of example LTI tools written to support different Python web frameworks.

Framework Example
Flask mit_lti_flask_sample A skeleton example for the Flask framework that consumes the PyLTI library


  • Python 2.7+
  • oauth 1.0.1+
  • oauth2 1.5.211+
  • httplib2 0.9+

Development dependencies:

  • Flask 0.10.1
  • httpretty 0.8.3
  • oauthlib 0.6.3
  • pyflakes 0.8.1
  • pytest 2.6.3
  • pytest-cache 1.0
  • pytest-cov 1.8.0
  • pytest-flakes 0.2
  • pytest-pep8 1.0.6
  • sphinx 1.2.3

Documentation is available on readthedocs.


PyLTI is licensed under the BSD license, version January 9, 2008. See license.rst for the full text of the license.


[1]The Learning Tools Interoperability (LTI) specification is an initiative of IMS. Their site contains a description of LTI as well as the current LTI specification.
[2]EdX offers interactive online classes and MOOCs from the world’s best universities. Online courses from MITx, HarvardX, BerkeleyX, UTx and many other universities. EdX is a non-profit online initiative created by founding partners Harvard and MIT.