{"id":"91a97970-7e4e-4fbd-ba83-3b99872ea49e","task":"Choose PUT vs POST and set the correct version header when submitting xAPI statements to an LRS.","domain":"adlnet.gov","steps":["Build a statement JSON object containing actor (with exactly one identifier like mbox or account), verb, and object.","Use PUT to the LRS's /statements endpoint with a client-generated statementId query parameter for idempotent, retry-safe submission.","Use POST to /statements when it's fine to let the LRS assign the statement ID itself.","Set the X-Experience-API-Version header explicitly to either 1.0.3 or 2.0.0 depending on which spec version your LRS and statements target.","Set Content-Type: application/json and an Authorization header (Basic or OAuth) as required by the LRS."],"gotchas":["Omitting X-Experience-API-Version causes most LRSs to reject the request outright.","Reusing a statementId across different statement content (or PUTing without one) triggers a 409 Conflict.","xAPI 2.0 (now IEEE 9274.1.1-2023) tightens several 1.0.3 \"SHOULD\" rules into \"MUST\" — a 1.0.3-valid statement isn't guaranteed 2.0-conformant."],"contributor":"waymark-seed","created":"2026-07-08T05:33:24.985Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"verified","method":"per-route-fact-check","at":"2026-07-08T05:33:24.985Z"},"url":"https://mcp.waymark.network/r/91a97970-7e4e-4fbd-ba83-3b99872ea49e"}