These catalog endpoints tell you what you can request. Check them before building data URLs; don’t hard-code runs or product names.
Models
Returns an array with one entry per model or observation source. No account is needed.
[
{
"name": "rdps",
"default": false,
"prefix": "/models/rdps",
"forecast_hours": 85,
"forecast_hour_axis": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"products": 57
}
]
namestringModel ID, used in every other URL.
prefixstringPath prefix for this model’s endpoints.
forecast_hour_axisinteger[]What each hour index means: forecast hours for models, minutes since midnight for observation sources. See Runs and hours. The example above is truncated.
forecast_hoursintegerLength of forecast_hour_axis.
productsintegerNumber of products. List them with /products.
Coverage
Returns a GeoJSON FeatureCollection with each model’s footprint as a polygon, so you can tell which models cover a location. Each feature’s id is the model ID. Its properties include the latest run, the native grid type (rotated_lat_lon, lambert_conformal, polar_stereographic or geostationary), and the grid size as ny × nx.
Runs
Returns the model’s available runs, newest first:
{ "runs": ["20260924T120000Z", "20260924T060000Z", "20260924T000000Z", "20260923T180000Z"] }
Most models keep between two and four runs.
Products
Returns every field the model provides, with its unit and tile encoding:
{
"products": [
{
"name": "T2m",
"range": [250.0, 310.0],
"units": "K",
"encoding": {
"dtype": "int16",
"littleEndian": true,
"width": 256,
"height": 256,
"scale": 0.0146484375,
"offset": 280.0,
"nodata": -32768
},
"levels_hpa": null
},
{
"name": "ABSV_ISBL",
"range": [-0.0016, 0.0016],
"units": "s^-1",
"encoding": { "dtype": "int16", "littleEndian": true, "width": 256, "height": 256, "scale": 7.8125e-7, "offset": 0.0, "nodata": -32768 },
"levels_hpa": [850.0, 700.0, 500.0, 250.0]
}
]
}
namestringProduct name. Names are case-sensitive: T2m, not t2m.
unitsstring | nullUnit of decoded values. Most products use SI units (K, Pa, m/s, J/kg), but not all; always check. An empty string means the value has no unit.
range[number, number] | nullRange of values the tile encoding can represent. Values outside it are clamped to the nearest end.
encodingobjectHow to decode this product’s data tiles. Missing when range is null; those products can’t be served as tiles, only through point queries.
levels_hpanumber[] | nullFor products on pressure levels, the available levels in hPa. Choose one with the level parameter, which is an index into this array. null for single-level products.
Naming
Product names follow the source model’s conventions, so they vary between models. Some patterns:
| Pattern | Meaning | Examples |
|---|---|---|
…2m, …10m |
Near-surface fields | T2m, Td2m, RH2m, U10m, V10m |
…_ISBL |
Pressure levels (use level) |
T_ISBL, HGT_ISBL, U_ISBL, ABSV_ISBL |
| Lowercase | Computed by CSSL from model output | sb_cape, ml_cin, srh_0_1km, bulk_shear_0_6km, stp_index, theta_e |
Wind comes as separate U and V components. On some models, including HRDPS and RDPS, these are relative to the model grid rather than true north. See Grid-relative winds.