{"openapi":"3.0.3","info":{"title":"TideTurtle API","version":"1.0.0","description":"Free, ad-free tide times + tide charts for 1,414 coastal places worldwide. Harmonic predictions where available, gridded model elsewhere. No signup, no API key.","contact":{"name":"TideTurtle","url":"https://tideturtle.com/developers","email":"fabian@tideturtle.com"},"license":{"name":"Open data — sources retain their own licences","url":"https://tideturtle.com/methodology"}},"servers":[{"url":"https://tideturtle.com"}],"paths":{"/api/v1/places":{"get":{"summary":"List all curated places","description":"Flat list of every place TideTurtle covers, with country/region/slug + lat/lon.","operationId":"listPlaces","responses":{"200":{"description":"Place index","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Place"}}}}}}}},"/api/v1/places/{country}/{region}/{slug}":{"get":{"summary":"Tide data for a single place","description":"7-day high/low extrema, sun + moon, conditions snapshot. Same shape as the prerendered /data/* JSON.","operationId":"getPlace","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string"}},{"name":"region","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Tide page payload","content":{"application/json":{}}},"404":{"description":"Place not found"}}}},"/api/v1/tides":{"get":{"summary":"Tides near a lat/lon","description":"Returns the closest curated place to the supplied coordinates, with its tide data and the great-circle distance.","operationId":"tidesNearby","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"Nearest place + tide data"},"400":{"description":"Missing or invalid lat/lon"}}}},"/api/geo":{"get":{"summary":"Visitor geolocation","description":"Coarse city-level location from the Cloudflare edge request headers. Used by the homepage 'tides near you' feature.","operationId":"geo","responses":{"200":{"description":"Geo payload","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true},"timezone":{"type":"string","nullable":true}}}}}}}}}},"components":{"schemas":{"Place":{"type":"object","properties":{"slug":{"type":"string"},"country":{"type":"string"},"region":{"type":"string"},"name":{"type":"string"},"country_name":{"type":"string"},"region_name":{"type":"string"},"href":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}}}}}}