Start with your invitation
Sign in to the portal with the GolfCore account named in your invitation. The account owner reviews the course list, evaluation scope, end date and terms, then accepts the evaluation. Team members with key-management access can create keys after acceptance.
Negotiated monthly licenses
For a paid license, review your monthly price, course scope and terms in Access & usage, then continue to Stripe Checkout. Access starts after payment is confirmed. Manage billing provides invoices, payment methods and cancellation. Monthly licenses have no usage overages; evaluations never convert automatically.
Create a server key
Create a named key for your agreement environment and choose its expiry: 30 days, 90 days, one year or never. Reveal or copy saved keys in the portal whenever you need them. Agreement expiry can end access sooner. Keep keys on your server, never in browser code, mobile bundles, URLs or shared screenshots. Revoke a lost or compromised key in the portal.
Read your course catalog
curl https://api.golfcore.org/licensed/v1/courses \
-H "Authorization: Bearer $GOLFCORE_API_KEY" The catalog returns only the courses and layouts authorized for your account. An empty list means that no course access has been assigned yet. Contact support to confirm your requested courses; a public coverage flag is not an entitlement to a private package.
Read a reviewed release
curl 'https://api.golfcore.org/licensed/v1/courses/COURSE_SLUG/releases/VERSION?layout_id=LAYOUT_ID' \
-H "Authorization: Bearer $GOLFCORE_API_KEY" Use the slug and layout ID from your catalog and the release version supplied with your evaluation. Responses describe permitted layers, formats, source dates and limitations. Missing fields and unreviewed layers are not promises of coverage. This endpoint returns metadata, not a downloadable package.
Download licensed data
Use an available release version from your course catalog. Request its download endpoint with layout_id and format. The response provides a private URL, a five-minute bearer token, an expiry and a SHA-256 checksum. Fetch the URL using that token in the Authorization header and verify the checksum. Only reviewed packages within your licensed scope are available.
GET /licensed/v1/courses/COURSE_SLUG/releases/VERSION/download?layout_id=LAYOUT_ID&format=geojson Usage and errors
GET /licensed/v1/usage identifies the key environment. Evaluations report accounting as not_activated; monthly licenses report fixed_monthly. Neither incurs metered request charges.
- 401: the key, account or accepted agreement is missing, expired or inactive.
- 400: a required parameter, such as layout_id, is missing.
- 404: the route or authorized course release was not found.
- 503: the service is temporarily unavailable; retry with backoff.
Licensed responses are private and must not be placed in a shared cache. Retry read requests with backoff; do not repeatedly retry invalid credentials. The free API can return 429 with Retry-After when operational protection applies.
Pilot OpenAPI description · API service terms · Contact support