GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Guides

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 (status on the tournament): the overall lifecycle of an event. Appears in Tournament Schedule, Tournament Summary, and Tournament Leaderboard.
  • Round status (status on each round): whether a given round is upcoming, live, or final. Appears in Tournament Summary and Scorecards Per Round.
  • Player status (status on 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_KEY


How 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.

Tournament Status LifecycleOnly closed and cancelled are terminal
Main pathscheduledcreatedinprogresscompleteclosed
Playoff branchinprogresstie for the leadplayoffcompleteclosed
Cancellationany pre-play statuscancelled
Solid pills are terminal. A weather delay is a suspended round, not a tournament status: the tournament stays inprogress while a round is suspended.

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.

StatusMeaningTerminal
scheduledThe event is on the season calendar. Rounds and field are not yet finalized (typically further-out events).No
createdThe 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
inprogressThe tournament is underway; a round is live.No
playoffRegulation play ended in a tie for the lead and a playoff is underway. See the Playoffs workflow below.No
completeThe winner is decided but results are still pending final validation.No
closedResults are validated and the tournament is finalized.Yes
cancelledThe event was called off and will not be played; it carries no winner.Yes

ℹ️

Treat Unknown Statuses as Non-Terminal

Only closed and cancelled are terminal. Any other value means the tournament is still active: keep polling until you observe closed or cancelled. A delay shows up as a suspended round status while the tournament stays inprogress, so do not treat a stoppage as an ending. Drive "is this event over?" logic off the terminal states, never off the absence of inprogress.


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.

StatusMeaning
scheduledThe round has not started.
inprogressThe round is being played.
suspendedPlay is halted (for example weather or darkness) and will resume; the tournament stays inprogress.
completePlay has finished and results are under review, just before closed.
closedThe 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.

StatusMeaning
(absent)The player is active (or made the cut and is still playing).
CUTThe player missed the cut after the cut round and does not play the remaining rounds.
WDWithdrawn: the player started but did not continue (injury, personal reasons).
MDFMade cut, did not finish: the player made the primary cut but was removed at a secondary cut.
DQDisqualified (for example a rules or scorecard violation).
DNSDid 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 Gracefully

The status field is present only on exception rows. Read it defensively:

  • No status means an active player; render the position and score normally.
  • CUT, WD, MDF, DQ, and DNS players 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 score and strokes from the rounds they completed, so do not assume a missing value; check status first.


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.

Tournament Week at a GlanceA standard four-round stroke-play event
Thursday
Round 1
Full field
Friday
Round 2
Full field; cutline set when the round closes
CUT
Saturday
Round 3
Weekend field only
Sunday
Round 4
Weekend field; playoff if tied for the lead
completeclosed
Players over the cutline after Round 2 are flagged CUT and do not play the weekend. The move from complete to closed follows results validation.

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 scheduled or created. Poll Tournament Schedule (not the live feeds) to pick up date, field, and round changes.
  • During the event: tournament.status is inprogress. The most efficient live signal is round.status in Tournament Summary: when a round flips to inprogress, 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.status moves to closed, usually via complete while 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 example 2).
  • cutline: the score to par at which the cut falls (for example 6, meaning +6).
  • projected_cutline: the live projected cut value while the cut round is in progress; it settles to cutline once that round is closed.
The CutApplied after the cut round closes
cut_round (Round 2) closescutline finalized
At or under the cutline: the player advances and plays Rounds 3 and 4
Over the cutline: the player is flagged status: "CUT" and does not play the weekend
While the cut round is in progress, projected_cutline tracks the live cut; it settles to cutline once the round closes.

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.

Playoff ResolutionTriggered by a tie for the lead after the final round
Triggerfinal round inprogresstie for the leadplayoff
Where scores appear
Sudden death (most PGA Tour events): results publish only in the leaderboard playoff array
Full extra round: hole-by-hole scoring via Scorecards Per Round with playoff/01 in the path
Resolutionplayoffcompleteclosed

How playoff scoring surfaces depends on the playoff format:

  • Sudden-death (most PGA Tour events): results appear as a top-level playoff array on the Tournament Leaderboard, parallel to the main leaderboard. Each participant has a rounds entry whose thru is the number of extra holes played and whose strokes is 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_type segment set to playoff (the first playoff round is 01):
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 Feed

For the 2024 Sony Open, requesting the playoff scorecards (.../playoff/01/scores.json) returns 200 with an empty body (no round object). Sudden-death playoff scoring is published only in the playoff block on the Tournament Leaderboard. Reserve the playoff round_type on 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 cancelled tournament (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 created event is an upcoming tournament whose record exists with rounds defined. In the 2026 U.S. Open's created summary the week before it started, the tournament carried all four rounds at round.status: "scheduled" and a populated 156-player field, while its leaderboard returned status: "created" with no players yet. Treat created like scheduled for planning: keep refreshing it from Tournament Schedule until it goes inprogress.


Detecting Status Transitions

Status changes drive almost every live-integration decision. Recommended approach:

  1. Find events with Tournament Schedule, and pick up scheduled, created, and cancelled changes there.
  2. Track the active round with round.status in Tournament Summary. The transition from scheduled to inprogress is your cue to start aggressive live polling; the transition to closed is your cue to slow down.
  3. 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 is closed; follow the per-feed values in Update Frequencies.
  4. Watch for playoff on tournament.status after the final round; switch your UI to read the leaderboard playoff block.
  5. Stop at terminal status. Once tournament.status is closed (or cancelled), 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 403 with 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 200 with no round object, and a future round reads scheduled with no scores. Guard for missing nested data before rendering.


Best Practices

  • Treat closed and cancelled as 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 is inprogress, stop when it is closed.
  • Read player status defensively; its absence means active. Group and label CUT, WD, MDF, DQ, and DNS players and exclude them from contender logic.
  • During the cut round, drive UI off projected_cutline; switch to cutline and the CUT flags once the cut round is closed.
  • Detect playoffs reactively from tournament.status: playoff; read sudden-death results from the leaderboard playoff block, and reserve the playoff Scorecards round_type for 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.

Did this page help you?