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.
Race Lifecycle
A race moves through its terminal states on a predictable timeline after the chequered flag:
Finished: cars are returning to parc fermé; results are provisional.Completed: the race is being finalized. A race typically moves fromFinishedtoCompletedwithin 60 minutes.Closed: results are validated and final. A race typically moves fromCompletedtoClosedwithin 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 ResultsThe 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
Finishedis provisional (points are not yet populated) and onlyClosedis validated and final. Wait forClosedbefore treating a result as authoritative.
Recording the Actual Session EndA stage's
scheduled_endis the scheduled (broadcast) window end. To record the moment a session actually ended, capture a timestamp on your side when itsstatusfirst becomesFinished.
Use Status to Drive PollingPoll a stage frequently only while it is live (
Runningor one of the live control states). Once it reachesClosed, 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 JustRunningBecause
statusholds a single value, the control states above appear in place ofRunningwhile 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 thanstatus == "Running"alone. Gating onRunningby 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
- See live status in action in Tracking Live Races.
- See how cancellations and removals are reported in Monitoring Data Changes.
- For the full enum reference, see the Stage & Driver Statuses FAQ.
Updated 8 days ago
