Games

Per-slate and per-game endpoints. Every authenticated user can read games; brief content and cross-game signals are tier-gated separately.

#List today's slate

GET/api/v1/games/today
Auth required
Returns today's scheduled games, sorted per the sort parameter. Any authenticated user.

Query parameters

leaguestring[]optional
CSV of LeagueKey values (e.g. nba,nfl). Omit for all leagues.
sortenumoptional
signal_strength (default) or time.
limitintegeroptional
Positive integer, max 100.
cursorstringoptional
Opaque pagination cursor from pagination.next_cursor.

Try it

bash
curl "https://api.closeline.io/v1/games/today?league=nba,nfl" \
  -H "Authorization: Bearer $CLOSELINE_API_KEY"
json
{
  "data": [
    {
      "id": "game_01HXY...",
      "league": "nba",
      "scheduled_at": "2026-04-17T23:10:00Z",
      "status": "scheduled",
      "home": { "id": "team_...", "name": "Boston Celtics", "abbr": "BOS" },
      "away": { "id": "team_...", "name": "Miami Heat",     "abbr": "MIA" },
      "venue": "TD Garden",
      "is_outdoor": false,
      "consensus_spread": -6.5,
      "consensus_total": 218.5
    }
  ],
  "pagination": { "next_cursor": null }
}
ts
const slate = await cl.games.today({
  league: ["nba", "nfl"], // LeagueKey[] — see @closeline/types
  sort: "signal_strength", // or "time"
  limit: 25,
});

#Single game

GET/api/v1/games/{gameId}
Auth required
Returns one game by id. 404 not_found if the id is unknown.
GET/api/v1/games/{gameId}/signals
Auth required
Signals fired on this game.
GET/api/v1/games/{gameId}/lines
Auth required
Line observations. ?book= filters to one sportsbook.
GET/api/v1/games/{gameId}/injuries
Auth required
Current injury report for both rosters.
GET/api/v1/games/{gameId}/live
Auth required
Live score + period. Returns null before tip-off.

SDK

ts
const game = await cl.games.get(gameId);
const lines = await cl.games.lines(gameId, { book: "pinnacle" });
const injuries = await cl.games.injuries(gameId);
const live = await cl.games.live(gameId); // null if not yet started
const signals = await cl.games.signals(gameId);