Tournament Status Workflow
This page is the canonical reference for tournament, round, and player status in the Golf API. It defines every status value the feeds return, shows where each value appears, and walks through how a tournament moves from its first calendar entry to a finalized result, including the cut and playoffs.
Other guides link here instead of redefining statuses locally. If you are building a state machine, a live leaderboard, or notification logic, start here.
Status is reported at three levels, in three different feeds:
- Tournament status (
statuson the tournament): the overall lifecycle of an event. Appears in Tournament Schedule, Tournament Summary, and Tournament Leaderboard. - Round status (
statuson each round): whether a given round is upcoming, live, or final. Appears in Tournament Summary and Scorecards Per Round. - Player status (
statuson a leaderboard or scorecard player): exceptions to normal play, such as a missed cut or a withdrawal. Appears in Tournament Leaderboard and Scorecards Per Round.
The status attribute below is from the 2024 Masters Tournament Summary. The same field is present in both json and xml:
<?xml version="1.0" ?>
<tournament xmlns="http://feed.elasticstats.com/schema/golf/tournament-v3.0.xsd" id="459e9ffb-1eb4-422c-9f13-1ba8344c35aa" name="Masters Tournament" event_type="stroke" purse="20000000.0" winning_share="3160000.0" currency="USD" points="750" start_date="2024-04-11" end_date="2024-04-14" course_timezone="America/New_York" status="closed" cutline="6" projected_cutline="6" cut_round="2" parent_id="5c8d8f92-8da7-4d5d-860b-e820d57ff640" coverage="full">
<rounds>
<round id="0e387540-a829-4258-b082-53ff9d3b351d" number="1" status="closed"/>
<round id="ce89aacc-b9bf-4c01-996f-e2e7bc3df281" number="2" status="closed"/>
<round id="251948a1-ba77-4922-b786-7e8766150634" number="3" status="closed"/>
<round id="872fafc1-ddce-4556-bae2-c11a95ee89a2" number="4" status="closed"/>
</rounds>
</tournament>{
"id": "459e9ffb-1eb4-422c-9f13-1ba8344c35aa",
"name": "Masters Tournament",
"event_type": "stroke",
"start_date": "2024-04-11",
"end_date": "2024-04-14",
"course_timezone": "America/New_York",
"status": "closed",
"cutline": 6,
"projected_cutline": 6,
"cut_round": 2,
"parent_id": "5c8d8f92-8da7-4d5d-860b-e820d57ff640",
"coverage": "full"
}Requests
Status fields require no special parameters; they are included in the standard feeds, using the authentication and URL structure covered in API Basics. The examples on this page read the 2024 Masters Tournament Summary:
GET https://api.sportradar.com/golf/trial/pga/v3/en/2024/tournaments/459e9ffb-1eb4-422c-9f13-1ba8344c35aa/summary.json
x-api-key: YOUR_API_KEYHow a Tournament Progresses
tournament.status advances in a predictable order. Watch it, together with each round's status, to know which feeds to call and how often. Only closed and cancelled are terminal.
The snapshots below follow the 2026 U.S. Open through that lifecycle (Tournament Summary, trimmed to the fields that change). Notice the cut context filling in as play reaches it: cut_round appears once a round is live, and cutline is set once the cut round closes.
1. created. The event record exists with its rounds defined and all scheduled; the cut is not yet set.
{
"name": "U.S. Open",
"status": "created",
"cut_round": null,
"rounds": [
{ "number": 1, "status": "scheduled" },
{ "number": 2, "status": "scheduled" },
{ "number": 3, "status": "scheduled" },
{ "number": 4, "status": "scheduled" }
]
}2. inprogress. Round 1 is live while later rounds stay scheduled. cut_round is now present, and projected_cutline tracks the live cut until the cut round closes.
{
"status": "inprogress",
"cut_round": 2,
"projected_cutline": null,
"rounds": [
{ "number": 1, "status": "inprogress" },
{ "number": 2, "status": "scheduled" },
{ "number": 3, "status": "scheduled" },
{ "number": 4, "status": "scheduled" }
]
}3. complete. Every round is closed and the winner is decided, but results are still under review. cutline is now finalized.
{
"status": "complete",
"cut_round": 2,
"cutline": 4,
"rounds": [
{ "number": 1, "status": "closed" },
{ "number": 2, "status": "closed" },
{ "number": 3, "status": "closed" },
{ "number": 4, "status": "closed" }
]
}4. closed. Results are validated and the tournament is final.
{
"status": "closed",
"cut_round": 2,
"cutline": 4,
"rounds": [
{ "number": 1, "status": "closed" },
{ "number": 2, "status": "closed" },
{ "number": 3, "status": "closed" },
{ "number": 4, "status": "closed" }
]
}Tournament Status
tournament.status describes the event as a whole. The values below are the complete set the Golf API returns.
| Status | Meaning | Terminal |
|---|---|---|
scheduled | The event is on the season calendar. Rounds and field are not yet finalized (typically further-out events). | No |
created | The event record is built for an upcoming tournament: rounds are defined and the field is populating. Seen on near-term events in an in-progress season. | No |
inprogress | The tournament is underway; a round is live. | No |
playoff | Regulation play ended in a tie for the lead and a playoff is underway. See the Playoffs workflow below. | No |
complete | The winner is decided but results are still pending final validation. | No |
closed | Results are validated and the tournament is finalized. | Yes |
cancelled | The event was called off and will not be played; it carries no winner. | Yes |
Treat Unknown Statuses as Non-TerminalOnly
closedandcancelledare terminal. Any other value means the tournament is still active: keep polling until you observeclosedorcancelled. A delay shows up as asuspendedround status while the tournament staysinprogress, so do not treat a stoppage as an ending. Drive "is this event over?" logic off the terminal states, never off the absence ofinprogress.
In an in-progress season, a single Tournament Schedule response shows several of these values at once. The excerpt below is the PGA Tour 2026 schedule (trimmed to status-relevant fields), captured between events: a cancelled edition of The Sentry, a completed event, a near-term created event, and a further-out scheduled event.
{
"tour": {
"id": "b52068af-28e4-4e91-bdbb-037591b0ff84",
"alias": "pga",
"name": "PGA Tour"
},
"season": {
"id": "e4694c64-017f-432f-b80e-28bcec314ca6",
"year": 2026
},
"tournaments": [
{
"id": "c0178c70-b536-4495-bca9-6ac671d0e70f",
"name": "The Sentry",
"event_type": "stroke",
"start_date": "2026-01-08",
"end_date": "2026-01-11",
"total_rounds": 4,
"status": "cancelled"
},
{
"id": "0c834e1f-0aa1-4ae6-a8bf-c1c72a43f121",
"name": "Sony Open in Hawaii",
"event_type": "stroke",
"start_date": "2026-01-15",
"end_date": "2026-01-18",
"total_rounds": 4,
"status": "closed"
},
{
"id": "f4fedb64-56d5-43fe-a784-69593a8be9cf",
"name": "RBC Canadian Open",
"event_type": "stroke",
"start_date": "2026-06-11",
"end_date": "2026-06-14",
"total_rounds": 4,
"status": "created"
},
{
"id": "967f58d1-718a-4801-a2f5-f8ab0ca24f28",
"name": "Travelers Championship",
"event_type": "stroke",
"start_date": "2026-06-25",
"end_date": "2026-06-28",
"status": "scheduled"
}
]
}Note that the scheduled event omits total_rounds, while the created event already carries it: the record is built out as an event approaches. Always read the literal status value rather than inferring state from which fields are populated.
Round Status
A standard tournament is four rounds of 18 holes (event_type of stroke). Each round in Tournament Summary carries its own status, which is the most useful signal for live polling, because it tells you exactly which round is in play.
| Status | Meaning |
|---|---|
scheduled | The round has not started. |
inprogress | The round is being played. |
suspended | Play is halted (for example weather or darkness) and will resume; the tournament stays inprogress. |
complete | Play has finished and results are under review, just before closed. |
closed | The round is complete and finalized. |
The rounds array below is from the 2024 Masters Tournament Summary (trimmed to number and status). All four rounds are closed because the event is final; during play, the active round reads inprogress and earlier rounds read closed.
{
"rounds": [
{ "number": 1, "status": "closed" },
{ "number": 2, "status": "closed" },
{ "number": 3, "status": "closed" },
{ "number": 4, "status": "closed" }
]
}During live play the array shows the mix directly. This is the 2026 U.S. Open captured during round 1, with the tournament inprogress: round 1 is inprogress while the later rounds are still scheduled.
{
"status": "inprogress",
"rounds": [
{ "number": 1, "status": "inprogress" },
{ "number": 2, "status": "scheduled" },
{ "number": 3, "status": "scheduled" },
{ "number": 4, "status": "scheduled" }
]
}A round can also be suspended when play is halted for weather or darkness. The tournament status stays inprogress and the round resumes later, so treat a suspended round as a pause, not an ending. This is round 1 of the 2026 U.S. Open after play was suspended:
{
"status": "inprogress",
"rounds": [
{ "number": 1, "status": "suspended" },
{ "number": 2, "status": "scheduled" },
{ "number": 3, "status": "scheduled" },
{ "number": 4, "status": "scheduled" }
]
}Player Status
Most players have no status field: its absence means the player is active and progressing normally. The status field appears only to mark an exception. Define all of these in your UI and statistics logic; several are not common knowledge even to golf fans.
| Status | Meaning |
|---|---|
| (absent) | The player is active (or made the cut and is still playing). |
CUT | The player missed the cut after the cut round and does not play the remaining rounds. |
WD | Withdrawn: the player started but did not continue (injury, personal reasons). |
MDF | Made cut, did not finish: the player made the primary cut but was removed at a secondary cut. |
DQ | Disqualified (for example a rules or scorecard violation). |
DNS | Did not start: the player was in the field but never teed off. |
The leaderboard row below is from the 2024 Masters: Justin Thomas, who missed the cut. In that single event, 29 of the 89 players in the field carried status: "CUT":
{
"id": "2094fa02-6411-48df-a717-aa1a7228d645",
"first_name": "Justin",
"last_name": "Thomas",
"position": 61,
"tied": true,
"score": 7,
"strokes": 151,
"status": "CUT"
}A withdrawal carries status: "WD". The row below is from the 2026 RBC Canadian Open, where Brooks Koepka withdrew; a withdrawn player keeps the score and strokes from the rounds they completed:
{
"id": "f555d8b6-f0af-4cce-aa5b-de981d89bc69",
"first_name": "Brooks",
"last_name": "Koepka",
"position": 146,
"tied": false,
"score": -6,
"strokes": 204,
"status": "WD"
}
Handle Missing Status GracefullyThe
statusfield is present only on exception rows. Read it defensively:
- No
statusmeans an active player; render the position and score normally.CUT,WD,MDF,DQ, andDNSplayers should be grouped or styled distinctly (for example listed below active players, with a label), and excluded from "current contender" logic.- Cut, withdrawn, and disqualified players keep their
scoreandstrokesfrom the rounds they completed, so do not assume a missing value; checkstatusfirst.
Tournament Status Workflows
The sections below walk through each path a tournament can take.
Standard Stroke-Play Tournament
The common path is scheduled or created, then inprogress while the four rounds are played, then closed once results are validated.
Each round runs scheduled, then inprogress, then closed on its day. After round 2 the cut is applied and cutline is finalized; once the final round closes, the tournament moves to complete and then closed (the field-by-field walkthrough is in the How a Tournament Progresses section above).
- Before the event: the tournament appears in Tournament Schedule as
scheduledorcreated. Poll Tournament Schedule (not the live feeds) to pick up date, field, and round changes. - During the event:
tournament.statusisinprogress. The most efficient live signal isround.statusin Tournament Summary: when a round flips toinprogress, the live feeds for that round (Tournament Leaderboard, Scorecards Per Round) begin updating. See Tracking Live Tournaments for the live polling workflow. - After the event:
tournament.statusmoves toclosed, usually viacompletewhile results are validated. Seasonal statistics and rankings update after the event closes; see Update Frequencies.
The Cut
Most full-field stroke-play events cut the field after a set round (usually round 2). The tournament header carries the cut context, and players who miss it are flagged on the leaderboard.
cut_round: the round after which the cut is applied (for example2).cutline: the score to par at which the cut falls (for example6, meaning +6).projected_cutline: the live projected cut value while the cut round is in progress; it settles tocutlineonce that round isclosed.
These are the cut fields from the 2024 Masters header, plus one player marked CUT:
{
"cutline": 6,
"projected_cutline": 6,
"cut_round": 2,
"example_cut_row": {
"first_name": "Justin",
"last_name": "Thomas",
"position": 61,
"tied": true,
"score": 7,
"status": "CUT"
}
}While the cut round is inprogress, watch projected_cutline to drive a live "projected to make the cut" UI; once cut_round is closed, switch to the final cutline and the CUT flags.
Playoffs
When regulation ends in a tie for the lead, tournament.status becomes playoff and the event resolves through extra holes before moving to complete and then closed.
How playoff scoring surfaces depends on the playoff format:
- Sudden-death (most PGA Tour events): results appear as a top-level
playoffarray on the Tournament Leaderboard, parallel to the mainleaderboard. Each participant has aroundsentry whosethruis the number of extra holes played and whosestrokesis the playoff score. Hole-by-hole Scorecards are not produced for a sudden-death playoff (see the note below). - Full aggregate playoff round: when a tour plays a full extra round, the round is exposed through Scorecards Per Round with the
round_typesegment set toplayoff(the first playoff round is01):
GET https://api.sportradar.com/golf/{access_level}/{golf_tour}/v3/{language_code}/{season_year}/tournaments/{tournament_id}/playoff/{round_number}/scores.{format}The example below is the 2024 Sony Open in Hawaii, which Grayson Murray won in a sudden-death playoff over Byeong Hun An and Keegan Bradley. After regulation, the three are tied at 17 under (263 strokes); the event has settled to closed, and the playoff block records the extra hole, where Murray made birdie (strokes: 4, one under) to win on the first playoff hole:
{
"status": "closed",
"leaderboard": [
{ "position": 1, "tied": false, "first_name": "Grayson", "last_name": "Murray", "score": -17, "strokes": 263 },
{ "position": 2, "tied": true, "first_name": "Byeong Hun", "last_name": "An", "score": -17, "strokes": 263 },
{ "position": 2, "tied": true, "first_name": "Keegan", "last_name": "Bradley", "score": -17, "strokes": 263 }
]
}{
"playoff": [
{
"id": "7edd8344-4f0b-4ea0-beb2-cdb5c093890f",
"first_name": "Grayson",
"last_name": "Murray",
"position": 1,
"tied": false,
"score": -1,
"strokes": 4,
"abbr_name": "G.Murray",
"rounds": [
{ "score": -1, "strokes": 4, "thru": 1, "birdies": 1, "pars": 0, "bogeys": 0, "sequence": 1 }
]
},
{
"id": "0b5d3fd6-e3ec-4efd-8743-60db44c87425",
"first_name": "Keegan",
"last_name": "Bradley",
"position": 2,
"tied": true,
"score": 0,
"strokes": 5,
"abbr_name": "K.Bradley",
"rounds": [
{ "score": 0, "strokes": 5, "thru": 1, "birdies": 0, "pars": 1, "bogeys": 0, "sequence": 1 }
]
},
{
"id": "5a9ea77c-7323-4f26-86b5-f6adc3b7e00a",
"first_name": "Byeong Hun",
"last_name": "An",
"position": 2,
"tied": true,
"score": 0,
"strokes": 5,
"abbr_name": "B.An",
"rounds": [
{ "score": 0, "strokes": 5, "thru": 1, "birdies": 0, "pars": 1, "bogeys": 0, "sequence": 1 }
]
}
]
}
Sudden-Death Playoffs Have No Scorecards FeedFor the 2024 Sony Open, requesting the playoff scorecards (
.../playoff/01/scores.json) returns200with an empty body (noroundobject). Sudden-death playoff scoring is published only in theplayoffblock on the Tournament Leaderboard. Reserve theplayoffround_typeon Scorecards Per Round for tours that play a full aggregate playoff round. For deeper handling, including reactive playoff detection, see Tracking Playoffs.
Cancelled and Created Events
- A
cancelledtournament (for example the 2026 edition of The Sentry in the spectrum above) is terminal: it carries no winner and will not be played. Remove it from "upcoming" views and do not poll its live feeds. - A
createdevent is an upcoming tournament whose record exists with rounds defined. In the 2026 U.S. Open'screatedsummary the week before it started, the tournament carried all four rounds atround.status: "scheduled"and a populated 156-playerfield, while its leaderboard returnedstatus: "created"with no players yet. Treatcreatedlikescheduledfor planning: keep refreshing it from Tournament Schedule until it goesinprogress.
Detecting Status Transitions
Status changes drive almost every live-integration decision. Recommended approach:
- Find events with Tournament Schedule, and pick up
scheduled,created, andcancelledchanges there. - Track the active round with
round.statusin Tournament Summary. The transition fromscheduledtoinprogressis your cue to start aggressive live polling; the transition toclosedis your cue to slow down. - Poll live feeds (Tournament Leaderboard and Scorecards Per Round) only while a round is
inprogress. These feeds shift to a faster cache window during live play and back to a slower one once the tournament isclosed; follow the per-feed values in Update Frequencies. - Watch for
playoffontournament.statusafter the final round; switch your UI to read the leaderboardplayoffblock. - Stop at terminal status. Once
tournament.statusisclosed(orcancelled), drop the event from live polling and let seasonal statistics and rankings refresh on their own cadence.
For real-time delivery and the disconnect/recovery contract, layer in Push on top of the RESTful feeds.
Errors & Rate Limits
- Authentication failures return
403with an HTML body (an "Authentication Error" page), not a JSON object, so branch on the status code rather than parsing the response. - Rate limits: exceeding your QPS limit returns
429 Too Many Requests, so space out calls and retry with exponential backoff. - Empty but valid responses are not errors. A sudden-death playoff scorecards request returns
200with noroundobject, and a future round readsscheduledwith no scores. Guard for missing nested data before rendering.
Best Practices
- Treat
closedandcancelledas the only terminal statuses; keep any other value in your "active" set and keep polling. - Drive live polling off
round.status, not a fixed timer: start when a round isinprogress, stop when it isclosed. - Read player
statusdefensively; its absence means active. Group and labelCUT,WD,MDF,DQ, andDNSplayers and exclude them from contender logic. - During the cut round, drive UI off
projected_cutline; switch tocutlineand theCUTflags once the cut round isclosed. - Detect playoffs reactively from
tournament.status: playoff; read sudden-death results from the leaderboardplayoffblock, and reserve theplayoffScorecardsround_typefor full aggregate playoff rounds. - Link to this page for status definitions rather than re-enumerating values in other guides, so the canonical list stays in one place.
Updated 7 days ago
