Skip to main content

Deliver

xAPI / LRS integration

Forward learning activity statements to any xAPI Learning Record Store, configured per organization, with the exact statement schemas sent.

Last reviewed

Scormbusters can forward learning activity to any xAPI-compatible Learning Record Store (LRS). This lets you aggregate data from Scormbusters alongside other tools in a central LRS for reporting and analytics.


Table of contents

  1. What is xAPI?
  2. Configuration
  3. Statements sent
  4. Statement schemas
  5. Supported LRS providers

What is xAPI?

xAPI (Experience API, also called "Tin Can") is a standard for recording learning activity as statements — structured JSON objects in the form *"actor did verb to object."* Statements are stored in an LRS.

Example: "Alice completed Lesson 1 in Safety Training, scoring 85 out of 100."

xAPI is especially useful if you need:

  • A single analytics view across multiple learning tools
  • Long-term compliance records
  • Custom reporting beyond what Scormbusters' built-in analytics provides

Configuration

Settings → xAPI / LRS (owner only)

FieldDescription
LRS EndpointBase URL of your LRS, e.g. https://lrs.yourcompany.com/xapi — must be HTTPS
Auth tokenCredentials in username:password format — sent as Basic authorization header

Click Test connection to verify Scormbusters can reach your LRS before saving.

Once configured, all lesson completions and course completions are forwarded automatically. There is nothing to enable per-course.

Security: The LRS endpoint is validated server-side. Private IP ranges (localhost, 10.x, 192.168.x, etc.) are blocked to prevent server-side request forgery.

Statements sent

Scormbusters sends two types of xAPI statements:

EventVerbActivity type
Learner completes a lessoncompletedlesson
Learner passes a coursepassedcourse
Learner fails a coursefailedcourse
Learner finishes a course with no scored contentcompletedcourse

Statements are sent best-effort — if the LRS is unreachable, the error is logged but the learner's session is not interrupted.


Statement schemas

All statements use xAPI 1.0.3.

Lesson completed

{
  "actor": {
    "objectType": "Agent",
    "name": "Alice Smith",
    "mbox": "mailto:alice@company.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/completed",
    "display": { "en-US": "completed" }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://yourdomain.com/courses/<courseId>/lessons/<lessonId>",
    "definition": {
      "name": { "en-US": "Introduction to Safety Procedures" },
      "type": "http://adlnet.gov/expapi/activities/lesson"
    }
  },
  "result": {
    "completion": true,
    "score": {
      "raw": 85,
      "max": 100,
      "scaled": 0.85
    }
  },
  "context": {
    "contextActivities": {
      "parent": [
        {
          "objectType": "Activity",
          "id": "https://yourdomain.com/courses/<courseId>"
        }
      ]
    }
  },
  "timestamp": "2026-04-21T14:10:00.000Z"
}

result.score is omitted if the lesson has no scored content.


Course passed

{
  "actor": {
    "objectType": "Agent",
    "name": "Alice Smith",
    "mbox": "mailto:alice@company.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/passed",
    "display": { "en-US": "passed" }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://yourdomain.com/courses/<courseId>",
    "definition": {
      "name": { "en-US": "Safety Training Fundamentals" },
      "type": "http://adlnet.gov/expapi/activities/course"
    }
  },
  "result": {
    "completion": true,
    "success": true,
    "score": {
      "raw": 85,
      "max": 100,
      "scaled": 0.85
    }
  },
  "timestamp": "2026-04-21T14:20:00.000Z"
}

For a failed course, the verb is http://adlnet.gov/expapi/verbs/failed and result.success is false.

For a course with no scored content, the verb is completed and result.score is omitted.


Actor resolution

The actor name comes from the learner's full_name in their Scormbusters profile (falls back to "Learner" if not set). The mbox is their email address.


Supported LRS providers

Scormbusters has been tested with the following LRS providers:

ProviderNotes
SCORM CloudWidely used, free tier available
WatershedStrong analytics and reporting
Learning LockerOpen source, self-hostable
VeracityEnterprise-focused

Any LRS that implements the xAPI 1.0.3 specification and accepts statements via POST /statements with Basic authentication will work.