Tin Can in action

Introduction to the Tin Can API:

The Tin Can API is a brand new learning technology specification that offers a simpler and more flexible way of capturing learning activities and sharing them with a variety of other systems – opening up an entire world of experiences (online and offline). A wide range of systems can now securely communicate with a simple vocabulary that captures this stream of activities.

The Tin Can API is a product of SCORM evolution – i.e. it’s practically the next generation of SCORM – and it eliminates many of the old limitations and restrictions. It is suitable for use in any kind of learning including: mobile learning, simulations, virtual worlds, serious games, real-world activities, experiential learning, social learning, offline learning, and collaborative learning. For a full introduction to Tin Can and how it differs to SCORM please see this post, or read “Tin Can Demystified” by Epignosis’ CTO, A. Papagelis.

How it works:

Statements are the ‘substance’ of the Tin Can API. Each statement corresponds to an experience that has occurred or is taking place right now. The Tin Can API uses (JSON formatted) statements containing any activity that needs to be recorded and sends them to a Learning Record Store (LRS). Each statement uses this simple form: “someone did something” or [actor]+[verb]+[object].

For more information about the Tin Can API, visit http://tincanapi.com, and for an overview on Tin Can Statements go to http://tincanapi.com/developers/tech-overview/statements-101/

Integrating with an LMS:

The main benefit of the Tin Can API is that it frees your data from a pre-defined LMS, promoting mobile, offline or even social learning.

Epignosis’ TalentLMS offers a basic LRS implementation where you can send and record any learning experience. You can enable the Tin Can API for your domain, through the Basic Settings of your account (administrators only).

Once enabled, you can get your private key used for authentication when communicating with the LRS. Statements can be sent to the LRS by posting them to the following URL: http://yourdomain.talentlms.com/tcapi/ . If authenticated successfully and provided that your JSON statement is valid the activity will be recorded and displayed in your timeline – in any other case a descriptive error will be returned.

Besides posting your statements, you should include the following parameters in the request HTTP header:

  • Authorization: your Tin Can API Key (find it in the Basic Settings of your account)
  • Statement ID* (optional): a unique identifier of your statement
*Note: when a statement ID is not included, a POST request should be made. On the other hand, when a statement ID is sent, a PUT request should be used

Tin Can in action:


At http://yourdomain.talentlms.com/dev/tincan/  you can find an example activity, where you can see in action how it communicates with the TalentLMS LRS. Fill in the LRS endpoint URL, your secret Tin Can API key and the email of an existing user in your system. Start navigating through the sample course, and check in real-time the statements recorded in your timeline.


In the same example activity you may also use an alternative LRS, such as the public LRS provided by SCORM Cloud. Use: https://cloud.scorm.com/ScormEngineInterface/TCAPI/public/ & enter a random API Key and your email. Navigate through the course, and visit http://tincanapi.com/developers/resources/statement-viewer/ to see all statements that were recorded.

Run it on your own

You may also download this sample activity, which is located at http://yourdomain.talentlms.com/dev/tincan.zip. You just unzip the files, place them in a web server running PHP and you’re ready to go!

Importing Tin Can Storyline object in TalentLMS

Using Articulate Storyline you can publish a project that supports Tin Can API, ready to use in conjunction with an LRS.  Publishing for Tin Can API in Articulate Storyline is really easy – just select “Tin Can API” as LMS in the Output Options section (detailed instructions here).

TalentLMS offers you the ability to upload Storyline objects which were published for Tin Can directly into a course unit. Just select the option to create a SCORM/Tin Can unit, upload your Storyline zipped object, and save your unit. Start experiencing your new unit and all Tin Can statements produced will be recorded and displayed in your timeline.




Epignosis will also announce the integration of the Tin Can API with eFront LMS next month – so please look out for updates in the coming weeks! 🙂

About the author

Roberta Gogos is a Social Media & Content Marketing Consultant and eFront Learning’s Community Manager, she is contributing author to a number of blogs and focuses on social media, culture-specific communication, technology, and elearning. She can be contacted @rgogos or via LinkedIn.



  • FrankFisher

    Hi, I’m interested in how tincan statements can be stored offline – say if you are completing some storyline content offline on an ipad – and then be relayed back to the LRS once the connection is made again? Any idea how this can happen?

    • Athanasios Papagelis

      Here is a paragraph from a blog post I wrote a few months ago regarding this topic:

      “TinCan also claims improvements on another commonly required but rarely delivered functionality – the ability to complete learning objects offline and synchronize when you get online. Even when not working completely offline people ask for better support for browser timeout and connection drops. SCORM depends on the browser session and such issues are common and catastrophic.

      In reality, the new API offers little real help on this front. However, since the communication happens through simple messaging, client programs can easily store the messages when offline and communicate them to the LRS whenever the user returns to online status. No matter how basic this seems to be an efficient solution. Never underestimate the power of simplicity!”

      Here is the original post:

      • FrankFisher

        Hi Athanasios, yes I’d read that. What I’m wondering is *how* those statements might be stored – when using Safari on the iPad for instance, rather than working within a dedicated App?

  • Athanasios Papagelis

    There is little info on this subject from the protocol itself. This is actually one of my biggest complaints about TinCan or Scorm – they do not delve in details needed in real implementations.

    When we are talking about an application then tincan statements should be stored inside the application. When we are talking about the browser then the answer may not be so obvious.

    HTML5 supports offline caching that can be helpful in such a situation. In essence a web application can store on that cache the course content together with exchanged tincan statements and reuse them whenever the user gets online.

    Here is a short overview of how it works: http://diveintohtml5.info/offline.html