Game Status Workflow
Every feed that returns a game carries its state in the same place, and every integration decision (when to poll, when to settle results, when to stop) hangs off that state. This page is the status reference for the Global Baseball API: where status lives, what the values mean, the paths a game can follow, and a game walked through its full lifecycle.
Where Status Lives
The sport_event_status object travels with the game in every feed: schedules, summaries, the live feeds, timelines, lineups, and the probability feeds. Two fields carry the state:
status: the lifecycle stage (not_started,live,closed, ...)match_status: the refinement; during play it names the inning, and it marks interruptions and the post-game settling state
Read status for lifecycle decisions and match_status for display.
Game Statuses
The full status set, as documented in the Global Baseball FAQs:
| Status | Meaning |
|---|---|
not_started | Scheduled; also what the live feeds show moments before first pitch |
match_about_to_start | The game is about to begin |
started | The game has started |
live | In progress; match_status names the inning |
delayed | Temporarily delayed and will be continued |
suspended | Began, but has been suspended to a later time |
interrupted | Began, but coverage has stopped for a short time; the last recorded score is displayed until it resumes |
ended | The game is over |
closed | Final and confirmed; statistics are complete |
postponed | Pushed to a later date |
cancelled | Will not be played |
abandoned | The game has been abandoned |
match_status draws from its own documented set: the inning values (1st_inning through 9th_inning), overtime for extra innings, pause, not_started, started, start_delayed, interrupted, ended, aet for a game that finished in extra innings, postponed, cancelled, and abandoned; the full list is in the Global Baseball FAQs.
Treat closed as the terminal signal: completed games report closed with match_status: ended, and statistics settle in the minutes after the final out.
Game Workflows
Four paths cover what a game reports from first pitch to its final state. status pills are solid; match_status refinements are dashed.
How a Game Progresses
One game, followed through its day: an NPB meeting between the Chunichi Dragons and the Yokohama DeNA BayStars. Early on, the visitors lead 1-0 in the second inning; match_status names the inning and period_scores holds two entries:
{
"sport_event": {
"id": "sr:sport_event:66776892",
"start_time": "2026-07-25T05:00:00+00:00",
"competitors": [
{
"id": "sr:competitor:67104",
"name": "Chunichi Dragons",
"country": "Japan",
"country_code": "JPN",
"abbreviation": "CHU",
"qualifier": "home",
"gender": "male"
},
{
"id": "sr:competitor:67110",
"name": "Yokohama Dena Baystars",
"country": "Japan",
"country_code": "JPN",
"abbreviation": "YOK",
"qualifier": "away",
"gender": "male"
}
]
},
"sport_event_status": {
"status": "live",
"match_status": "2nd_inning",
"home_score": 0,
"away_score": 1,
"period_scores": [
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 1
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 2
}
]
}
}Between innings, with the BayStars up 3-0 through five, match_status reads pause: the break while the teams change over, the same value the global APIs use for any break in play. The game stays live. A stoppage with an external cause reports interrupted (or delayed in status) instead, and can carry a resume_time timestamp:
{
"sport_event_status": {
"status": "live",
"match_status": "pause",
"home_score": 0,
"away_score": 3,
"period_scores": [
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 1
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 2
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 3
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 4
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 5
}
]
}
}By the ninth the score has stretched to 5-0, and period_scores now carries all nine entries:
{
"sport_event_status": {
"status": "live",
"match_status": "9th_inning",
"home_score": 0,
"away_score": 5,
"period_scores": [
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 1
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 2
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 3
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 4
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 5
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 6
},
{
"home_score": 0,
"away_score": 2,
"type": "regular_period",
"number": 7
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 8
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 9
}
]
}
}After the final out the game settles to closed with match_status: ended, winner_id set, and completed statistics behind it:
{
"sport_event_status": {
"status": "closed",
"match_status": "ended",
"home_score": 0,
"away_score": 5,
"winner_id": "sr:competitor:67110",
"period_scores": [
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 1
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 2
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 3
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 4
},
{
"home_score": 0,
"away_score": 1,
"type": "regular_period",
"number": 5
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 6
},
{
"home_score": 0,
"away_score": 2,
"type": "regular_period",
"number": 7
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 8
},
{
"home_score": 0,
"away_score": 0,
"type": "regular_period",
"number": 9
}
]
}
}Extra innings report match_status: overtime while play continues, and a game that finishes in extra innings closes with match_status: aet; period_scores keeps counting past nine and the header gains home_normaltime_score and away_normaltime_score; see Fundamentals. NPB games can also end level, reporting closed with no winner_id; handle that as a valid outcome.
Statuses Drive the Live Window
Live Summaries membership follows status: games enter the live feeds 10 minutes before their scheduled start (so a game can appear with status: not_started), carry live through play (including a pause), and are removed 10 minutes after the game ends (so a just-finished game can remain listed briefly). Keep polling through a pause; the game is still in progress. See Tracking Live Games.
Status-Driven Polling
- Poll a game at live cadence from shortly before
start_timeuntil it leaveslive; cadences are on Update Frequencies - On
closed, schedule one final Sport Event Summary pull a few minutes later to catch settling statistics - After a
postponedstatus, watch Sport Events Updated for the newstart_timerather than re-pulling schedules cancelledis terminal; remove the game from active displays
Updated about 6 hours ago
