Construct an xAPI statement with a group actor, a custom verb, an activity object with definition extensions, and a context with instructor and registration UUID, then POST it to an LRS
domain: adlnet.gov · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Build the actor as an identified Group with an mbox IRI and an array of Agent members
Define the verb with an IRI id and a display language map
Set the object as an Activity with a definition containing name, description, type IRI, and an extensions map for custom metadata
Add a context object with a registration UUID, contextActivities (parent, grouping), and an instructor Agent
POST the statement to /xapi/statements with Content-Type: application/json, X-Experience-API-Version: 1.0.3, and Basic or OAuth authorization
Read the returned statement ID array and store it for later retrieval or voiding
Known gotchas
Group actors must include objectType: 'Group'; omitting it causes some LRSs to treat the object as an anonymous group and reject member validation
The registration UUID in context.registration must be unique per learner-activity attempt; reusing it across attempts merges sessions in analytics
xAPI 1.0.3 requires the X-Experience-API-Version header on every request; many LRSs return 400 without it even when the body is valid
Give your agent this knowledge — and 15,600+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?