Highlighted differences between IMGA API and the new LD Golf API
Overview
Use this page as a migration summary.
It highlights the main differences between IMGA and LD Golf API behavior.
Technical differences
Authentication uses JWTs from Common IAM Guide.
WebSocket clients must send
Client.Heartbeatevery30seconds.Live event WebSocket streams support
Client.Initafter connect.WebSocket messages use a CloudEvents envelope. REST responses do not.
Timestamp fields have different meanings:
timeis the envelope generation time.data.created_atis the event or state version time.data.payload.event_timeis the on-course event time.
See General Information and Live Events.
Static data differences
Tournaments, rounds, and holes keep the same high-level structure.
Core entities now align with SR identifiers across products.
Responses include both SR IDs, such as
sr:stage:12345, and numeric IDs.Request paths use numeric IDs only.
Field names follow current LD Golf API naming, such as
snake_case.Teams and players are modeled as competitors, while the API still returns squad, team, and player structures.
The players endpoint is limited to tours in scope.
Tournament status is exposed through
GET /golf/rest/v1/tournaments.There is no separate live tournament status endpoint.
Hole distances originate in meters. Yardage values can differ slightly because of conversion and rounding.
For valid tournament statuses, see Tournaments list.
Live events differences
Stroke play live events are scoped to a round.
Match play live events are scoped to a match.
There are no separate live event streams per team or player.
The same live event resource is available through REST history and WebSocket streaming.
UPDATEandDELETEreplace the old IMGA correction workflow.Consumers should replace or remove stored events by
data.id.Event identifiers are UUIDs, not sequence numbers.
Provisional Ballis not sent as a standalone event.Use
StrokeandPenaltycontext instead.Zonefor stroke events is an enumerated value.RoundEndedincludes references, not full player objects.blindshotis not available.The probabilities table is not available.
BallDroppedhas no drop type.BallDroppedandPenaltydo not include a provisional index.Penalty reason is not available.
Disqualification is sent as
end_reason: DISQUALIFIEDinHoleEnded.Obstruction data is attached differently than in IMGA.
Distance and coordinate fields can show rounding differences after unit conversion.
See Live Events and DELETE/UPDATE approach.
State and status differences
Score state is not updated on
BallHoled.Score state updates when
HoleEndedis produced.scoreToWinis not available.A dedicated round official event is not sent.
Official status is reflected through status values such as
CONFIRMED.Hole-ended score pending is not available.
Tournament status values:
NOT_STARTEDIN_PROGRESSINTERRUPTEDCANCELEDENDEDCONFIRMEDMAINTENANCESUSPENDED
See State (leaderboard, scoreboard, hole-by-hole).
Client and visualization notes
The first Live Data client iteration does not include stroke animations.
Dedicated statistics coverage is out of scope for the first iteration.
Related pages
Last updated
Was this helpful?