01
Find the right station
GET /api/v1/stationsSearch by name or state. Add type=tidepredictions when the job requires high and low tide predictions.
REST API · contract 2026-07-09
Perigee serves NOAA station metadata, harmonic tide predictions, observed water levels, marine conditions, forecasts, and local astronomy as a versioned JSON API. Public coastal-data reads work without a key. Each response keeps provenance, freshness, datum, units, time zone, and unavailable fields explicit.
Choose the product before the endpoint
01
GET /api/v1/stationsSearch by name or state. Add type=tidepredictions when the job requires high and low tide predictions.
02
GET /api/v1/stations/{id}/predictionsRequest high/low events or interval predictions with an explicit datum and bounded time window.
03
GET /api/v1/stations/{id}/water-levelsFetch measured water levels separately from astronomical predictions so the two are never conflated.
04
GET /api/v1/astronomyReturn sunrise, twilight, solar position, moon phase, moonrise, and moonset for coordinates and dates.
curl "https://perigeetides.com/api/v1/stations/8443970/predictions?interval=hilo&hours=48&datum=MLLW"Generated from the production contract
These 13 operations come from the same OpenAPI document used by SDK and route-contract tests. PUBLIC reads do not require a key; KEY operations require the documented scope.
| Method | Path | Purpose | Access |
|---|---|---|---|
| GET | /api/v1/stations | Search the NOAA station directory | PUBLIC |
| GET | /api/v1/stations/nearest | Find stations nearest a coordinate | PUBLIC |
| GET | /api/v1/stations/{id} | Get station metadata, products, datums, and flood levels | PUBLIC |
| Method | Path | Purpose | Access |
|---|---|---|---|
| GET | /api/v1/stations/{id}/predictions | Get high/low or interval tide predictions | PUBLIC |
| GET | /api/v1/stations/{id}/water-levels | Get observed water levels | PUBLIC |
| GET | /api/v1/stations/{id}/conditions | Get latest water, wind, temperature, and pressure readings | PUBLIC |
| GET | /api/v1/stations/{id}/forecast | Get NWS wind and marine forecast context | PUBLIC |
| Method | Path | Purpose | Access |
|---|---|---|---|
| GET | /api/v1/astronomy | Calculate sun and moon details for a coordinate | PUBLIC |
| Method | Path | Purpose | Access |
|---|---|---|---|
| POST | /api/v1/decisions/trip-health | Get one explainable Trip Health planning read | PUBLIC |
| POST | /api/v1/decisions/best-window | Rank 2–12 candidate local windows | KEY |
| POST | /api/v1/decisions/evaluate-rules | Evaluate deterministic rules against a fresh planning decision | KEY |
| POST | /api/v1/decisions/material-change | Compare a prior decision summary with current inputs | KEY |
| Method | Path | Purpose | Access |
|---|---|---|---|
| GET | /api/developer/status | Get API, MCP, and upstream provider status | PUBLIC |
Interpretation contract
Predictions estimate the astronomical tide. Observed water levels can also reflect wind, pressure, river flow, waves, and surge.
High and low water describe vertical level. Flood, ebb, maximum current, and slack require current-station data.
Keep the station datum, measurement unit, station ID, time zone, and source timestamp with every result.
A provider timeout or unavailable product is not a favorable condition. Narrow the answer and report the absent input.
Authentication, quota, and errors
Anonymous requests use the published IP limit. A free key raises capacity without changing the underlying coastal-data meaning.
Send Authorization: Bearer or x-api-key. Keep keys on a server, never in a public browser bundle.
A 429 includes retry guidance. A 503 means Perigee could not safely complete the upstream or quota step; do not invent data.