Skip to main content

Overview

The V1 WebSocket provides real-time score updates with adaptive polling: 1-second intervals when live games exist, 2-second when no live games. This delivers the fastest possible score updates.

Connection

Replace {sport} with any supported sport slug (e.g., football, tennis, baseball).
The WebSocket connection requires authentication via the x-api-key query parameter.

Welcome Message

On successful connection, you receive:

Client Messages

Subscribe

Unsubscribe

Ping / Pong

Response:

Server Messages

Sport Channel Updates

Live Channel (All Sports)

Match-Specific Updates

Available Channels

Code Examples

Update Frequency

The V1 WebSocket uses adaptive polling to minimize latency during live games while reducing server load during quiet periods.

World Cup reliability: pair V1 + V2

For high-stakes matches (World Cup knockouts, finals), run both the V1 and the V2 WebSocket in parallel. The two feeds sit on independent infrastructure paths with different upstream sources, so a hiccup on one side does not interrupt the other.
  1. Connect to V2 as the primary source for sub-second incidents and stats.
  2. Connect to V1 in parallel and subscribe to match:{gameId} for the same match — treat its match-update payload as a hot fallback for score and status.
  3. If V2 drops or stops emitting for more than a few seconds, your UI keeps updating from V1 without any user-visible gap.
  4. Combine with V1’s dedicated World Cup REST endpoints (/api/v1/world-cup/...) for tournament-level context (groups, brackets, predictions).
Both feeds are independent and counted separately for quota. Subscribe only to the channels you actually render — match:{gameId} on V1 plus match:{matchId} and match:{matchId}:incidents on V2 is a typical World Cup matchday setup.
Last modified on June 29, 2026