Weather Ruse
API Reference

Forecast Endpoints

Reference for /point, /bbox, and /profile forecast endpoints.

GET /point

Returns a time-series forecast for a single geographic point.

https://api.weather-ruse.com/point

Parameters

ParameterTypeRequiredDefaultDescription
modelstringYesNWP model. See Models.
latfloatYesLatitude in decimal degrees (−90 to 90).
lonfloatYesLongitude in decimal degrees (−180 to 180).
varstringNo*Single variable name. Mutually exclusive with vars.
varsstringNo*Comma-separated list of variable names. Mutually exclusive with var.
init_timestringNolatest availableModel initialisation time, ISO 8601 (e.g. 2026-06-23T06:00:00).
lead_fromintegerNo0First lead hour to return.
lead_tointegerNomodel maximumLast lead hour to return (inclusive).

* One of var or vars is required.


Examples

Single variable

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/point\
?model=gfs\
&var=air_temperature_2m\
&lat=48.85\
&lon=2.35"

Response:

{
  "model": "gfs",
  "var": "air_temperature_2m",
  "units": "K",
  "lat": 48.85,
  "lon": 2.35,
  "init_time": "2026-06-23T06:00:00",
  "lead_hours": [0, 1, 2, 3],
  "values": [293.1, 292.8, 292.4, 291.9]
}

Multiple variables

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/point\
?model=gfs\
&vars=air_temperature_2m,total_precipitation\
&lat=48.85\
&lon=2.35"

Response:

{
  "model": "gfs",
  "lat": 48.85,
  "lon": 2.35,
  "variables": {
    "air_temperature_2m": {
      "units": "K",
      "init_time": "2026-06-23T06:00:00",
      "lead_hours": [0, 1, 2],
      "values": [293.1, 292.8, 292.4]
    },
    "total_precipitation": {
      "units": "kg m-2",
      "lead_hours": [0, 1, 2],
      "values": [0.0, 0.2, 1.4]
    }
  }
}

Pinning an init_time

Request data from a specific model run rather than the latest:

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/point\
?model=ecmwf-ifs\
&var=air_temperature_2m\
&lat=51.50\
&lon=-0.12\
&init_time=2026-06-23T00:00:00"

Windowed lead hours

Return only hours 24–48 of a GFS run:

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/point\
?model=gfs\
&var=wind_u_10m\
&lat=40.71\
&lon=-74.01\
&lead_from=24\
&lead_to=48"

Response schema

Single-variable (var=):

FieldTypeDescription
modelstringModel identifier.
varstringVariable name.
unitsstringCF-standard units string.
latfloatRequested latitude (may be snapped to grid).
lonfloatRequested longitude (may be snapped to grid).
init_timestringModel run time, ISO 8601.
lead_hoursinteger[]Lead hours corresponding to each value.
valuesnumber[]Forecast values, parallel to lead_hours.

Multi-variable (vars=):

Top-level fields are model, lat, lon. Variable data lives under variables.<name>, each with the same fields as the single-variable response minus the top-level var field.


GET /bbox

Returns a gridded forecast over a bounding box.

https://api.weather-ruse.com/bbox

Parameters

ParameterTypeRequiredDefaultDescription
modelstringYesNWP model.
varstringYesSingle variable name.
westfloatYesWestern longitude bound.
southfloatYesSouthern latitude bound.
eastfloatYesEastern longitude bound.
northfloatYesNorthern latitude bound.
init_timestringNolatest availableModel initialisation time, ISO 8601.
lead_hoursintegerNo0Single lead hour to return.
fmtstringNojsonResponse format: json or netcdf.

Examples

JSON grid

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/bbox\
?model=icon-eu\
&var=air_temperature_2m\
&west=2.0&south=48.5&east=3.0&north=49.0\
&lead_hours=6"

NetCDF download

curl -H "Authorization: Bearer $WR_KEY" \
  -o forecast.nc \
  "https://api.weather-ruse.com/bbox\
?model=gfs\
&var=wind_u_80m\
&west=-10.0&south=35.0&east=30.0&north=60.0\
&init_time=2026-06-23T06:00:00\
&lead_hours=12\
&fmt=netcdf"

When fmt=netcdf, the response body is a NetCDF4 binary. The Content-Disposition header carries a suggested filename.


GET /profile

Returns a vertical profile (pressure-level stack) for a single geographic point at a single lead hour.

https://api.weather-ruse.com/profile

Parameters

ParameterTypeRequiredDefaultDescription
modelstringYesNWP model.
latfloatYesLatitude.
lonfloatYesLongitude.
init_timestringNolatest availableModel initialisation time, ISO 8601.
lead_hoursintegerNo0Lead hour.
variablesstringYesComma-separated pressure-level variable names (see Variables — Pressure levels).

Example

curl -H "Authorization: Bearer $WR_KEY" \
  "https://api.weather-ruse.com/profile\
?model=gfs\
&lat=48.85\
&lon=2.35\
&lead_hours=12\
&variables=temperature_500hpa,geopotential_height_500hpa,u_wind_500hpa,v_wind_500hpa"

Error responses

All endpoints return JSON error bodies with a detail field.

StatusCodeDescription
401unauthorizedMissing or invalid API key.
402insufficient_creditsAccount has no available credits.
404not_foundRequested init_time or model run does not exist.
422validation_errorInvalid or missing parameter — see detail.
429rate_limit_exceededToo many requests. See Rate Limits.
500internal_errorModel data unavailable or processing error.

OGC EDR

Weather Ruse also exposes OGC API — Environmental Data Retrieval endpoints for tooling that consumes CoverageJSON.

GET /collections/{model}/position

Point query. Returns CoverageJSON.

GET /collections/ecmwf-ifs/position?coords=POINT(2.35 48.85)&parameter-name=air_temperature_2m
ParameterDescription
coordsWKT geometry — POINT(lon lat).
parameter-nameComma-separated variable names.
datetimeISO 8601 interval, e.g. 2026-06-23T00:00:00/2026-06-24T00:00:00.

GET /collections/{model}/area

Bounding box query. Returns CoverageJSON grid.

GET /collections/gfs/area?bbox=2.0,48.5,3.0,49.0&parameter-name=air_temperature_2m
ParameterDescription
bboxwest,south,east,north in decimal degrees.
parameter-nameComma-separated variable names.
datetimeISO 8601 interval.

On this page