> For the complete documentation index, see [llms.txt](https://docs.sportradar.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sportradar.com/live-data/live-data-golf-api-design/ld-golf-api-documentation/live-event-types/standard-stroke-event.md).

# Standard Stroke Event

### Overview

These events describe the stroke-by-stroke flow on a hole.

{% hint style="info" %}
`sr_group_id` and `group_number` are present only for stroke play tournaments.
{% endhint %}

### Shared player fields

The `player` object uses these fields across all stroke events:

| **Name**              | **Type** | **Description**            | **Old IMGA API equivalent** |
| --------------------- | -------- | -------------------------- | --------------------------- |
| `player.player_id`    | Integer  | Numeric player identifier. | `playerId`                  |
| `player.sr_player_id` | String   | SR player identifier.      | -                           |
| `player.country`      | String   | Three-letter country code. | `player.country`            |
| `player.display_name` | String   | Full display name.         | `player.displayName`        |
| `player.first_name`   | String   | First name.                | `player.firstName`          |
| `player.last_name`    | String   | Last name.                 | `player.lastName`           |
| `player.is_amateur`   | Boolean  | Amateur flag.              | `player.isAmateur`          |
| `player.gender`       | String   | Player gender.             | `player.gender`             |

#### Stroke Preparation

IMGA equivalent: `Addressing Ball`

{% code title="Event.Sport.Golf.StrokePreparation" overflow="wrap" expandable="true" %}

```json
{
  "data": {
    "type": "Event.Sport.Golf.StrokePreparation",
    "payload": {
      "event_time": "2026-04-24T11:09:15.267Z",
      "team_id": 12345,
      "sr_team_id": "sr:competitor:12345",
      "sr_group_id": "sr:group_match:12345",
      "group_number": 1,
      "hole_number": 3,
      "hole_sequence": 3,
      "course_id": 42178,
      "sr_course_id": "sr:venue:42178",
      "round_number": 1,
      "stroke_number": 2,
      "provisional_number": 1,
      "club_type": "DRIVER",
      "player": {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
      }
    }
  }
}
```

{% endcode %}

| **Name**             | **Type**           | **Description**                                            | **Required** | **Old IMGA API equivalent** |
| -------------------- | ------------------ | ---------------------------------------------------------- | ------------ | --------------------------- |
| `event_time`         | String (date-time) | Time when the event occurred.                              | Yes          | `timestamp`                 |
| `team_id`            | Integer            | Numeric team identifier.                                   | Yes          | `teamNo`                    |
| `sr_team_id`         | String             | SR team identifier.                                        | Yes          | -                           |
| `sr_group_id`        | String             | SR group identifier.                                       | No           | -                           |
| `group_number`       | Integer            | Group number.                                              | No           | `groupNo`                   |
| `hole_number`        | Integer            | Hole number.                                               | Yes          | `holeNo`                    |
| `hole_sequence`      | Integer            | Hole order on the course.                                  | Yes          | `holeOrder`                 |
| `course_id`          | Integer            | Numeric course identifier.                                 | Yes          | `courseId`                  |
| `sr_course_id`       | String             | SR course identifier.                                      | Yes          | -                           |
| `round_number`       | Integer            | Round number.                                              | Yes          | `roundNo`                   |
| `stroke_number`      | Integer            | Stroke number on the hole.                                 | Yes          | `strokeNo`                  |
| `provisional_number` | Integer            | Provisional ball sequence.                                 | Yes          | `provisionalIndex`          |
| `club_type`          | String (ENUM)      | Club type. Example values: `DRIVER`, `FAIRY_WOOD`, `IRON`. | Yes          | `clubTypeCode`              |
| `player`             | Object             | Player details. See shared player fields.                  | Yes          | -                           |

#### Stroke Executed

IMGA equivalent: `Hit Ball`

{% code title="Event.Sport.Golf.StrokeExecuted" overflow="wrap" expandable="true" %}

```json
{
  "data": {
    "type": "Event.Sport.Golf.StrokeExecuted",
    "payload": {
      "event_time": "2026-04-24T11:09:15.267Z",
      "team_id": 12345,
      "sr_team_id": "sr:competitor:12345",
      "sr_group_id": "sr:group_match:12345",
      "group_number": 1,
      "hole_number": 3,
      "hole_sequence": 3,
      "course_id": 42178,
      "sr_course_id": "sr:venue:42178",
      "round_number": 1,
      "stroke_number": 2,
      "strokes_assessed": 2,
      "provisional_number": 1,
      "player": {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
      },
      "score": {
        "hole_par": 4,
        "hole_strokes": 3,
        "sport_event_score_to_par": -1,
        "tournament_score_to_par": -1
      }
    }
  }
}
```

{% endcode %}

| **Name**                         | **Type**           | **Description**                              | **Required** | **Old IMGA API equivalent**    |
| -------------------------------- | ------------------ | -------------------------------------------- | ------------ | ------------------------------ |
| `event_time`                     | String (date-time) | Time when the event occurred.                | Yes          | `timestamp`                    |
| `team_id`                        | Integer            | Numeric team identifier.                     | Yes          | `teamNo`                       |
| `sr_team_id`                     | String             | SR team identifier.                          | Yes          | -                              |
| `sr_group_id`                    | String             | SR group identifier.                         | No           | -                              |
| `group_number`                   | Integer            | Group number.                                | No           | `groupNo`                      |
| `hole_number`                    | Integer            | Hole number.                                 | Yes          | `holeNo`                       |
| `hole_sequence`                  | Integer            | Hole order on the course.                    | Yes          | `holeOrder`                    |
| `course_id`                      | Integer            | Numeric course identifier.                   | Yes          | `courseId`                     |
| `sr_course_id`                   | String             | SR course identifier.                        | Yes          | -                              |
| `round_number`                   | Integer            | Round number.                                | Yes          | `roundNo`                      |
| `stroke_number`                  | Integer            | Stroke number on the hole.                   | Yes          | `strokeNo`                     |
| `strokes_assessed`               | Integer            | Number of strokes applied by this action.    | Yes          | `strokesAssessed`              |
| `provisional_number`             | Integer            | Provisional ball sequence.                   | Yes          | `provisionalIndex`             |
| `player`                         | Object             | Player details. See shared player fields.    | Yes          | -                              |
| `score.hole_par`                 | Integer            | Hole par.                                    | Yes          | `score.currentHolePar`         |
| `score.hole_strokes`             | Integer            | Strokes taken on the hole.                   | Yes          | `score.currentHoleStrokes`     |
| `score.sport_event_score_to_par` | Integer            | Score to par for the current round or match. | Yes          | `score.currentRoundScoreToPar` |
| `score.tournament_score_to_par`  | Integer            | Overall tournament score to par.             | Yes          | `score.overallScoreToPar`      |

#### Possible Stroke Location

IMGA equivalent: `Approximate Ball Lie`

{% code title="Event.Sport.Golf.PossibleStrokeLocation" overflow="wrap" expandable="true" %}

```json
{
  "data": {
    "type": "Event.Sport.Golf.PossibleStrokeLocation",
    "payload": {
      "event_time": "2026-04-24T11:09:15.267Z",
      "team_id": 12345,
      "sr_team_id": "sr:competitor:12345",
      "sr_group_id": "sr:group_match:12345",
      "group_number": 1,
      "hole_number": 3,
      "hole_sequence": 3,
      "course_id": 42178,
      "sr_course_id": "sr:venue:42178",
      "round_number": 1,
      "stroke_number": 2,
      "stroke_executed_event_id": "0da2b5ba-b92f-42bd-b9d2-0fcd978fec85",
      "in_the_hole": true,
      "player": {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
      },
      "ball_lie": {
        "coordinates": {
          "x": 10900.307,
          "y": 10333.514,
          "z": 12.541
        },
        "is_prediction_unconfident": false,
        "is_water_probable": false,
        "distance_hit": 150.5,
        "distance_to_pin": 10.2,
        "zone": "GREEN"
      }
    }
  }
}
```

{% endcode %}

| **Name**                             | **Type**           | **Description**                                   | **Required** | **Old IMGA API equivalent**       |
| ------------------------------------ | ------------------ | ------------------------------------------------- | ------------ | --------------------------------- |
| `event_time`                         | String (date-time) | Time when the event occurred.                     | Yes          | `timestamp`                       |
| `team_id`                            | Integer            | Numeric team identifier.                          | Yes          | `teamNo`                          |
| `sr_team_id`                         | String             | SR team identifier.                               | Yes          | -                                 |
| `sr_group_id`                        | String             | SR group identifier.                              | No           | -                                 |
| `group_number`                       | Integer            | Group number.                                     | No           | `groupNo`                         |
| `hole_number`                        | Integer            | Hole number.                                      | Yes          | `holeNo`                          |
| `hole_sequence`                      | Integer            | Hole order on the course.                         | Yes          | `holeOrder`                       |
| `course_id`                          | Integer            | Numeric course identifier.                        | Yes          | `courseId`                        |
| `sr_course_id`                       | String             | SR course identifier.                             | Yes          | -                                 |
| `round_number`                       | Integer            | Round number.                                     | Yes          | `roundNo`                         |
| `stroke_number`                      | Integer            | Stroke number on the hole.                        | Yes          | `strokeNo`                        |
| `stroke_executed_event_id`           | String (UUID)      | Identifier of the related `StrokeExecuted` event. | Yes          | -                                 |
| `in_the_hole`                        | Boolean            | Whether the ball may be holed.                    | Yes          | `inTheHole`                       |
| `player`                             | Object             | Player details. See shared player fields.         | Yes          | -                                 |
| `ball_lie.coordinates`               | Object             | Ball coordinates in meters.                       | Yes          | `ballLie.coordinates`             |
| `ball_lie.is_prediction_unconfident` | Boolean            | Prediction confidence flag.                       | Yes          | `ballLie.isPredictionUnconfident` |
| `ball_lie.is_water_probable`         | Boolean            | Water hazard probability flag.                    | Yes          | `ballLie.isWaterProbable`         |
| `ball_lie.distance_hit`              | Number             | Distance travelled in meters.                     | Yes          | `ballLie.shotDistance`            |
| `ball_lie.distance_to_pin`           | Number             | Distance to pin in meters.                        | Yes          | `ballLie.distanceToPin`           |
| `ball_lie.zone`                      | String (ENUM)      | Landing zone.                                     | Yes          | `ballLie.surfaceType`             |

#### Stroke Location

IMGA equivalent: `Detailed Ball Lie`

{% code title="Event.Sport.Golf.StrokeLocation" overflow="wrap" expandable="true" %}

```json
{
  "data": {
    "type": "Event.Sport.Golf.StrokeLocation",
    "payload": {
      "event_time": "2026-04-24T11:09:15.267Z",
      "team_id": 12345,
      "sr_team_id": "sr:competitor:12345",
      "sr_group_id": "sr:group_match:12345",
      "group_number": 1,
      "hole_number": 3,
      "hole_sequence": 3,
      "course_id": 42178,
      "sr_course_id": "sr:venue:42178",
      "round_number": 1,
      "stroke_number": 2,
      "stroke_executed_event_id": "0da2b5ba-b92f-42bd-b9d2-0fcd978fec85",
      "in_the_hole": true,
      "player": {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
      },
      "ball_lie": {
        "coordinates": {
          "x": 10900.307,
          "y": 10333.514,
          "z": 12.541
        },
        "is_next_stroke_obstructed": false,
        "distance_hit": 150.5,
        "distance_to_pin": 10.2,
        "zone": "GREEN"
      }
    }
  }
}
```

{% endcode %}

| **Name**                             | **Type**           | **Description**                                   | **Required** | **Old IMGA API equivalent** |
| ------------------------------------ | ------------------ | ------------------------------------------------- | ------------ | --------------------------- |
| `event_time`                         | String (date-time) | Time when the event occurred.                     | Yes          | `timestamp`                 |
| `team_id`                            | Integer            | Numeric team identifier.                          | Yes          | `teamNo`                    |
| `sr_team_id`                         | String             | SR team identifier.                               | Yes          | -                           |
| `sr_group_id`                        | String             | SR group identifier.                              | No           | -                           |
| `group_number`                       | Integer            | Group number.                                     | No           | `groupNo`                   |
| `hole_number`                        | Integer            | Hole number.                                      | Yes          | `holeNo`                    |
| `hole_sequence`                      | Integer            | Hole order on the course.                         | Yes          | `holeOrder`                 |
| `course_id`                          | Integer            | Numeric course identifier.                        | Yes          | `courseId`                  |
| `sr_course_id`                       | String             | SR course identifier.                             | Yes          | -                           |
| `round_number`                       | Integer            | Round number.                                     | Yes          | `roundNo`                   |
| `stroke_number`                      | Integer            | Stroke number on the hole.                        | Yes          | `strokeNo`                  |
| `stroke_executed_event_id`           | String (UUID)      | Identifier of the related `StrokeExecuted` event. | Yes          | -                           |
| `in_the_hole`                        | Boolean            | Whether the ball ended in the hole.               | Yes          | `inTheHole`                 |
| `player`                             | Object             | Player details. See shared player fields.         | Yes          | -                           |
| `ball_lie.coordinates`               | Object             | Ball coordinates in meters.                       | Yes          | `ballLie.coordinates`       |
| `ball_lie.is_next_stroke_obstructed` | Boolean            | Whether the next stroke is obstructed.            | Yes          | `ballLie.obstructions`      |
| `ball_lie.distance_hit`              | Number             | Distance travelled in meters.                     | Yes          | `ballLie.shotDistance`      |
| `ball_lie.distance_to_pin`           | Number             | Distance to pin in meters.                        | Yes          | `ballLie.distanceToPin`     |
| `ball_lie.zone`                      | String (ENUM)      | Landing zone.                                     | Yes          | `ballLie.surfaceType`       |

#### Ball Holed

IMGA equivalent: `Ball Holed`

{% code title="Event.Sport.Golf.BallHoled" overflow="wrap" expandable="true" %}

```json
{
  "data": {
    "type": "Event.Sport.Golf.BallHoled",
    "payload": {
      "event_time": "2026-04-24T11:09:15.267Z",
      "team_id": 12345,
      "sr_team_id": "sr:competitor:12345",
      "sr_group_id": "sr:group_match:12345",
      "group_number": 1,
      "hole_number": 3,
      "hole_sequence": 3,
      "course_id": 42178,
      "sr_course_id": "sr:venue:42178",
      "round_number": 1,
      "stroke_number": 2,
      "stroke_executed_event_id": "0da2b5ba-b92f-42bd-b9d2-0fcd978fec85",
      "player": {
        "player_id": 22,
        "sr_player_id": "sr:competitor:22",
        "country": "ENG",
        "display_name": "Tommy Fleetwood",
        "first_name": "Tommy",
        "last_name": "Fleetwood",
        "is_amateur": false,
        "gender": "male"
      },
      "score": {
        "hole_par": 4,
        "hole_strokes": 3,
        "sport_event_score_to_par": -1,
        "tournament_score_to_par": -1
      }
    }
  }
}
```

{% endcode %}

| **Name**                         | **Type**           | **Description**                                   | **Required** | **Old IMGA API equivalent**    |
| -------------------------------- | ------------------ | ------------------------------------------------- | ------------ | ------------------------------ |
| `event_time`                     | String (date-time) | Time when the event occurred.                     | Yes          | `timestamp`                    |
| `team_id`                        | Integer            | Numeric team identifier.                          | Yes          | `teamNo`                       |
| `sr_team_id`                     | String             | SR team identifier.                               | Yes          | -                              |
| `sr_group_id`                    | String             | SR group identifier.                              | No           | -                              |
| `group_number`                   | Integer            | Group number.                                     | No           | `groupNo`                      |
| `hole_number`                    | Integer            | Hole number.                                      | Yes          | `holeNo`                       |
| `hole_sequence`                  | Integer            | Hole order on the course.                         | Yes          | `holeOrder`                    |
| `course_id`                      | Integer            | Numeric course identifier.                        | Yes          | `courseId`                     |
| `sr_course_id`                   | String             | SR course identifier.                             | Yes          | -                              |
| `round_number`                   | Integer            | Round number.                                     | Yes          | `roundNo`                      |
| `stroke_number`                  | Integer            | Stroke number on the hole.                        | Yes          | `strokeNo`                     |
| `stroke_executed_event_id`       | String (UUID)      | Identifier of the related `StrokeExecuted` event. | Yes          | -                              |
| `player`                         | Object             | Player details. See shared player fields.         | Yes          | -                              |
| `score.hole_par`                 | Integer            | Hole par.                                         | Yes          | `score.currentHolePar`         |
| `score.hole_strokes`             | Integer            | Strokes taken on the hole.                        | Yes          | `score.currentHoleStrokes`     |
| `score.sport_event_score_to_par` | Integer            | Score to par for the current round or match.      | Yes          | `score.currentRoundScoreToPar` |
| `score.tournament_score_to_par`  | Integer            | Overall tournament score to par.                  | Yes          | `score.overallScoreToPar`      |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sportradar.com/live-data/live-data-golf-api-design/ld-golf-api-documentation/live-event-types/standard-stroke-event.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
