Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

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:

StatusMeaning
not_startedScheduled; also what the live feeds show moments before first pitch
match_about_to_startThe game is about to begin
startedThe game has started
liveIn progress; match_status names the inning
delayedTemporarily delayed and will be continued
suspendedBegan, but has been suspended to a later time
interruptedBegan, but coverage has stopped for a short time; the last recorded score is displayed until it resumes
endedThe game is over
closedFinal and confirmed; statistics are complete
postponedPushed to a later date
cancelledWill not be played
abandonedThe 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.

Standard Game Flowthe path every completed game follows
Before playnot_startedThe game enters the live feeds ten minutes before its scheduled start, still as not_started.
In playlive1st_inning .. 9th_inningstatus reads live; match_status names the inning and moves on at each change of innings.
Final outended→closedended arrives at the final out; closed follows once the result is confirmed, with match_status ended on both.
closed is the terminal state for results processing. Statistics settle in the minutes after the final out, so pull the summary once more a few minutes after closed.
Pause Between Inningsa break in play, not a stoppage
BreaklivepauseThe teams change over. status stays live, and no inning is in progress.
Resumptionlive2nd_inningPlay resumes with the next inning's match_status; nothing else on the game changes.
A pause lasts a few minutes. A stoppage with an external cause reports delayed or interrupted instead; see Stoppages and Exceptions below.
Extra Inningsa game tied after nine innings
Extra inningsliveovertimematch_status reads overtime while play continues; period_scores keeps counting past nine, each extra inning typed overtime.
Finalendedaet→closedaetaet takes the place of ended as the match_status on both ended and closed.
KT Wiz v Lotte Giants, 2026-10-04, finished 2-2 in extra innings and closed with aet: NPB and KBO regular-season games can end level, so handle a closed game with no winner_id as a valid outcome.
Stoppages and Exceptionsthe documented values beyond the standard path
Delayeddelayed→liveTemporarily delayed and continued later; a delayed or interrupted game can carry a resume_time timestamp.
Interruptedinterrupted→liveCoverage has stopped for a short time; the last recorded score stands until it resumes.
Suspendedsuspended→liveThe game began and is suspended to a later time.
TerminalpostponedcancelledabandonedA postponed game moves to a future date; cancelled and abandoned games are not completed.
Definitions follow the Global Baseball FAQs. Treat closed, cancelled, and abandoned as the end of a game's lifecycle; a stoppage that resumes continues on the Standard Game Flow.


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_time until it leaves live; cadences are on Update Frequencies
  • On closed, schedule one final Sport Event Summary pull a few minutes later to catch settling statistics
  • After a postponed status, watch Sport Events Updated for the new start_time rather than re-pulling schedules
  • cancelled is terminal; remove the game from active displays

Did this page help you?