Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Race Status Workflow

Every Formula 1 stage progresses through a lifecycle, and the status attribute tells you where a stage currently sits. Use it to decide which feed to call and how often: a stage that is Not started needs only occasional schedule polling, a Running stage needs frequent live polling, and a Closed stage is final and can be cached aggressively.

The status attribute is present on the stage elements in the Stage Schedule and Stage Summary feeds. Drivers carry their own status inside each result object.



Where Status Appears

Every stage exposes type (what it is) and status (where it is in its lifecycle). The live example below is the 2026 Barcelona Grand Prix mid-weekend: the event is Running, its practices are Closed, and qualifying and the race are still Not started.

{
  "stage": {
    "id": "sr:stage:1287853",
    "description": "Barcelona Grand Prix 2026",
    "type": "event",
    "status": "Running",
    "scheduled": "2026-06-12T11:30:00+00:00",
    "scheduled_end": "2026-06-14T15:00:00+00:00",
    "venue": { "id": "sr:venue:1014", "name": "Circuit de Barcelona-Catalunya", "city": "Barcelona", "country": "Spain" },
    "stages": [
      { "id": "sr:stage:1287855", "description": "Practice 1", "type": "practice", "status": "Closed" },
      { "id": "sr:stage:1287857", "description": "Practice 2", "type": "practice", "status": "Closed" },
      { "id": "sr:stage:1287859", "description": "Practice 3", "type": "practice", "status": "Closed" },
      { "id": "sr:stage:1287861", "description": "Qualification", "type": "qualifying", "status": "Not started" },
      { "id": "sr:stage:1287867", "description": "Race", "type": "race", "status": "Not started", "laps": 66 }
    ]
  }
}

While a race is in progress it reports status: "Running", with laps_completed climbing toward laps and each driver carrying a live result. The snapshot below was captured live on lap 8 of 66 of the 2026 Barcelona Grand Prix, with George Russell leading from pole:

{
  "stage": {
    "id": "sr:stage:1287867",
    "description": "Race",
    "type": "race",
    "status": "Running",
    "laps": 66,
    "laps_completed": 8,
    "weather": "Sunny",
    "air_temperature": 31,
    "track_temperature": 51,
    "pit_open": true,
    "competitors": [
      {
        "id": "sr:competitor:391432",
        "name": "Russell, George",
        "team": { "id": "sr:competitor:41127", "name": "Mercedes AMG Motorsport" },
        "result": { "position": 1, "gap_to_leader": "-", "laps": 8, "status": "In race", "car_number": 63 }
      },
      {
        "id": "sr:competitor:7135",
        "name": "Hamilton, Lewis",
        "team": { "id": "sr:competitor:4510", "name": "Ferrari" },
        "result": { "position": 2, "gap_to_leader": "+3.184", "interval_to_position_ahead": "+3.184", "laps": 8, "status": "In race", "car_number": 44 }
      }
    ]
  }
}

When the chequered flag falls the race goes to Finished (provisional, with cars returning to parc fermé and laps_completed equal to laps); note that points are not finalized in this state. The snapshot below is the same 2026 Barcelona race at the flag, won by Lewis Hamilton:

{
  "stage": {
    "id": "sr:stage:1287867",
    "description": "Race",
    "type": "race",
    "status": "Finished",
    "substatus": "All laps completed",
    "laps": 66,
    "laps_completed": 66,
    "competitors": [
      {
        "id": "sr:competitor:7135",
        "name": "Hamilton, Lewis",
        "team": { "id": "sr:competitor:4510", "name": "Ferrari" },
        "result": { "position": 1, "time": "1:32:28.105", "gap_to_leader": "-", "laps": 66, "status": "Finished", "car_number": 44 }
      },
      {
        "id": "sr:competitor:391432",
        "name": "Russell, George",
        "team": { "id": "sr:competitor:41127", "name": "Mercedes AMG Motorsport" },
        "result": { "position": 2, "time": "+19.561", "gap_to_leader": "+19.561", "laps": 66, "status": "Finished", "car_number": 63 }
      }
    ]
  }
}

It then settles to Completed and finally Closed, the validated terminal state, which carries the same kind of substatus describing how it ended:

{
  "stage": {
    "id": "sr:stage:1189139",
    "description": "Race",
    "type": "race",
    "status": "Closed",
    "substatus": "All laps completed",
    "laps": 57,
    "laps_completed": 57
  }
}


Coverage

The Formula 1 API provides real-time updates on a lap-by-lap basis. Race sessions update live; beginning with the 2025 season, qualifying and practice sessions also update live, lap by lap.

Coverage is a single tier: every session of every event is covered live, so a session's status is the only field you need to decide how to handle it.



Event-Weekend Workflow

A typical event weekend updates in this order. Details can change on an event-by-event basis. Each session shows when standings (if any) are updated.

Normal Weekend at a GlancePractice, qualifying, then the race
Thursday
Setup
Drivers and teams confirmed
Friday
Practice 1 and 2
Live, lap by lap
Saturday
Practice 3 + Qualifying
Starting grid updates when qualifying closes
Sunday
Race
Points and season standings update
Session times vary event by event; watch each session's status rather than the clock.
Sprint Weekend at a GlanceThe sprint adds points on Saturday
Thursday
Setup
Drivers and teams confirmed
Friday
Practice 1 + Sprint Qualifying
Sprint grid set when it closes
Saturday
Sprint + Qualifying
Sprint points added; race grid set
Sunday
Race
Points and season standings update
The sprint awards points of its own, so standings can move on Saturday as well as Sunday.


Race Lifecycle

A race moves through its terminal states on a predictable timeline after the chequered flag:

Stage Status LifecycleOnly Closed and Cancelled are terminal
Main pathNot startedRunningFinishedCompletedClosed
Live control statesRunningWarmupIn gridGrid must be clearedSafety carYellow flagWhite flagRed flagRed and yellow flag
Cancellationany unstarted stageCancelled
Solid pills are terminal. The control states appear in the status field in place of Running while a session is live, so test for the whole live set rather than Running alone.
  • Finished: cars are returning to parc fermé; results are provisional.
  • Completed: the race is being finalized. A race typically moves from Finished to Completed within 60 minutes.
  • Closed: results are validated and final. A race typically moves from Completed to Closed within the following 30 minutes.

Only Closed and Cancelled are terminal. Treat Closed data as final; before that, expect values to change.

This Finished to Completed to Closed progression also applies to the other timed sessions. In the captured 2026 Barcelona Grand Prix, qualifying moved through Finished, then Completed, then Closed in turn.


ℹ️

Provisional vs Official Results

The API publishes the official classification, which can differ from the unofficial order seen at the flag. A post-race time penalty, for example, can move a driver down the order and change the points after the cars finish. That is why Finished is provisional (points are not yet populated) and only Closed is validated and final. Wait for Closed before treating a result as authoritative.


ℹ️

Recording the Actual Session End

A stage's scheduled_end is the scheduled (broadcast) window end. To record the moment a session actually ended, capture a timestamp on your side when its status first becomes Finished.


🏁

Use Status to Drive Polling

Poll a stage frequently only while it is live (Running or one of the live control states). Once it reaches Closed, stop high-frequency polling and cache the result. See Update Frequencies for recommended cadences.



Stage Status Definitions

These are the valid status values you can expect on a stage.

  • Not started – The stage is scheduled to begin.
  • Running – The stage is currently in progress.
  • Finished – The stage is over and cars are returning to parc fermé.
  • Completed – The stage is over and is being finalized.
  • Closed – The stage has been finalized.
  • Cancelled – The stage has been cancelled and will not be played.

While a session is live, the status field can show one of the following control states in place of Running (the field holds a single value, so a session under a safety car reads status: "Safety car", not Running):

  • Warmup – The stage is about to begin, as cars are going through their warmup lap.
  • In grid – The stage will begin soon, as cars have moved into grid formation.
  • Grid must be cleared – The stage needs personnel to leave the track.
  • Safety car – The safety car is on the track and the cars will align behind it.
  • Yellow flag – A hazard is on the track.
  • White flag – A slower vehicle is on the track.
  • Red flag – The session is currently red-flagged.
  • Red and yellow flag – Track conditions are deteriorating due to oil or water on the surface.

⚠️

Detecting a Live Session: Check the Set, Not Just Running

Because status holds a single value, the control states above appear in place of Running while a session is live. To decide whether a session is live, test for membership in the active set (Running, Warmup, In grid, Grid must be cleared, Safety car, Yellow flag, White flag, Red flag, Red and yellow flag) rather than status == "Running" alone. Gating on Running by itself treats flag and safety-car periods as not live, so you would stop polling mid-session.


Live Flag State

The flag and session-control values above appear as the stage status in place of Running while a session is live. The snapshot below was captured live during 2026 Barcelona Grand Prix qualifying: the session is under a Yellow flag while Q1 is running and Q2/Q3 have not started, and it keeps returning the live classification (here Lewis Hamilton provisionally fastest) under the flag.

{
  "stage": {
    "id": "sr:stage:1287861",
    "description": "Qualification",
    "type": "qualifying",
    "status": "Yellow flag",
    "stages": [
      { "description": "Q1", "type": "qualifying_part", "status": "Running" },
      { "description": "Q2", "type": "qualifying_part", "status": "Not started" },
      { "description": "Q3", "type": "qualifying_part", "status": "Not started" }
    ],
    "competitors": [
      {
        "id": "sr:competitor:7135",
        "name": "Hamilton, Lewis",
        "result": { "position": 1, "fastest_lap_time": "1:15.625", "laps": 3, "status": "In race", "car_number": 44 }
      }
    ]
  }
}

A more severe stoppage shows as Red flag. This snapshot, captured later in the same qualifying session, shows the red flag during Q3 (with Q1 and Q2 already Finished), after a driver went off; the halted driver carries the Out driver status (see the Driver Status and Substatus section below).

{
  "stage": {
    "id": "sr:stage:1287861",
    "description": "Qualification",
    "type": "qualifying",
    "status": "Red flag",
    "stages": [
      { "description": "Q1", "type": "qualifying_part", "status": "Finished" },
      { "description": "Q2", "type": "qualifying_part", "status": "Finished" },
      { "description": "Q3", "type": "qualifying_part", "status": "Running" }
    ],
    "competitors": [
      {
        "id": "sr:competitor:953189",
        "name": "Piastri, Oscar",
        "result": { "position": 1, "fastest_lap_time": "1:15.176", "laps": 12, "status": "In race", "car_number": 81 }
      }
    ]
  }
}

Note how the nested qualifying_part stages advance independently (Q1 and Q2 Finished while Q3 is Running). When the session resumes, the parent status returns to Running; a qualifying session ends Finished, then Completed, then Closed. Track all of these from the same Stage Summary call.

The same control states appear during a race. The snapshot below was captured live on lap 40 of the 2026 Barcelona Grand Prix, moments after a Yellow flag with substatus: "Entire track": the Safety car is on track and the field is about to bunch up behind the leader.

{
  "stage": {
    "id": "sr:stage:1287867",
    "description": "Race",
    "type": "race",
    "status": "Safety car",
    "laps": 66,
    "laps_completed": 40,
    "pit_open": true,
    "competitors": [
      {
        "id": "sr:competitor:7135",
        "name": "Hamilton, Lewis",
        "team": { "id": "sr:competitor:4510", "name": "Ferrari" },
        "result": { "position": 1, "gap_to_leader": "-", "laps": 40, "status": "In race", "car_number": 44 }
      },
      {
        "id": "sr:competitor:391432",
        "name": "Russell, George",
        "team": { "id": "sr:competitor:41127", "name": "Mercedes AMG Motorsport" },
        "result": { "position": 2, "gap_to_leader": "+16.199", "laps": 39, "status": "In race", "car_number": 63 }
      }
    ]
  }
}

Watch the stage status for these control states to drive UI such as a safety-car banner or a flag overlay; they can appear and clear several times during a race.



Stage Substatus Definitions

When present, substatus adds detail to the stage's state:

  • All laps completed – The stage was completed with all expected laps.
  • 75% rule – The stage was shortened but was complete enough to award full points.
  • 2 hour rule – The stage was shortened and must be completed in under two hours.
  • Last lap – The event is in the final lap.
  • Accident – An accident has occurred on the track.
  • Bad track conditions – Officials have deemed the track in poor condition, which can lower speeds.
  • Sector – There is a possible issue (for example a yellow flag) in a specific sector.
  • Entire track – The entire track has been shown the appropriate flag.
  • Preliminary results – The results are in but are yet to be validated.
  • Confirmed results – The results have been validated.
  • Abandoned – The event is no longer scheduled to occur.
  • Unknown – The state is undefined.


Driver Status and Substatus

Inside each competitor's result, drivers carry their own status (and sometimes substatus). During a live race a driver's status reflects whether they are running, in the pits, or out. The lap example below shows the leaders In race:

{
  "stage": {
    "id": "sr:stage:1189269",
    "description": "Lap 29",
    "type": "lap",
    "competitors": [
      {
        "id": "sr:competitor:495898",
        "name": "Norris, Lando",
        "result": { "position": 1, "interval_to_position_ahead": "-", "status": "In race", "substatus": "Unknown" }
      },
      {
        "id": "sr:competitor:953189",
        "name": "Piastri, Oscar",
        "result": { "position": 2, "gap_to_leader": "+0.772", "interval_to_position_ahead": "+0.772", "status": "In race", "substatus": "Unknown" }
      }
    ]
  }
}

Driver Status:

  • In race – The driver is currently active in the race.
  • Pit stop – The driver is currently in a pit stop.
  • Out – The driver is out of the race.
  • Did not start – The driver did not start the race.
  • Disqualified – The driver has been disqualified.
  • Finished – The driver has completed the race.

Driver Substatus:

  • Retired – The driver has retired from the race.
  • Unknown – The status of the driver is unknown.


Cancelled Stages

A Cancelled stage will not be run. Cancellation can apply at the event level (the whole Grand Prix) or to an individual session. A cancelled stage retains its ID and remains in the schedule with status set to Cancelled; it does not transition to any other state.



Next Steps



Did this page help you?