The live snapshot is the shared data shape that carries real-time match state across both REST and WebSocket surfaces. Whether you poll on demand or receive pushed updates, the structure is always the same.
Used by
GET /matches/{id}/live — returns the snapshot directly
GET /matches/{id}/result — returns the snapshot as half_time and full_time objects
WebSocket snapshot and update frames — the snapshot is the data field
Top-level fields
Schema version. Currently 1.
Your match id. Present on WebSocket frames for multiplexing; omitted on REST responses.
Upstream reference ids. Clients can usually ignore this object. Upstream statistics topic id. Always present.
Upstream live id (optional).
Upstream fixture id (optional).
Normalized sport name, e.g. "soccer".
League or competition name, e.g. "USA MLS Next Pro League".
Current match state: live, ht (half-time), ft (full-time), or not_started.
Match clock. See Clock below.
Current score as {"home": int, "away": int}.
Decoded current game state. See Phase below.
Map of stat key → {"home": int, "away": int}. See Statistics .
Timeline incidents. null if no events have occurred yet. See Events .
Last event-anchored ball position on the pitch. See Ball Position .
When this snapshot was produced, in ISO 8601 UTC.
Clock
Current second within the minute.
Current period: 1H, 2H, HT, or FT.
true while the clock is ticking; false during breaks (half-time, full-time).
Stoppage or added minutes, when applicable.
The displayable timer is minute:second — for example, 75:56.
Phase
The phase object describes what is happening on the pitch right now.
Which team the phase involves: "home", "away", or an empty string.
Human-readable label, e.g. "Dangerous attack", "Corner", "Goal", "Safe possession".
Raw provider game-state code. Clients can usually ignore this.
Full example
{
"v" : 1 ,
"match_id" : 41282 ,
"provider" : { "stat_id" : "151350409062M1_1" },
"sport" : "soccer" ,
"competition" : "USA MLS Next Pro League" ,
"home" : "Vancouver Whitecaps II" ,
"away" : "The Town" ,
"status" : "live" ,
"clock" : { "minute" : 75 , "second" : 56 , "period" : "2H" , "running" : true , "added" : 0 },
"score" : { "home" : 3 , "away" : 2 },
"phase" : { "vc" : "21002" , "team" : "away" , "code" : "1002" , "label" : "Dangerous attack" },
"stats" : {
"shots_on_target" : { "home" : 4 , "away" : 2 },
"possession" : { "home" : 56 , "away" : 44 },
"corners" : { "home" : 5 , "away" : 3 }
},
"events" : [
{ "minute" : "60" , "type" : "goal" , "team" : "home" , "label" : "Goal" , "score" : "1-0" }
],
"ball" : { "x" : 0.91 , "y" : 0.5 , "event" : "goal" , "minute" : "60" },
"updated_at" : "2026-06-18T02:56:50Z"
}