ADL Learning Record Store

Welcome to the ADL LRS. This is a reference implementation of an LRS as described in the Experience API Specification

Current LRS Stats












Original GitHub Examples

Visit the original GitHub prototype page to find some of the first-built prototypes or see them in action.


Statement Viewer

Check out the new statement viewer! Visit our other new projects to see what else is new.


Statement Validator

Want to make sure your statement is valid? Validate it here so you're not sending bad statements!


ADL xAPI Tools

Check out all of the new and improved xAPI tools freely available on GitHub; including the LRS source code.

xAPI Tools

Android App

Check out the LRS in action on the Google Play Store. Download the Roses xAPI Demo.

Authenticate via OAuth

  • By default, only HTTP Auth is enabled. To enable OAuth, have your administrator set the 'OAUTH_ENABLED' flag to true in
  • While registering, submit the name and description of the client you wish to authorize
  • Once submitted, you will receive a client ID and client secret. Use these with the appropriate OAuth headers to perform the initial handshake to gain your temporary token. (/XAPI/OAuth/initiate) NOTE: If you are not familiar with OAuth, please consult the spec and the OAuth 1.0 RFC
  • You'll then receive your request token. Use this when visiting the authentication page (/XAPI/OAuth/authorize). An LRS OAuth ID will be issued to you for you to POST back to the authentication page from your client
  • Once the client is authenticated, send the appropriate OAuth headers and values from your token to gain an access token.(/XAPI/OAuth/token)
  • You can now send this access token in with the OAuth headers when making calls to the LRS system
Register OAuth1 Client

Sign up for HTTP Basic Credentials

Information required to register for an account:


Registration is used to enable HTTP Basic Authentication. Without using secure sockets (SSL), this authentication scheme is likely not secure enough for most production systems. Please do not register using sensitive names and passwords. Assume all data provided here is public. After you register a user, you can use the HTTP_AUTHORIZATION header with your encoded username and password.

More Information

For more information or questions, please contact us at