Forecast values at the positions and times you ask for, or across an area at one time. Send a list of parameters and a list of positions, and get back one value per parameter per position, with the model run each value came from. For an area, ask for a grid and get it back as a CSV file.Three endpoints, on https://aviso-api.stratumfive.com/api/numericalweather/.
Endpoint
Answers
POST /v2/points
What will conditions be at these positions and times?
GET /grid/csv
What will conditions be across this area at one time, as a spreadsheet?
Only the point forecast carries a version in its path. GET /grid/csv and GET /parameters sit at the root of the service, with no /v2.Each position takes lat, lon and timestamp, all three required, and an optional uid.
uid is how you match the response back
uid is yours. We return it untouched on the matching coordinate, so a route of forty waypoints comes back identifiable without you relying on array order.
The response holds a coordinates array, one entry per position you sent. Each entry carries the position back, plus a paramValues array with one entry per parameter you requested.
Field
Means
param
Which parameter this value is for
value
The forecast value, in the unit the parameter name carries
modelInitialization
The model run it came from, as YYYYMMDDHH in UTC
forecastHour
How many hours ahead of that run this value forecasts
modelInitialization and forecastHour together tell you how fresh a value is. A forecastHour of 0 is the model's analysis at the moment it ran; treat a large one as a projection a long way out, and as less certain.
Timestamps are snapped to the model, not returned as sent
Our models run at a fixed cadence, so we serve your timestamp from the nearest point a run holds. Read modelInitialization and forecastHour rather than assuming you got the exact instant you requested.
GET /grid/csv returns one forecast time across a rectangular area, as a CSV file you can open in a spreadsheet. You set the area, the grid spacing and the time in the query string, and name the parameters in the body.
Query parameter
Holds
fileFormat
3 for one row per grid point, 4 for the transposed layout with one column per point
timestamp
The forecast time, in UTC with a trailing Z
resolution
The grid spacing in degrees. 1.0 over the area above gives 9 points, 0.1 gives 441
minLat, maxLat, minLon, maxLon
The edges of the area, in decimal degrees
seaOnly
true drops the grid points that fall on land
The body maps each parameter you want to the column heading you want for it. The keys are names from Weather Parameters, and the headings are your choice.With fileFormat=3, the first row reads latitude,longitude followed by your headings, then one row per grid point. With 4, the same fields run down the first column and each further column is one grid point.
This GET request carries a body
Some HTTP clients and proxies drop the body of a GET request, and the browser fetch API refuses to send one. Use a client that sends it, such as curl with --request GET --data as above.
Set all four edges of the area
Leave the edges out and you ask for the whole globe. At resolution=0.1 that is about 6.5 million points in one file.
One request covers one forecast time and one rectangle, and we return values, not summaries. Work out averages or maxima for an area after download.
GET /parameters returns the parameters we currently publish, each with a description and the data repository behind it.
This endpoint answers in a different vocabulary
The catalogue names parameters in a different form from the values POST /v2/points accepts. The catalogue returns entries like climo.wind_speed.kts, while the forecast endpoint takes names like Wind10mKnots. They do not currently line up, so build your request from Weather Parameters rather than from a catalogue response. We are correcting this.
Send the bearer token (1-hour expiry) on this call as you would on any other.