Quickstart: Tier 1 (reader)
Tier 1 is read-only: people, training sessions, check-ins, per-week rollups, and the change feed. This walks getting a token, checking the deployment, and confirming the token resolves, which is the whole of what a reader needs to start.
1. Get a token
Ask your team's operator to sign in and create a token at /team/tokens. They can
hand you the plaintext once, since the platform never shows it again.
2. Check what this deployment supports
GET /v1/capabilities is public and needs no token:
curl https://xcathletes.org/v1/capabilities {
"version": "v1",
"tiers": ["reader", "writer", "roster_aware"],
"features": { "export": false, "join_codes": false, "rollups": true, "changes": true }
} 3. Confirm the token
GET /v1/token is the whoami call; any tier may make it:
curl -H "Authorization: Bearer $TOKEN" \
https://xcathletes.org/v1/token {
"kind": "live",
"tier": 1,
"team": { "id": "01020304050607080910111213141516", "name": "ECXC" },
"person_count": 24,
"issued_at": "2026-01-01T00:00:00.000Z",
"last_used_at": "2026-08-20T18:00:00.000Z"
} A 200 back, naming your token's own tier and team, is the verified outcome: you're
set up. From here, GET /v1/training-sessions, /checkins, and /rollups read the roster your grants reach, and GET /v1/changes?cursor= is how you stay current; see the mirror-sync how-to.
Bulk export is not implemented; GET /v1/capabilities reports features.export as false (EXP-01..04).