Education

Api Learning Mastery Badges

LEARN Phase 11 — per-domain tier badges (self-only).

OWNER decision #4 (2026-04-17): badges are SELF-ONLY. No public endpoint exposes another user's mastery grid. This endpoint reads the authed user from the session and returns ONLY their own data.

Tier thresholds:

  • Journeyman: mean_score >= 60 (shown when attempted_count >= 3)
  • Analyst: mean_score >= 80 (shown when attempted_count >= 5)
  • Oracle: mean_score >= 95 AND first_seen_at <= NOW() - 60d (sustained-mastery proxy — we don't keep full score history, so "has been tagged with this domain for 60+ days" is our best signal that the >=95% score isn't a flash-in-the-pan result) AND attempted_count >= 5 AND coverage_pct >= 50 (#95, 2026-08-13 — the sustained-score proxy said nothing about BREADTH, so three concepts out of sixty earned the terminal badge. Oracle also had a lower evidence floor than Analyst, which is inconsistent independent of the coverage question; both are fixed. Threshold: _ORACLE_MIN_COVERAGE_PCT)

Response shape: { "domains": [ {domain, title, mean_score, attempted_count, total_concepts, coverage_pct, tier, tier_label, next_tier, next_tier_target}, ... ], "overall_tier": "journeyman"|"analyst"|"oracle"|"learner", "concepts_with_attempts": int, "total_concepts": int, }

Sorted by mean_score DESC. Domains with zero attempts still appear (tier=null) so the grid is always 8 panels.

get/api/learning/mastery/badges

Request

  • Base URL: https://www.oxfordledge.com (the document declares no server; this is the origin it was published from)
  • URL: https://www.oxfordledge.com/api/learning/mastery/badges
  • Auth: none declared

Response

Successful Response

overall_tierstring required

Overall cross-domain tier: oracle | analyst | journeyman | learner. Defaults to 'learner' until the user has earned a tier in ≥ ceil(N/2) domains.

concepts_with_attemptsinteger required

Total attempted concepts across all domains.

total_conceptsinteger required

Total concepts in the canonical taxonomy (denominator).

Changes

No recorded changes to this operation across all 1 revision of this API.