Introduction
WeatherMesh is the world’s most accurate AI weather model, and is used operationally to guide the largest balloon constellation in the world.
WeatherMesh currently predicts surface temperature, pressure, winds, precipitation, and radiation; and then geopotential, temperature, winds, and moisture at 28 pressure levels. Outputs have a resolution of 0.25 degrees, and are best at a time horizon between <1 and 5 days out.
The WindBorne API is designed to be predictable, performant, and easy to use.
Need access?
Email data@windbornesystems.comAuthentication
WindBorne uses API keys to authenticate API requests. If an API request is not properly authenticated, it will fail. To get an API key, email data@windbornesystems.com.
You should have an API key and a client id. Conceptually, you can think of your client id as a username and your API key as your password. You should make sure to keep your API key safe and secure.
To authenticate, pass HTTP basic auth headers in the GET request with username YOUR_CLIENT_ID
and password YOUR_API_KEY
. This follows RFC 7617; ie, as is standard, the credentials are colon-separated then base-64 encoded; many HTTP libraries will do this for you.
Using JWTs from a key server ▸
Point forecasts
This endpoint allows getting the forecast at a given point or set of points. This runs WindBorne's custom point forecasting model, making it more accurate than simple interpolation of the gridded output.
These forecasts are at hourly resolution out to 5 days and then 6-hourly beyond that.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
coordinates | string | A semi-colon separated list of latitude,longitude tuples, eg 37,-121;40.3,-100 |
min_forecast_hour | integer | Optional. The minimum forecast hour to calculate point forecasts for. |
max_forecast_hour | integer | Optional. The maximum forecast hour to calculate point forecasts for. |
initialization_time | string | Optional. An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time at which the forecast was made. This looks solely at the date and the hour; minutes and seconds are discarded. If nothing is provided, the latest forecast is used. |
It returns the following:
Name | Type | Description |
---|---|---|
forecasts | [Forecast] | An array of forecasts, in the same order as the input coordinates |
initialization_time | string | The ISO 8601 date string of the forecast initialization time |
A forecast is an array of the form:
Name | Type | Description |
---|---|---|
temperature_2m | number | The temperature at 2m above ground level, in degrees Celsius |
dewpoint_2m | number | The dewpoint at 2m above ground level, in degrees Celsius |
wind_u_10m | number | The U component of wind speed at 10m above ground level, in m/s |
wind_v_10m | number | The V component of wind speed at 10m above ground level, in m/s |
pressure_msl | number | The pressure as converted to MSL pressure, in hPa |
latitude | number | The latitude of the point, between -90 and 90 |
longitude | number | The longitude of the point, between -180 and 180 |
time | string | The ISO8601 timestamp of when this forecast point is valid |
Example: Using the point forecasts API
Here is an example of making a request to the point forecasts API using Python and the wb_get_request
function from the Authentication section above.
In this example, we request forecasts for two points: the Golden Gate Bridge and the Statue of Liberty. We request forecasts for 0-2 hours, starting from the latest initialization time.
In the returned response, forecasts are grouped first by point, then by forecast hour. Each forecast hour contains the forecasted values for various weather variables.
Initialization Times
This endpoint allows getting the available initialization times for point forecasts.
It doesn't accept any query string parameters.
It returns the following:
Name | Type | Description |
---|---|---|
available | [string] | An array of ISO8601 timestamps of available initialization times for point forecasts, ordered from newest to oldest. |
latest | string | The ISO8601 timestamp of latest available initialization time for point forecasts. |
Example: Using the initialization times forecasts API
Here is an example of making a request to the initialization times forecasts API using Python and the wb_get_request
function from the Authentication section above.
In this example, we request to get the available initialization times for point forecasts.
The response includes a list of available initialization times formatted as ISO8601 timestamps. Initialization times are ordered from newest to oldest, with an additional entry indicating the latest initialization time.
2m temperature
This endpoint allows getting the gridded output of global 2m temperature forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
10m u-component of wind
This endpoint allows getting the gridded output of global 10m u-component of wind forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
10m v-component of wind
This endpoint allows getting the gridded output of global 10m v-component of wind forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
Mean sea level pressure
This endpoint allows getting the gridded output of global mean sea level pressure forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
500hPa geopotential
This endpoint allows getting the gridded output of global 500hPa geopotential forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
850hPa temperature
This endpoint allows getting the gridded output of global 850hPa temperature forecasts. These outputs are returned as a netCDF (.nc) file.
This will generally be a redirect to a presigned URL on S3, so you will need to follow the redirect to get the file. Only in the short time it takes for the file to be uploaded will it be served directly.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
time | string | An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time for which to get the forecast. This looks solely at the date and the hour; minutes and seconds are discarded. If there is no forecast available within an hour of the requested time, it will return a 404. |
Example: Using the gridded forecast API
Here is an example of making a request to the gridded forecast API using Python, again using the wb_get_request
function from the Authentication section above. This example queries for 2m temperature and uses the io and xarray libraries to process the response into an xarray dataset.
In this example, we request the 2m temperature forecast one week from the time that the script is run, at 00:00 UTC.
The returned dataset has three variables: latitude, longitude, and temperature_2m. The latitude and longitude variables are 1D arrays of the latitudes and longitudes of the grid points, respectively. The temperature_2m variable is a 2D array of the forecasted 2 meter temperatures at each grid point. The dataset contains additional metadata in the form of attributes.
Historical 2m temperature
This endpoint allows getting the historical output of global 2m temperature forecasts. These outputs are returned as a netCDF (.nc) file. If the requested forecast is not available, a 404 status code will be returned.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
initialization_time | ISO string | An ISO formatted date string representing the initialization time of the forecast. |
forecast_hour | number | How many hours after the run time the forecast is valid at. |
Historical 500hPa geopotential
This endpoint allows getting the historical output of global 500hPa geopotential forecasts. These outputs are returned as a netCDF (.nc) file. If the requested forecast is not available, a 404 status code will be returned.
This endpoint does not require authentication.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
initialization_time | ISO string | An ISO formatted date string representing the initialization time of the forecast. |
forecast_hour | number | How many hours after the run time the forecast is valid at. If unauthenticated, this must be a multiple of 24. |
Historical 500hPa wind u
This endpoint allows getting the historical output of global 500hPa wind u forecasts. These outputs are returned as a netCDF (.nc) file. If the requested forecast is not available, a 404 status code will be returned.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
initialization_time | ISO string | An ISO formatted date string representing the initialization time of the forecast. |
forecast_hour | number | How many hours after the run time the forecast is valid at. |
Historical 500hPa wind v
This endpoint allows getting the historical output of global 500hPa wind v forecasts. These outputs are returned as a netCDF (.nc) file. If the requested forecast is not available, a 404 status code will be returned.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
initialization_time | ISO string | An ISO formatted date string representing the initialization time of the forecast. |
forecast_hour | number | How many hours after the run time the forecast is valid at. |
Tropical Cyclones
This endpoint allows getting the predicted ground track of active tropical cyclones.
It accepts the following query string parameters:
Name | Type | Description |
---|---|---|
initialization_time | string | Optional. An ISO 8601 date string, supporting formats YYYYMMDDHH, YYYY-MM-DDTHH, and YYYY-MM-DDTHH:mm:ss., representing the time at which the forecast was made. This looks solely at the date and the hour; minutes and seconds are discarded. If nothing is provided, the latest forecast is used. |
basin | string | Optional. A string indicating the tropical cyclones basins to be filtered in the response. If not set, all tropical cyclones will be included. |
The basin parameter defines specific geographical regions where tropical cyclones are present:
Name | Type | Description |
---|---|---|
NA | string | North Atlantic Basin spanning from African Coast (20°E) to 140°W and Equator to 90°N. |
EP | string | Eastern Pacific Basin spanning from 140°W to 180°W and Equator to 90°N. |
WP | string | Western Pacific Basin spanning from 100°E to 180°E and Equator to 60°N. |
NI | string | North Indian Ocean Basin spanning from 45°E to 100°E and Equator to 90°N. |
SI | string | South-West Indian Ocean Basin spanning from 20°E to 90°E and 40°S to Equator. |
AU | string | Australian Region Basin spanning from 90°E to 160°E and 36°S to Equator. |
SP | string | South Pacific Basin spanning from 160°E to 120°W and 40°S to Equator. |
It returns an object (dictionary) with keys being tropical cyclone IDs and values being arrays of ground track points. Each ground track point is of the form:
Name | Type | Description |
---|---|---|
latitude | number | The latitude where the tropical cyclone is predicted to be |
longitude | number | The longitude where the tropical cyclone is predicted to be |
time | string | The ISO8601 timestamp of when this forecast point is valid |
Example: Using the tropical cyclones forecast API
Here is an example of making a request to the tropical cyclones forecast API using Python, again using the wb_get_request
function from the Authentication section above. This example queries for tropical cyclones and saves the response in a json file.
In this example, we request the tropical cyclones within Eastern Pacific basin for an initialization time .
The response is an object (dictionary) with keys being tropical cyclone IDs and values being arrays of ground track points.
Planned endpoints
The model produces a number of outputs that are not yet exposed in the API. These and other endpoints will eventually be added.
- Precipitation forecasts
- Cloud cover forecasts
- Ceiling and visibility forecasts
- Region forecasts, returning points for a large number of locations (eg population centers, METAR stations) in a single query
- Historical forecasts