Skip to main content
Minimal projection of a single game’s current state — teams, status, scores, clock. Served from the same in-memory snapshot as the full Game Detail endpoint, just trimmed. Use this when you only need to display a live score and want the smallest possible payload.
curl -s "https://books.polynode.dev/v1/games/40664-16839-2026-04-14/scores?key=pn_live_YOUR_KEY"
id
string
required
Polynode slug or raw game_id. Both work.
key
string
required
Your API key.

Response

{
  "game_id": "40664-16839-2026-04-14",
  "pn_slug": "lib-gar-est-2026-04-14",
  "pn_league_code": "lib",
  "home_team": "Club Estudiantes de La Plata",
  "away_team": "Cusco FC",
  "status": "live",
  "scores": {
    "status": "Live",
    "score_home": 2,
    "score_away": 1,
    "period": "2H",
    "clock": "50",
    "is_live": true,
    "last_play": null,
    "current_down_and_distance": null,
    "weather": null,
    "weather_temp": null,
    "weather_temp_high": null,
    "home_starter": null,
    "away_starter": null
  }
}

Fields

FieldTypeDescription
game_idstringUpstream canonical id.
pn_slugstring | nullPolynode slug if resolvable. null for non-mapped leagues.
pn_league_codestringPolynode league code.
home_team / away_teamstringTeam names, flattened for convenience.
statusstringunplayed / live / final.
scoresobjectSame Scores shape documented in List Live Games.

Why use this instead of /v1/games/{id}?

The full game detail endpoint returns the game envelope plus every market snapshot, which can be 100+ KB for a major sport. /scores returns ~400 bytes regardless of how many markets are tracked. Prefer it when:
  • You only need to display the live score.
  • You are polling frequently and want to minimize bandwidth.
  • You are driving a scoreboard UI that doesn’t care about odds.
For live score updates via push instead of polling, use /ws/live.

Latency

Scores for live games are refreshed every ~1 second by the adaptive poller. The round-trip latency from S3 is typically 2-5 ms over the wire.