GET/health
Health check
Confirms the API process is reachable.
REST API · 0.3.0
GET/health
Confirms the API process is reachable.
GET/api/openapi.json
Returns this machine-readable API contract.
GET/api/coverage
Returns concise source-neutral availability and measured completeness by sport, capability, and season.
GET/api/catalog
Returns the stable sports objects, request delivery capabilities, and documentation links available to customers without scanning stored data.
POST/api/query
Runs up to eight named selections against registered roots and returns only requested fields.
GET/api/games
Returns a chronological page from one Pacific calendar date, one league week (`week`), or one postseason round (`competition`/`round`). The first request defaults to today in America/Los_Angeles; a cursor keeps that window and the active filters stable. No sport filter means every sport. Collection items preserve identity, teams, score, phase, schedule, and freshness while omitting full-resource detail such as box scores, plays, metrics, and markets.
GET/api/games/live
Returns the complete filtered inventory of fresh games marked in progress. Games not updated inside the freshness window are excluded so stale state cannot appear live.
GET/api/games/{gameId}
Returns one compact game with identity, schedule, status, teams, and score. Use `view=card` to omit the status labels; `fields` may select a bounded named-consumer projection.
GET/api/games/{gameId}/frame
Returns the latest source-neutral render snapshot assembled only after its scoreboard, play, player-stat, and metric writes are durable. Poll this ordinary one-credit request at a bounded cadence; resumable realtime delivery is available through a direct Aura relationship.
GET/api/games/{gameId}/plays/page
Returns one stable chronological page. Use `order=desc` for the latest plays. Pass `nextCursor` as `cursor` until `hasMore` is false.
GET/api/games/{gameId}/boxscore
Returns one exact source-neutral Aura BoxScore with team and player stat lines flattened from the retained read model.
GET/api/games/{gameId}/markets
Returns the complete sellable inventory for one game. Every independently graded line is a stable market.
GET/api/games/{gameId}/odds/timeline
Returns the complete compact source-neutral market history needed to chart line movement.
GET/api/games/{gameId}/metric-series
Returns change-only metric values used by Game Pulse. Omit `entityId` and `definitionId` to return every metric for the game. Follow `nextCursor` until `complete` is true.
GET/api/games/history
Returns exact source-neutral MLB game results in stable chronological order. Each item contains only game identity, season, schedule, phase, teams, score, and venue. Follow `nextCursor` until `hasMore` is false; cursors are scoped to the active filters.
GET/api/games/history/coverage
One exact game and player-stat completeness contract for history discovery.
GET/api/metrics/definitions
Returns the complete filtered inventory of exact, cacheable Aura metric definitions and their analysis semantics.
GET/api/metrics/definitions/{metricId}
Returns one stable Aura metric definition.
GET/api/analytics/landscape
Returns the compact LeagueLandscape view.
GET/api/analytics/player-comparison
Compares two to four Aura MLB players across season and rolling windows with bounded series, coverage, cache validators, and model-ready rows.
GET/api/markets
Returns each game once with its complete collection of source-neutral markets. The page unit is a game, so alternate lines remain independently graded market objects without repeating game detail. The first request defaults to today in America/Los_Angeles and no sport filter means every sport.
GET/api/markets/{marketId}
Returns one player prop or game moneyline, spread, total, or team total by the same market id the game board publishes.
GET/api/sports/{sport}/teams
Returns the full retained team inventory with names, colors, conference, division, and subdivision. No query parameters.
GET/api/teams
Returns the complete roster-free Team inventory for one sport.
GET/api/teams/{teamId}
Returns one exact Team profile. NFL and college football teams also carry their current season: poll rank and ranked offense and defense stats. Rosters remain available from the dedicated roster route.
GET/api/teams/{teamId}/roster
Returns one Team and directly renderable roster players without a second profile lookup.
GET/api/teams/{teamId}/injuries
Returns every currently injured or suspended player on one team, newest report first. No query parameters.
GET/api/teams/{teamId}/news
Returns the 20 newest stories about one team from the last 30 days, newest first. No query parameters.
GET/api/teams/{teamId}/seasons/{season}
Returns one football team season: ranked team stats, record, results of completed games in date order with each game's week and offense and defense lines, and every player who appeared with season totals. Preseason games are left out. NFL record and totals are the regular season, with playoff games listed in results; college football counts bowl and playoff games. Season is the league season year. No query parameters.
GET/api/sports/{sport}/rankings
Returns college football polls as they stood for one week: the AP Top 25, the Coaches Poll, the CFP rankings once the committee starts publishing, and the FCS Coaches Poll. A week shows each poll's newest release at or before it, so week 1 returns the preseason polls and an early week has no CFP rankings. Retained from 2021. Omit both parameters for the latest release.
GET/api/sports/{sport}/leaders
Returns teams or players ranked by one stat over a season, a week range, or a date range. Team stats: points, totalYards, passingYards, rushingYards, firstDowns, turnovers, on offense or defense (allowed). Player stats: any football stat key, e.g. rushingYards, passingYards, receivingYards, totalTackles, sacks. College football ranks FBS unless subdivision=FCS. Example: who led rushing in October is scope=player&stat=rushingYards&from=2026-10-01&to=2026-10-31.
GET/api/stats/mlb/history/team-aggregates
Exact season and recent form used by Game Pulse.
GET/api/stats/player-game
Returns the complete normalized player-stat inventory for one game.
GET/api/sports/{sport}/players
Returns up to 100 retained player profiles in stable identity order, collapsing source aliases. Follow page.next for subsequent pages. No query parameters.
GET/api/sports/{sport}/players/page/{cursor}
Follow page.next from sport player discovery without constructing the cursor. No query parameters.
GET/api/players
Returns a cursor-paged catalog of exact Player profiles. Omit sport and league to browse every retained player.
GET/api/players/{playerId}
Returns one full Player by default. The stable `card` view returns nullable identity, team, position, and headshot fields shared by player reveals.
GET/api/players/{playerId}/headshot
Returns available player image bytes. Follow media.headshot from the player profile; null means no retained photo. Authenticate like other API reads. Browser apps should fetch a blob with their allowed public key or serve the image through their backend; never place a server key in an image URL. No query parameters. Returns 404 when unavailable.
GET/api/players/{playerId}/news
Returns the 20 newest stories that name one player from the last 30 days, newest first. No query parameters.
GET/api/players/{playerId}/seasons
Returns every retained football season newest first, one row per season, part and team, totaled from completed games the player appeared in. Preseason games are left out. NFL playoffs are their own postseason row; college football bowl and playoff games are part of the regular row, as in NCAA season totals. No query parameters.
GET/api/players/{playerId}/seasons/{season}/ranks
Ranks one football player season against every player in the same position group, overall and in their conference. NFL ranks cover the regular season. QB ranks among players with passing yards, RB with rushing yards, WR and TE with receiving yards, DL, LB and DB with tackles. Equal values share a rank. Returns 404 when the player has no completed games that season or plays an unranked position. No query parameters.
GET/api/players/{playerId}/seasons/{season}/gamelogs
Returns the full retained season newest first, across all seven sports, with one entry per game, game context, grouped stats, and explicit coverage. Season is the league season year (ending year for NBA, NHL, and college basketball). No query parameters or pagination. Missing games are not zero-stat appearances.
GET/api/players/{playerId}/gamelogs/{gameId}
Returns one player game entry using the same shape as the season collection. No query parameters. Returns 404 when no retained entry exists.
GET/api/stats/nfl/history/player-seasons
Season totals and play-derived advanced stats on Aura player ids.
GET/api/stats/mlb/history/player-lines
Exact v2 rows; page ≤250, bulk ≤1,000.
GET/api/stats/mlb/history/player-aggregates
Exact season and recent form; optional home/away and opponent splits.
GET/api/sports/{sport}/news
Returns the 20 newest league stories from the last 30 days, newest first. No query parameters.
GET/api/fantasy/nfl/adp
2026 draft ranks, ADP inputs, season projections, and recomputable fantasy scores.
GET/api/fantasy/nfl/weeks/{week}
One current NFL week with retained opening/latest/closing snapshots, input ranges, availability, and actual performance.
GET/api/fantasy/nfl/players/{playerId}
One player across draft data, weekly projections, retained observation history, and actual performance.
POST/api/agent/register
Creates trial API access (1,000 requests) without an email, password, browser session, or approval step. Key secrets are returned once. When the trial is used up, requests return `email_required`: verify the user's email with `/api/agent/claim` to move the same keys to the free plan.
POST/api/agent/claim
Sends a six-digit code to the user's email. Authenticate with the trial key. Codes expire after 15 minutes.
POST/api/agent/claim/verify
Moves the trial key's active keys to the free plan under the verified email. One account per email: a second verification of the same email joins that account and shares its quota. Key secrets do not change.
POST/api/agent/upgrade
Returns a Stripe Checkout URL for the verified account behind this key. Give it to the user; payment happens in their browser and the same keys move to Pro.
POST/api/agent/connections
Starts a ten-minute connection request. The coding agent keeps the verifier private and sends the approval URL to its user.
POST/api/agent/connections/{connectionId}/redeem
Polls with the private verifier. A pending approval returns 202; an approved request returns each API key secret once.