xAPI Statements

Come on in, the xAPI is just fine!

This page has links to pages which discuss the components of a valid xAPI statement, how statements are written in JSON and Javascript, and tools to help you to practice building statements.  Statements which do not follow the specification accurately are considered invalid and will not be accepted into a certified LRS.  Thus assuring a first-level of data validity across all xAPI data.

people wading into water.png
I’ve chosen the following resources because they are the least technical in nature of the resources I’ve seen.  It’s vital for Instructional Designers to understand the components of xAPI Statements well and how they express what is happening when learners are involved in the learning experiences we design.  If we are going to build Learning Analytic tools that provide us with tangible information about learning and its impact on business objectives, we need to understand the data points we need and how to get them via xAPI.

xAPI is written in JSON which is very minimal on technical nomenclature and allows for human readable descriptions, which makes reading the code relatively easy.  I found that after a few exposures to the actual code, it made sense to me.

The resources I’ve chosen will let you wade into the technical aspects of xAPI without getting your hair wet.

These links were created using Diigo, you’ll find my highlights on the pages when you click through using these links.  If you’d prefer, you can go to my original Diigo outliner where I’ve been doing the aggregation and curating of these links.

The Building Blocks of an xAPI Statement

While Actor-Verb-Object is the core of the xAPI statement structure, it is in the detail within these and the optional properties (Results-Context-Attachments) that the real power of xAPI lies.  The following links will get you started on the path to understanding the data xAPI is capable of generating.

Anatomy of an xAPI Statement: Part 1 – RISC INC
JUN 2016 – Art Werkenthin provides a mostly non-technical overview of the structure of an xAPI Statement (Actor, Verb, Object)

Anatomy of an xAPI Statement: Part 2 – RISC INC
JUL 2016 – Art Werkenthin completes his non-technical review of the xAPI statement components covering Result and Context.

Deep Dive: Verbs – Tin Can API
JUN 2013 – A deeper explanation of the Verb property of the xAPI statement.]

Deep Dive: Object – Tin Can API
JUL 2013 – A slightly deeper look at the very powerful (and potentially confusing) Object property in xAPI. (made a bit more confusing by an overblown Chipotle metaphor).

Deep Dive: Activity – Tin Can API
JUL 2013 – A deeper look at the Activity object of the Object property.

Get the Activity Id Right – Watershed LRS
OCT 2016 – Andrew Downes talks about common errors in the Activity ID in this blog post.

Communities of Practice and Profiles

The xAPI Standard is written in a way to balance between the need for control (otherwise, it wouldn’t be a standard) and flexibility.  The flexibility is needed for two primary reasons.  1) vocabulary can vary from context to context – “fired” means something quite different in the HR office than it does on an Army rifle range.  2) new technologies and other changes could render a rigid standard obsolete.  To enable the flexibility, xAPI places critical part of the code (Verb, Activity Types, various Extensions, and Recipes of actions in a field) in the hands of Communities of Practice who create Profiles for the area they have dedicated themselves to.

It’s Time for Profiles – Tin Can API
JAN 2013 – An explanation of Profiles in xAPI.


Vocabulary is at the heart and sole of interoperability.  Through the efforts of the CoP’s to define recommended vocabulary and activity types and the user community abiding by these recommendations, xAPI can meet its goal of data interoperability.  This will allow for consistent reporting of learning not only within an organization but across an industry.

Experience API (xAPI) Vocabulary & Semantic Interoperability Community Group
This is the home page for the vocabulary working group. (Click on the Archive link and then follow the link to the Working Group’s Google Drive file.)

Experience xAPI Vocabulary Primer · Experience xAPI Vocabulary Primer
This fairly technical document reviews the principles and practices regarding vocabulary in xAPI. Standardized vocabulary practices are essential for the data interoperability. Communities of Practice use this document as a guide in creating their specific vocabularies which can either replace or augment the standard xAPI vocabulary.

Referencing Existing Vocabulary, Activity Types, and Recipes

If we are all going to try to use the same vocabulary, activity types, and recipes, there needs to be a common place to find the existing objects.  Currently, there are two places to look.  If you don’t find an object that works for your situation, you are welcome to create your own.  If a community already exists for the industry, tool or activity type that you are working in, it’s recommended that you work with that community to add what you need. In any case, it is asked that you submit it to the Repositories so that it can then become a standard object for others to use.

Experience API (xAPI) – ADL Vocabulary
This is the page for the ADL controlled vocabulary. It should be the starting point for anyone looking for or to create verbs or activity types. It is not required but highly recommended that anyone creating statements in xAPI use these terms or those in the TinCan Registry. CoP’s creating new terms for their needs, should have their terms added to this list.

The TinCan Registry
This list of vocabulary includes the ADL vocabulary but it is larger as it incorporates communities of practice vocabularies. It includes a list of profiles that exist for various use cases, standard Extensions that can be used, and standard Attachment uses.

Talking to the Techies

While most of the heavy lifting with xAPI will be handled by the various tool vendors, there will be options to customize. Until xAPI gains critical mass, there will also be cases of tools that are in use that you’ll need IT’s assistance to implement xAPI. The following documents will help you make the case and get them involved in building your interventions.

Ten Steps to Plan & Communicate Your xAPI Design to a Web Developer by Craig Wiggins, Peter Berking & Steve Foreman : Learning Solutions Magazine
OCT 2014 – While a bit dated (particularly around verb and activity type vocabulary), this article does provide a solid understanding of how to work with IT to manually create statements and triggers to generate xAPI statements when available tools don’t yet enable it.

Five Things a Web Developer Needs to Know About the xAPI by Andy Johnson, Jason Haag & Steve Foreman : Learning Solutions Magazine
OCT 2014 – While a bit dated (particularly regarding verbs and activity type vocabulary), this is a great article to share with your technical team to give them a first pass at what is involved with xAPI.

Twitter List of people and organizations that tweet about xAPI.  Please follow it.  If there is someone or an organization that tweets regularly about xAPI, please send me your suggestions (Direct tweet me, use Contact page here at new eelearning, or email me if you have my email.)


Is there something you don’t understand about xAPI?  Questions about something said in one of the above resources? General thoughts on these resources?   Add a comment below.

If you have any ideas on resources you feel should be on this page or in this Resource Center, feel free to use the comment section below or contact me via the Contact page here at new eelearning.

One thought on “xAPI Statements”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s