---
title: "Xapi Java"
description: "A Java library in two parts: a model of the xAPI data types with the specification's validation rules built in, and a client for sending statements and documents to a learning record store. Both use a fluent builder interface and immutable objects, and the client is a Spring WebClient wrapper with auto-configuration, so in a Spring Boot service the endpoint and credentials become three properties in application.yml."
canonical_url: "https://scorm-tools.com/tools/xapi-java"
last_updated: "2026-10-31T10:22:03.656Z"
---

A Java library in two parts: a model of the xAPI data types with the specification's validation rules built in, and a client for sending statements and documents to a learning record store. Both use a fluent builder interface and immutable objects, and the client is a Spring `WebClient` wrapper with auto-configuration, so in a Spring Boot service the endpoint and credentials become three properties in `application.yml`.

It suits back-end systems that generate learning records — an LMS, an assessment engine, a simulation that reports outcomes — and it suits them well, because validation happens at the model boundary rather than being discovered when an LRS rejects a batch. The escape hatch matters too: real-world activity providers break the rules constantly, and individual validation constraints can be switched off, with the README stating plainly that doing so violates the specification.

Two things to check before adopting. Java 25 for the current line is aggressive, and the 1.x fallback for Java 17 will not receive the same attention. And the Spring dependency is not incidental — outside Spring you are using the model and writing your own transport.

Maintenance looks genuinely healthy for a project this size: commits within the last week, v2.0.2 released in May 2026, one open issue, and CodeQL and SonarCloud gates on the pipeline. Nineteen stars understate it; this is a small vendor's working library, not a weekend project.
