Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Game Status Workflow

Every NFL game travels through a lifecycle of statuses, and the game status field is the signal that tells your integration which feed to read and how often. Status appears in every schedule feed and every game feed, so you can branch on it wherever you already are.

A game's initial status and schedule information come from the Season Schedule, Current Season Schedule, or Current Week Schedule feeds. The Season Schedule below is shortened to one Week 1 game, showing where status rides on each game entry:

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" charset="UTF-8" href="/xslt/football/schedule-v7.0.xsl"?>
<!-- Generation started @ 2026-09-01 09:13:49 +0000 -->
<season xmlns="http://feed.elasticstats.com/schema/football/schedule-v7.0.xsd" id="c0655d00-17f9-11f1-92c4-398db1c54270" year="2026" type="REG" name="REG">
  <week id="869b9d8d-8fcf-47b4-b567-f69d0baa1615" sequence="1" title="1">
    <game id="2bf1ca8d-11d6-4c00-b2e4-28971764e444" status="scheduled" scheduled="2026-09-10T00:20:00+00:00" entry_mode="LDE" sr_id="sr:match:71515752" game_type="regular" conference_game="false">
      <!-- ... omitted for brevity -->
    </game>
    <!-- ... omitted for brevity -->
  </week>
  <!-- ... omitted for brevity -->
</season>
<!-- Generation ended @ 2026-09-01 09:13:49 +0000 -->
{
    "id": "c0655d00-17f9-11f1-92c4-398db1c54270",
    "year": 2026,
    "type": "REG",
    "name": "REG",
    "weeks": [
        {
            "id": "869b9d8d-8fcf-47b4-b567-f69d0baa1615",
            "sequence": 1,
            "title": "1",
            "games": [
                {
                    "id": "2bf1ca8d-11d6-4c00-b2e4-28971764e444",
                    "status": "scheduled",
                    "scheduled": "2026-09-10T00:20:00+00:00",
                    "entry_mode": "LDE",
                    "sr_id": "sr:match:71515752",
                    "game_type": "regular",
                    "conference_game": false
                }
            ]
        }
    ]
}


Coverage

Every NFL game is covered at the highest level, full coverage, so the type of game never needs to factor into your data retrieval logic. Coverage tiers never factor into the workflow on this page; NFL Fundamentals covers the coverage model.



Game Status Definitions

Below are the valid game statuses you can expect to see in the NFL API. Reference these definitions for precise detail on what each game state signifies.

  • scheduled – The game is scheduled to occur.
  • created – Game data (rosters, officials, etc) are being pre-loaded in preparation for the game.
  • inprogress – The game is in progress.
  • halftime – The game is currently at halftime.
  • complete – The game is over, but stat validation is not complete.
  • closed – The game is over and the stats have been validated.
  • cancelled – The game has been cancelled. No makeup game will be played as a result.
  • postponed – The game has been postponed, to be made up at another day and time. Once the makeup game is announced, a new game and ID will be created and scheduled on the announced makeup date. You should request the Schedule feed(s) regularly to identify the re-scheduled makeup game(s).
  • delayed – The scheduled game, or a game that was in progress, is now delayed for some reason.
  • suspended – The game has been suspended and will be rescheduled in the future, continuing where they left off. The game ID will remain the same.
  • flex-schedule – The game is currently scheduled to occur on a specific date and time, however, it will more than likely be moved to a different time for broadcast purposes.
  • time-tbd – The game has been scheduled, but a time has yet to be announced.


How a Game Progresses

The cards below follow a game along each path it can take, with context around every status change. Most games run the standard path from scheduled to closed; the remaining cards cover the placeholder, reschedule, interruption, and cancellation paths that branch from it.


1. The standard path: scheduled to closed

A typical NFL game moves from scheduled through created, inprogress, halftime, and complete before settling at closed.

Standard Game Flowscheduled to closed, with what each move signals
1. PregamescheduledThe game is scheduled to occur, with a determined date and time. Status appears in every schedule and game feed.
2. PreloadcreatedRosters, officials, and game data pre-load, and the Game Roster feed populates. Games move to created on the final injury report release (for example, Sunday for a Monday game). Weather info populates after a game moves to created.
3. KickoffinprogressSet once the coin toss completes, typically just before kickoff. Poll the game feeds for realtime updates; game feeds can reach inprogress before the schedule feeds, whose status updates on a timer.
4. BreakhalftimeThe game is at halftime.
5. Second halfinprogressPlay resumes at the beginning of the second half.
6. Final scorecompleteThe game is over and the score is correct; remaining statistics enter post-game verification, often awaiting finalization from the league. This typically takes about one hour.
7. ValidatedclosedAll stats are validated. Post-game verification covers player and team statistics, player participation, game attendance and duration, and referees. Adjustments can still land after closed; follow the Daily Change Log. Subjective statistics are typically available by 7:00pm ET on the following Tuesday.
Scores populate in the schedule feeds at complete; closed marks stats as validated.

2. Placeholder times: time-tbd and flex-schedule

A time-tbd or flex-schedule game carries a placeholder status until its date and time are fixed. Once the game reaches scheduled it follows the standard path in step 1.

Flex Schedule and Time TBDplaceholder statuses that resolve to scheduled
No time yettime-tbdThe game has been scheduled, but a time has yet to be announced. Most often used for preseason and postseason games.
Time may moveflex-scheduleThe game is scheduled for a specific date and time but will likely move for broadcast purposes, under the league-wide flex scheduling policy in the closing weeks of the season.
ResolvedscheduledA determined date and time are announced, and the status appears in every schedule and game feed.
Once the game reaches scheduled, it follows the Standard Game flow.

3. Reschedules: postponed

A postponed game keeps its original entry, and the makeup game arrives as a new game with a new ID. Once the new game is created in scheduled status, it follows the standard path in step 1.

Postponed Gamethe makeup arrives as a new game ID
1. On the booksscheduledThe game is scheduled to occur, with a determined date and time.
2. PushedpostponedThe game will be made up at another day and time. Once the makeup game is announced, a new game and ID are created and scheduled on the announced makeup date; request the schedule feeds regularly to identify makeup games.
3. RescheduledscheduledA new game, with a new game ID, is created in scheduled status when a determined date and time are announced. The postponed and rescheduled game IDs are not linked within the API.
The original entry keeps the postponed status; the makeup game follows the Standard Game flow under its new ID.

4. Interruptions: suspended

A game in progress can be suspended and resumed later under the same game ID. Once a suspended game moves back to inprogress it follows the standard path in step 1.

Suspended Gamean in-progress interruption that resumes under the same game ID
1. LiveinprogressSet once the coin toss completes, typically just before kickoff. Poll the game feeds for realtime updates; game feeds can reach inprogress before the schedule feeds, whose status updates on a timer.
2. BreakhalftimeThe game is at halftime.
3. Second halfinprogressPlay resumes at the beginning of the second half.
InterruptionsuspendedWhile a game is in progress it can move to suspended: the game will be rescheduled and resume in the future, continuing where it left off. The game ID remains the same.
4. Final scorecompleteThe game is over and the score is correct; remaining statistics enter post-game verification, often awaiting finalization from the league. This typically takes about one hour.
Once a suspended game moves back to inprogress, it follows the Standard Game flow.

5. Called off: cancelled

A cancelled game remains in cancelled status, and no makeup game is played. Game 7c0c0abf-f566-4a1f-a482-b74a991e1663 is an example.

Cancelled Gamea terminal status with no makeup game
1. On the booksscheduledThe game is scheduled to occur, with a determined date and time.
2. Called offcancelledThe game has been cancelled, and no makeup game will be played.
Cancelled is terminal: the game remains in cancelled status.


Game State Samples

Click the links below for sample data of Game feeds by game state.

🏈

Simulations

Use our Simulations to view each of these game states and test your integration.



Where Status Drives Behavior

  • Scores in schedules: scores populate in the schedule feeds when a game reaches complete; before that, read live scores from the game feeds. closed marks the stats as validated.
  • Stat validation: at complete the score is correct while the remaining statistics enter post-game verification, often awaiting finalization from the league, which typically takes about one hour. closed means all stats are validated: player and team statistics, player participation, game attendance and duration, and referees. Adjustments can still land after closed, so follow Monitoring Data Changes; subjective statistics are typically available by 7:00pm ET on the following Tuesday.
  • Player game statuses: rosters, officials, and game data pre-load at created, when the Game Roster populates. Games move to created on the final injury report release (for example, Sunday for a Monday game); inactive players are entered 90 minutes before each game, and player participation lands one hour after the game completes.
  • Reschedules: postponed produces a makeup game under a new ID, and the postponed and rescheduled game IDs are not linked within the API, so request the schedule feeds regularly to identify makeup games; suspended resumes under the same ID; cancelled is terminal with no makeup game.
  • Kickoff timing: time-tbd and flex-schedule games firm up into scheduled once a date and time are announced; keep re-pulling schedules to catch the change. inprogress is set once the coin toss completes, typically just before kickoff, and the game feeds can reach inprogress before the schedule feeds, whose status updates on a timer, so poll the game feeds for realtime updates.


Weekly Data Entry

This section provides important NFL data update timings for schedules, statistics, rankings, depth charts, and more.

See below for a daily breakdown of data updates for the NFL API.

Sunday

  • Pregame transactions (Before Kickoff)
  • Inactive players entered (90 minutes prior to each game)
  • Player participation (1 hour after completion of the game)
  • Games stats validated and moved to closed status (1 hour after completion of the game)
  • Depth charts for Monday night game (1am ET)
  • Update rankings (1am ET)
  • Seasonal stats validation (all day)
  • Transactions (All Day)*

Monday

  • Inactive players entered (90 minutes prior to each game)
  • Player participation (1 hour after completion of the game)
  • Games stats validated and moved to closed status (1 hour after completion of the game)
  • Injury updates for Thursday night game (11pm ET)
  • Update rankings (1am ET)
  • TV broadcast info updated for upcoming games (End of Day)
  • Seasonal stats validation (all day)
  • Transactions (All Day)*

Tuesday

  • Injury updates for Thursday night game (11pm ET)
  • Seasonal stats validation (all day)
  • Transactions (All Day)*

Wednesday

  • Injury report for Thursday night game (9pm ET)
  • Thursday night game moved to created status (9pm ET)
  • Injury updates for Sunday games (11pm ET)
  • Weekly stats changes (Evening)
  • Depth charts for Thursday night game (1am ET)
  • Seasonal stats validation (all day)
  • Transactions (All Day)*

Thursday

  • Inactive players entered (90 minutes prior to each game)
  • Player participation (1 hour after completion of the game)
  • Games stats validated and moved to closed status (1 hour after completion of the game)
  • Injury updates for Sunday and Monday games (11pm ET)
  • Update rankings (1am ET)
  • Seasonal stat validation (All Day)
  • Transactions (All Day)*

Friday

  • Injury report for Sunday games (9pm ET)
  • Sunday games moved to created status (9pm ET)
  • Injury updates for Monday night game (11pm ET)
  • Depth charts for Sunday games (1am ET)
  • Seasonal stat validation (All Day)
  • Transactions (All Day)*

Saturday

  • Injury report for Monday night game (9pm ET)
  • Monday night game moved to created status (9pm ET)
  • Seasonal stats validation (all day)
  • Transactions (All Day)*

* We monitor and update transactions throughout the day, using a combination of official and reliable sources.

Off Season

  • Major trades and free agent signings are handled when deemed official by the league
  • After the draft weekend, all team rosters will be updated by the end of the week

Important Dates

  • The NFL schedule typically becomes available in May. It will be present in the API within two hours after it is announced.


Best Practices

  • Branch on status, not on the presence of scores: a scheduled entry with no scores is normal, and scores arriving in the schedule feeds is a side effect of complete
  • Only closed and cancelled are terminal; every other status can still change, and a game can step back from complete to inprogress while its post-game review is under way. Statistics can still adjust after closed, so keep Monitoring Data Changes in the loop
  • During a game window, drive polling from the Tracking Live Games workflow, and wind down once the game is closed
  • Request the schedule feeds regularly: makeup games arrive under new IDs, and time-tbd and flex-schedule games resolve to scheduled once their times are fixed
  • Exercise every branch of your status logic against the Game State Samples and Simulations above before the season starts
  • Per-status polling cadences come from Update Frequencies

What’s Next

For a practical application of game lifecycle knowledge, explore the live game updates integration scenarios.

Did this page help you?