xAPI Specification Knowledge Base
Provide comprehensive guidance on xAPI (Experience API) specification for educational assessment and learning analytics.
Core Concepts
Statement Structure
An xAPI Statement follows the "Actor-Verb-Object" pattern with optional Result and Context:
{ "actor": { }, // Who performed the action "verb": { }, // What action was performed "object": { }, // What was acted upon "result": { }, // Outcome of the action (optional) "context": { }, // Additional context (optional) "timestamp": "", // When the action occurred "id": "" // Unique statement identifier (UUID) }
Required Fields
-
Actor - Agent or Group performing the action
-
Verb - Action taken (URI + display name)
-
Object - Activity, Agent, or Statement Reference
Actor Types
Agent (single learner):
{ "objectType": "Agent", "name": "Learner Name", "mbox": "mailto:learner@example.com" }
Account-based identification (recommended for LMS):
{ "objectType": "Agent", "account": { "homePage": "https://lms.example.com", "name": "user123" } }
Verb Structure
Define verbs with URI identifier and display text:
{ "id": "http://adlnet.gov/expapi/verbs/answered", "display": { "en-US": "answered" } }
Consult references/verbs.md for the complete ADL and cmi5 verb registry.
Object (Activity) Structure
{ "objectType": "Activity", "id": "https://example.com/activities/quiz-123", "definition": { "name": { "en-US": "Quiz on xAPI Basics" }, "description": { "en-US": "A quiz testing knowledge of xAPI" }, "type": "http://adlnet.gov/expapi/activities/assessment" } }
Result Structure
Capture assessment outcomes:
{ "score": { "scaled": 0.85, "raw": 85, "min": 0, "max": 100 }, "success": true, "completion": true, "response": "choice-a", "duration": "PT30S" }
Duration format: ISO 8601 duration (PT = Period Time, e.g., PT1H30M = 1 hour 30 minutes)
Context Structure
Provide additional information about the learning experience:
{ "registration": "uuid-for-attempt", "contextActivities": { "parent": [{ "id": "https://example.com/course-123" }], "grouping": [{ "id": "https://example.com/program-abc" }], "category": [{ "id": "https://w3id.org/xapi/cmi5/context/categories/cmi5" }] }, "platform": "Example LMS", "language": "en-US" }
Interaction Types for Assessments
xAPI supports these interaction types for quiz questions:
Type Description Use Case
true-false
Binary choice Yes/No, True/False questions
choice
Multiple choice Single or multiple selection
fill-in
Text input Short answer questions
long-fill-in
Long text Essay questions
matching
Pair matching Match items from two lists
performance
Task steps Procedural tasks
sequencing
Order items Arrange in correct sequence
likert
Scale rating Survey/opinion questions
numeric
Number input Mathematical answers
Consult references/interaction-types.md for detailed examples of each type.
Activity Types
Common activity types for educational contexts:
Category Type URI Use Case
Assessment http://adlnet.gov/expapi/activities/assessment
Quizzes, exams
Question http://adlnet.gov/expapi/activities/cmi.interaction
Individual questions
Course http://adlnet.gov/expapi/activities/course
Course container
Module http://adlnet.gov/expapi/activities/module
Course sections
Lesson http://adlnet.gov/expapi/activities/lesson
Individual lessons
Consult references/activity-types.md for the complete registry.
cmi5 Profile
cmi5 is a standardized xAPI profile for e-learning. Key requirements:
-
Defined verbs: launched, initialized, completed, passed, failed, abandoned, waived, terminated
-
Mandatory context: registration, sessionId, masteryScore
-
Required extensions: sessionId, launchMode, launchURL
For cmi5-compliant statements, consult references/cmi5-profile.md .
Statement Generation Workflow
To generate a valid xAPI statement:
-
Identify the Actor (learner/user information)
-
Select appropriate Verb from ADL registry
-
Define the Object (activity being tracked)
-
Include Result for assessment outcomes
-
Add Context for hierarchical relationships
-
Generate UUID for statement ID
-
Add timestamp in ISO 8601 format
Validation Checklist
Validate statements against these criteria:
Structural validation:
-
Actor has valid identifier (mbox, account, or openid)
-
Verb has id (URI) and display (language map)
-
Object has id and objectType
Vocabulary validation:
-
Verb URI matches ADL/cmi5 registry
-
Activity type URI is valid
cmi5 validation:
-
Context includes registration UUID
-
Context includes sessionId extension
-
Correct verb sequence (launched → initialized → ... → terminated)
Interaction validation:
-
interactionType matches response format
-
correctResponsesPattern format matches interactionType
-
choices/scale/source/target arrays are valid for type
Additional Resources
Reference Files
Detailed specifications and registries:
-
references/verbs.md
-
Complete ADL and cmi5 verb registry
-
references/activity-types.md
-
Activity type URIs and usage
-
references/interaction-types.md
-
Detailed interaction type examples
-
references/cmi5-profile.md
-
cmi5 requirements and extensions
External Resources
-
xAPI Specification
-
ADL Vocabulary
-
cmi5 Specification