Contact Us Support Forum Get Email Updates

Thanks! Someone will be in touch with you shortly.

Rather just email us? Email us here.
Rather speak with someone in person?
Call any time with Experience API questions:


Archive for the "xAPI" Category

Deciding when to use xAPI

Posted by

Categories: Best Practices, News, Use Cases, xAPI

Posted 18 April 2018


hammering home xAPI

For the better part of seven years, Tim Martin, our CEO at Rustici Software, has carried his xAPI hammer around telling the story of what the standard enables. The problem with his hammering is that it has led some to consider xAPI the solution to any problem. Fear not: he has recently written two articles in Learning Solutions Magazine that provide clear strategies to help you decide when it’s best to use (or not use) xAPI.

In short, “3 Guiding Principles for xAPI Evangelists” identifies xAPI as a suitable technology when two systems talk to each other about things people do. That makes it a fit if you have multiple systems that already support xAPI, if you want to track in-person experiences or if you have multiple LRSs.

The follow up article, “Tips for Deciding Whether to Implement an xAPI Solution,” gives scenarios of when to use xAPI and when not to use xAPI. Sometimes SCORM is a better choice. Like the MP3, which works in every music app, SCORM’s strength is its age and the fact that nearly every software on the market supports it.

But we won’t steal all the secrets from Tim’s articles. Head over to Learning Solutions Magazine to get all the best tips and tricks so you know just when to use xAPI. Still uncertain? Just reach out! We’re always happy to help.

No Comments

Learning Solutions Conference 2018

After attending a number of xAPI-focused sessions at Learning Solutions Conference plus attending xAPI Camp before LSCon kicked off, I was astounded to see such a clear theme emerge when it comes to the spec. For xAPI practitioners, the recommendation is to “crawl, walk, run.”

This was a theme echoed by RISC, HT2 Labs, TorranceLearning, Watershed, xapiapps, Riptide Software and our very own Chris Tompkins in his session, “xAPI in your RFP.” All of them recommended that to get started it is wise to start small. Begin by mapping out a few key data points you need to prove your success. The key is to align your L&D goals with your company’s overall business goals.

For example, the benefits of a sales training course could be proved by a resulting increase in revenue. To prove this true, you’ll need an ecosystem of tools such as a sales management application (like Salesforce), an LMS and a learning analytics platform or LRS. Connecting the dots between the tools using xAPI can allow you to correlate learning experiences to meaningful metrics in your organization. Once you’ve been able to start small and prove the value of using xAPI for your training, then you’ll be able to tackle adding additional integrations within your organization’s ecosystem such as an HRIS, customer support platform, etc.

TorranceLearning’s Megan Torrance had a great take away in regards to ecosystems, she said, “It’s unrealistic for you to expect one system to do it all.”

Similarly, Steve Forman at InfoMedia Designs remarked, “It’s no longer build vs. buy–it’s assemble. Your eLearning ecosystem will be designed specifically for your organization and use case model.”

xAPI in your RFP - Chris Tompkins at LSCon

Our own Chris Tompkins reminded us that even though it’s exciting to use xAPI because it’s new, you want to be sensitive to choosing the right tool for the job. He advised, “Don’t just assume you’ll need xAPI.” Each of the standards (SCORM, xAPI, cmi5 and AICC) has specific strengths, so it’s important to begin by identifying why you need xAPI and what you want to achieve using the standard.

Leaving Learning Solutions, I felt inspired and excited to see other attendees use an agile approach with xAPI to get started. Just remember: xAPI can be tough to kick off so be ready to test, fail and iterate.

No Comments

Political intrigue. High stakes drama. Inside baseball. This post is about something that is important but not exciting.


Facts: Next week, the IEEE LTSC xAPI TAG will be taking a vote about if and which aspects of xAPI 1.0.3 to propose to the broader IEEE for consideration as a standard.

Opinions (mine):

  • Somewhat important: standardization matters in that many organizations (particularly some outside the US) will care that xAPI has (eventually) been blessed by IEEE.
  • More important: the nexus of xAPI work is moving toward this group, and it’s active.

I’m firmly amongst the xAPI pragmatists, seeking shorter term gains and use cases where xAPI is legitimately better than other solutions. This active group, the TAG, is crucial in that it will be able to explore and innovate allowing the utility of xAPI to grow beyond what is currently well supported. Simply, xAPI and its supporting technologies are already useful but not yet sufficient for everything people hope it can be. The work matters, and it needs a home. This seems to be that home.

The Details

The details come with full credit to Shelley Blake-Plock and Avron Barr for their clarity and content.

  • The TAG is considering multiple potential standards related to xAPI 1.0.3, ranging from xAPI data model and bindings to profiles, conformance and LRS behaviors.
  • Members of the TAG will write Project Authorization Requests (PARs) for each proposed standard, delineating purpose, need and scope.
  • PARs will then go through the IEEE approval process over a period of several months and steps.
  • Working groups may begin work prior to that formal approval in the LTSC, based on the assumption that the PARs pass.
No Comments

Last week wrapped up I/ITSEC 2017, the largest training and simulation event in the world. This year, we exhibited and talked with people about how we help solve problems around eLearning standards like xAPI and SCORM (along with the updated DoDI 1322.26). What was notable about this year, for me, was the introduction to a new term: “system of systems.” For those unfamiliar, system of systems refers to a collection of systems that are brought together to create a new, more complicated system that’s greater than the sum of its parts. System of systems is an idea used throughout organizations or softwares, but at I/ITSEC, many people were talking about it in the context of xAPI.

It’s safe to say that every DoD agency uses multiple systems for training. They may have one or multiple LMSs, AR tools, VR tools, authoring tools, content management tools, physical simulations, in-person training..the list can go on. Because of the complexity of their ecosystem, they must think strategically about how each system works within the whole. Thus, the idea of a system of systems.

What arose in conversations at I/ITSEC was how well-suited xAPI is for supporting the creation and reporting on a system of systems. xAPI is at its core a communication protocol that helps multiple, separate pieces communicate in the same way. Using xAPI, the DoD could connect experiences from in-person training to those in an LMS.

We saw some great tools that leverage modern technology for training, particularly when it comes to AR and VR. Traditionally, each of these tools would be self-contained. But with xAPI and a systems of systems approach, each of these tools can become part of a larger plan that connects disparate systems and experiences.

We look forward to learning more about how DoD agencies (or those outside the DoD too!) use xAPI to support the creation of their system of systems. If you ever have any questions about how you can do this or how we’ve helped other clients create their ecosystem, let us know. We like talking about the standards.

No Comments

Last Friday, we were excited to be involved in xAPI Party. The celebration marked the end of the xAPI Cohort run by Torrance Learning (their next Cohort starts February 1) and our Director of Products TJ Seabrooks gave a demo. Since many of the folks at the xAPI Cohort were familiar with the free LRS in SCORM Cloud, we wanted to share a story of how we helped one of our clients with a super particular xAPI problem, so TJ shared how to add attachments to an xAPI course in Lectora.

This specific example comes from a client who is large and in a highly regulated industry. Before working with us, their certificates were tied to the end of each course. If a learner were to lose the certificate, they’d have to go back, relaunch the course and redownload the certificate. They needed the ability to maintain and later present certificates for learners so that any administrator in the organization could go into the LRS, view the learners’ scores and download certificates for each learner.

Our solution was to build out a simple reporting system that let them view xAPI attachments as part of a grade book reporting system. xAPI is particularly well-suited to this solution because it is reusable: any content you author can be launched from any LMS that supports xAPI and any LRS can store and fetch the attachments. This is unlike SCORM, with which you would need to build a custom solution that only works for a single system.

Since our customer was already familiar with Lectora, we provided instructions for setting an action in a Lectora course that lets us send our own custom event when we’re finished with the course. If you don’t use Lectora, you could adapt these steps to another authoring tool that supports xAPI pretty easily (and if you’re struggling – just reach out to us).

If you want to see everything “in action,” you can check out a video of TJ’s demonstration, head over to Torrance Learning’s Adobe Connect recording. In the video demo, TJ walks you through how to add the custom JavaScript code (TinCanJS and html2canvas) to Lectora, test the course in SCORM Cloud and then retrieve the certification in our custom reporting dashboard, which shares info like score, pass/fail, launch date and assessment result.

Technical steps for sending and receiving attachments in Lectora

To include TinCanJS in the project, you need to create an HTML Extension object (Figure 1) and set the “Type” property to “Top of file scripting” (Figure 2).

Figure 1

Figure 2

Click edit (seen in Figure 2 above) and add the TinCanJS file like you would on a webpage (through a <script> tag with a relative URL). Or paste the code in between <script> tags (Figure 3).

Figure 3

Something to note: any code in an HTML Extension has to be valid HTML, so if any JS added isn’t inside a <script> tag, it will break.

Next, to create the screenshot of the page, use html2canvas. You’ll need to add the html2canvas source code the same way you did for TinCanJS. If you want to capture and send the current document, i.e. the page where you loaded the JS, pass “document.body” to the html2canvas() function. This function returns a promise, so use a .then() to process the screenshot. The parameter passed to the .then() is an HTML canvas object, so to get the content and the content-type, we have to use the canvas.toDataURL() function. The format for a DataURL is as follows:


Figure 4

You will need to parse this string to get the content-type and the content itself (code for parsing shown in Figure 4). The content will be the raw binary data, which is what should be placed in the content section of the attachment.

In the code shown in Figure 4, cfg is the object that contains all of the other parameters of the statement. Cfg.attachments is an array that holds all of the attachments associated with that statement. Note that the code shown in Figure 4 happens after you have set up both the LRS and the other parameters of the statement in your Javascript.

Once you send the statement, you can run queryStatements() on the LRS, which will return a StatementsResult object. When you run queryStatements(), be sure to set the “attachments” flag to “true” (shown in Figure 5). This flag lets the LRS know to return both the statements and any attachments that it has.

Figure 5

Once the StatementsResult object is returned, you can iterate through its list of statements until you find the statement that has the attachment. To download the file, you’ll need to run the following code:

var link = document.createElement(“a”); = “Test.png”;
link.href = “data:”+<attachment>.contentType+”;base64,”+<attachment>.content;;

Where <attachment> is the TinCan.Attachment object whose content you want to download. This code reconstructs the dataURL, and then uses that to download the file. One thing to note is that the file extension of “” should match the filetype of the attachment (if the file is a .jpeg, it should be .jpeg, if it’s a .pdf, it should be .pdf, etc.).

Customize for your needs

This is a basic guide for creating, sending and receiving attachments inside Lectora. It can be completely customized to your needs. For example, the object passed to html2canvas() can be any HTML element, not just the entire document. Therefore, if you only wanted to print a certain <div> on the page, you can pass that element instead.

Also, the TinCanJS library is designed to make sending and receiving attachments easier for the user, so the queryStatements() function handles verifying that the right attachment content is put with the rest of its data and attached to the correct statement.

If you have any questions implementing these steps or are curious about how we can help you with xAPI in general, reach out to us. In the meantime, we’d recommend checking out the free LRS in SCORM Cloud and the xAPI Open Source libraries.

No Comments