Skip to main content

Published route

  • GET /api/games/catalog?teamId=... or ?teamSlug=...
Public. No Clerk session required.

Runtime behavior highlights

  • Returns { daily: Game[], weekly: Game[] } for the team’s enabled games.
  • Each entry includes id, key, title, description, icon, and badge.
  • Cache: public, max-age=60, stale-while-revalidate=300.
  • Missing teamId/teamSlug400. Unknown team → 404.

Published play routes

  • /api/games/daily-spin/config, /state, /spin
  • /api/games/guess-player/session/start, /session/guess, /session/invalidate, /players
  • /api/games/live/active, /by-code/{code}, /join, /{sessionId}/score, /{sessionId}/leaderboard
  • /api/games/live/start and /{sessionId}/end (team manager)
  • /api/games/pick-em/players (leftover roster helper)
Do not call deprecated /api/games/daily-spin/reward. Engine Pick’em sessions use /api/v1/engage/games/daily-pickem/*. Game Center schedule, realtime discovery, detail, stats, player-stats, plays, lineup, top-performer, win-probability, chat (including PUT /chat/read and POST /chat/{messageId}/react), presence, ratings, and live-activity are published under /api/events/*. Native must not assume these keys exist for every team. Render only catalog results, then overlay the engine catalog. locker-singularity progress is the idle ledger, not these play routes.

Exclusions

  • Admin game CRUD and team assignment internals are redacted.