{"name":"OpenGolfAPI","version":"3.6.1","courses":32704,"license":"ODbL-1.0","docs":"https://opengolfapi.org","openapi":"https://api.opengolfapi.org/openapi.json","llms":"https://api.opengolfapi.org/llms.txt","openshot_fields":"https://api.opengolfapi.org/api/v1/openshot/fields","endpoints":["GET /v1/courses/search?q=&state=","GET /v1/courses/state/:code","GET /v1/courses/:id","GET /v1/courses/:id/tees","GET /v1/courses/:id/holes","GET /v1/courses/:id/climate","GET /v1/courses/:id/nearby","POST /api/v1/shots — ingest launch-monitor shots (OpenShot or raw GSPro 921)","POST /api/v1/shots/echo — validate/normalize a shot (sandbox)","GET /api/v1/shots?player=&session=&course= — shot history"],"geo":"Paid spatial layer at /api/v1/geo — requires a geo-tier API key","connect":"OpenGolf Connect (any launch monitor → /api/v1/shots): https://opengolfapi.org/connect · OpenShot standard: https://opengolfapi.org/schemas/openshot/v0.json","developers":{"message":"Building on OpenGolfAPI? Tell us what you're making and where the API falls short.","contact":"info@opengolfapi.org","github":"https://github.com/opengolfapi"},"api_keys":"https://courses.opengolfapi.org/api-keys"}