Yes We Can: A Tin Can API Primer

Yes We Can: A Tin Can API Primer
Summary: This isn’t the first Tin Can API explainer article ever written. But the subject is so important to the future of eLearning that, basically, the more the merrier. If we adopt it, Tin Can API is going to be a genuine game changer, so read on if you’ve heard of it but aren’t quite sure what it is, how it works, and what it can do.

What You Need To Know About Tin Can Api  

I was a bit alarmed to read a recent article stating that Tin Can API “is a Learning Record Store”. That’s not what it is, though it does need to connect to one. I thought it might be helpful if I wrote an article about what Tin Can is, and how important it’s going to be in eLearning.

I’ll start by explaining the problem with current Learning Management Systems, then look at the solution; Tin Can API. Towards the end I go into a bit more detail and invite you to imagine how Tin Can could work in your organization. My overall conclusion is that if widely adopted it could revolutionize Learning and Development and data management.

The Problem 

The problem with Learning Management Systems is that very little learning happens on them. In the real world, students move around, use various devices in different locations, and will find much of their learning content away from the Learning Management System (LMS). This involves activities. They may, among many other possibilities:

Tin Can API activities

  • Google something.
  • Use Wikipedia.
  • Watch a video or slideshare.
  • Upload a video or slideshare.
  • Listen to a podcast.
  • Buy an eBook.
  • Read a blog post.
  • Make a blog post.
  • Borrow a library book.
  • Play an educational game.
  • Attend a conference.
  • Email someone with a question.
  • Subscribe to a class on iTunes U.
  • Actually take the class on iTunes U.
  • And, yes, take a Learning Management System course or module.

So the Learning Management System is now just one part of a greatly expanded learning universe.

Well-designed Learning Management Systems courses are very useful. A good Instructional Designer will create courses that deliver everything the student needs to know in a measured, entertaining, and memorable way. But students will still wander away from the Learning Management System to deepen their knowledge and satisfy their own curiosities. A Learning Management System will not capture those “extra” activities, despite them being the activities where most of the self-directed learning takes place.

Tin Can API aims to correct this problem.

What Is It? 

Also known as Experience API or xAPI, Tin Can is a specification for learning technology that captures data in a consistent format about a person’s activities from many different systems and technologies. Browsers, games, mobile devices, library systems, YouTube, blogs, HR systems, and yes, good old Learning Management Systems – the list goes on and on. Any device or system capable of running the Tin Can API can provide data about activities in this standard format, which needs to be fed into a Learning Record Store – a repository for all the data.

Who Made It? 

It was conceived by the same people who made SCORM: Advanced Distributed Learning, sponsored by the United States Department of Defense. They tendered it out and the contract was won by Rustici Software, an American company with lots of experience with SCORM. Rustici named their internal project Tin Can. After much listening to the needs of the eLearning community and a lot of development, they delivered the “Tin Can API” to ADL, who promptly renamed it “Experience API” just to confuse everyone. But by then there had been so much early adoption and excitement about Tin Can, that the name Tin Can stuck.


Tin Can and xAPI aren’t two forks of the project, one owned by Rustici and the other by ADL, as some people think. They are two names for the exact same thing. You might find people and companies referring to it as xAPI, which is fine – that’s its official name, after all.

Why Did They Make It? 

SCORM has been around since 1999 and is still the most used learning interoperability specification in the industry. But it’s clunky and limited. It assumes a sequential learning experience in which you work from one module or assessment to the next in a linear fashion. And as outlined above, it fails to capture anything that happens outside the Learning Management System. So learners are siloed. Only their interactions with formal activities are tracked in the Learning Management System gradebook, like online workbook study, Learning Management System assessment activities, quizzes etc. All the real “lightbulb” stuff where they are pursuing knowledge autonomously goes unrecorded.

That’s not good enough these days, said ADL in 2011. We need a successor to SCORM that captures the whole range of learning activities, wherever and however they take place.

So they issued a Broad Agency Announcement, a way the US government uses to invite contractors to bid for R&D projects. Rustici won it, and Tin Can was born.

How Does It Work? 

The Tin Can API is a web service that allows for statements of experience (typically learning experiences, but they could be anything) to be delivered to and stored securely in a Learning Record Store.

Data from any Tin Can-enabled device or system –known as an “Activity Provider”– emerges in the form of statements. These have the basic format Actor, Verb, Object. So a statement might say [Jimmy] [watched] [YouTube video x] or [Sally] [read] [blog post y] or [Billy] [visited] [the Museum of Natural History].

Here’s some real output from a prototype of Tin Can:

11/18/2015 4:20:18 PM
Test User experienced Tin Can Prototypes Launcher
11/18/2015 1:31:12 PM
Test User initialized Js Tetris - Tin Can Prototype
11/18/2015 1:30:55 PM
Test User attempted Js Tetris - Tin Can Prototype
11/18/2015 1:30:53 PM
Test User initialized Js Tetris - Tin Can Prototype
11/18/2015 1:30:52 PM
Test User launched
11/18/2015 1:30:37 PM
Test User experienced Etiquette - Playing
11/18/2015 1:30:36 PM
Test User resumed Golf Example - Tin Can Course
11/18/2015 1:30:36 PM
Test User initialized Golf Example - Tin Can Course
11/18/2015 1:30:34 PM
Test User launched
11/18/2015 1:30:30 PM
Test User terminated Golf Example - Tin Can Course
11/18/2015 1:30:30 PM
Test User suspended Golf Example - Tin Can Course

This shows the basic Actor – Verb – Object syntax of Tin Can statements. A lot more can be added to a statement, for example:

  • Result: [John] [attempted] [Tetris] [with score 2569]
  • Context: [Pippa] [completed] [sushi preparation for beginners] [in the context of Japanese Cuisine 101] [under the instruction of Hiro Yakasuma]

Lots of verbs are possible. Some examples are:
Tin Can API, Experience API, xAPI

  • Resumed.
  • Attended.
  • Commented.
  • Registered.
  • Scored.
  • Shared.
  • Responded.
  • Imported.
  • Voided.
  • Progressed.
  • Failed.
  • Preferred.
  • Interacted.
  • Asked.
  • Launched.

It’s also possible to create your own custom statement fields. Things can quickly get confusing with so many verbs available, which is why there is a cookbook for Tin Can, a sort of Book of Spells for instructional wizards. It contains things called recipes.


The extreme flexibility of the Tin Can vocabulary could lead to chaos if people chose different statement types to describe the same activity. The whole point of interoperability is that there are uniform ways to describe particular activities. A simple example of what could go wrong is:

Vimeo could produce the statement [John] [launched] [How to teach your dog tricks]

YouTube could produce the statement [John] [opened] [How to teach your dog tricks]

Hulu could produce the statement [John] [viewed] [How to teach your dog tricks]

So there’s a problem. Different verbs can describe the same activity. This is why Tin Can needs standard, agreed-upon vocabulary and format to describe certain types of activity. These are called recipes. They are kept in a registry at and are designed to promote consistency.

For video, the recipe that has been decided on defines the actor, verb and object (the watcher is the actor, the video is the object) and the verbs that should describe the activity, which are:

  • Play.
  • Pause.
  • Watch.
  • Skip.
  • Complete.

A “play” statement is sent when a video is started, and a “watch” statement is sent when the video is paused when the previous state of the video was playing, in order to capture the segment that was played. As this simple example shows, it can get complicated, and that’s exactly why there are recipes: To keep everyone singing from the same hymn sheet and stop them turning Tin Can into Tin Can’t.

What Is Its Potential? 

If the global learning community chooses to adopt Tin Can / Experience API, it will enable us to liberate learning content and activities from the confines of the Learning Management System and track learning activities across a hugely diverse range of platforms. The data gathered will give a far richer picture of the real-life impact of learning.

A new power that Tin Can gives us is the ability to analyze activities and link them to results. In the example below, data in the Learning Record Store are analyzed to show a relationship between attending a sales webinar and selling a product. The webinar software is xAPI-enabled and so is the sales CRM. They both produce statements that are stored in the Learning Record Store.

Tin Can API, LRS analytics

Wyver Solutions Ltd.

Data like this will require careful analysis to avoid confusing correlation with causation. Just because 80% of people who sold product #42 attended the sales webinar, it doesn’t necessarily follow that the webinar is a direct driver of sales success. A new era of education data mining could be upon us as organizations seek to extract meaning from their Learning Record Store statements. New analytics software is already springing up promising to provide actionable insights from training and performance data. But there is low-hanging fruit there too. If the most common search term on the company intranet by new people is “claiming expenses”, it seems actionable with little analysis: Make the expenses process clearer during induction.

This is intended as a primer, and a discussion of analytics could go on for many more pages. To close, I invite you to spend a minute or two browsing the diagram below, following the arrows around, and imagining Tin Can’s potential in your organization. I hope you now have a better idea of what Tin Can is and are better prepared for when it comes up in future learning conversations, as it surely will.

Tin Can API, Experience API, xAPI

Wyver Solutions Ltd.