GulfLine for Developers
Everything the GulfLine app knows is available over a clean, versioned REST API — the app is built on these exact endpoints. Zone timelines, go/no-go plan verdicts, exposed-rider nowcasts, and satellite lightning clearance with configurable pool policies.
API access is paid & key-gated
While GulfLine is in beta, keys are issued by hand and pricing is worked out per use case — whether that’s a golf-cart platform pulling nowcasts or a pool operator wiring clearance into their front desk. Tell us what you’re building.
Request an API keyQuickstart
Base URL
https://api.gulfline.app
Auth
X-Api-Key header on every request
Honesty contract
Every payload carries meta.source,
meta.dataAgeSeconds, and confidence with reasons
curl -H "X-Api-Key: gl_your_key" \
"https://api.gulfline.app/api/v1/zones/league-city-east/timeline" Safety note: a lightning clearance
status of "unknown" means the
feed is stale — treat it as closed. The API will never report a false all-clear.
Raw spec:
openapi.json
Zones & Location
GET /api/v1/zones
| param | type | notes |
|---|---|---|
| city | string |
responses: 200
GET /api/v1/zones/{zoneId}
| param | type | notes |
|---|---|---|
| zoneId * | string |
responses: 200 · 404
GET /api/v1/locate
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number |
responses: 200
Forecasts & Planning
GET /api/v1/zones/{zoneId}/timeline
| param | type | notes |
|---|---|---|
| date | string | Local calendar date (America/Chicago); defaults to today |
| zoneId * | string |
responses: 200 · 404
GET /api/v1/timeline
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number | |
| date | string | Local calendar date (America/Chicago); defaults to today |
responses: 200
GET /api/v1/plan
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number | |
| start * | string | |
| end * | string |
responses: 200 · 400
GET /api/v1/regime
| param | type | notes |
|---|---|---|
| city | string | |
| date | string |
responses: 200 · 404
Now — Alerts & Nowcast
GET /api/v1/alerts
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number |
responses: 200
GET /api/v1/nowcast
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number | |
| minutes | integer |
responses: 200
Lightning & Pool Clearance
GET /api/v1/lightning/clearance
| param | type | notes |
|---|---|---|
| radiusMiles | number | |
| clearMinutes | integer | |
| lat * | number | |
| lon * | number |
responses: 200
GET /api/v1/lightning/recent
| param | type | notes |
|---|---|---|
| lat * | number | |
| lon * | number | |
| radiusMiles | number | |
| minutes | integer |
responses: 200
Ask (Natural Language)
POST /api/v1/ask
JSON body — e.g. { "query": "pool tomorrow afternoon?", "lat": 29.51, "lon": -95.03 }
responses: 200 · 422 · 503
Operational
GET /api/v1/health
responses: 200
GET /api/v1/openapi.json
responses: 200