Combine forecast variables with arithmetic, functions, and aggregations. Select one or more forecast hours, or omit forecast_hours to calculate every available hour. The result uses the forecast's native grid. See About Custom Calculations for calculation syntax and examples.
| Name | Type | Description |
|---|---|---|
| model Required | string | Weather model to use. Supported values are wm-6 and wm-6-3km . |
| initialization_time Required | string | Forecast initialization time in ISO 8601 format. |
| calculation Required | string | Calculation text describing the operation to run at each grid cell. See About Custom Calculations for syntax and examples. |
| forecast_hours Optional | integer or integer[] | One nonnegative forecast hour or a nonempty list of nonnegative forecast hours. Omit to evaluate every available forecast hour. |
| lat_range Optional | [number, number] | Southern and northern bounds from −90 to 90. Omit to return every latitude. |
| lon_range Optional | [number, number] | Western and eastern bounds from −180 to 180. A western bound greater than the eastern bound selects across the dateline. Omit to return every longitude. |
The output uses the same grid as the input data. Geographic subsetting may include extra cells around the requested area's edges. Omit lat_range and lon_range for wm-6-3km .
| Selection | Example | Behavior |
|---|---|---|
| One hour | "forecast_hours": 6 | Evaluate the calculation at forecast hour 6. |
| Specific hours | "forecast_hours": [0, 6, 12] | Evaluate the calculation at the listed forecast hours. |
| All hours | Omit forecast_hours | Evaluate the calculation at every available forecast hour. |
Each selected forecast hour is calculated separately. Hours that do not have all required input data are skipped, and results for the remaining hours are returned. If no selected hour can be calculated, the request returns HTTP 400.
A successful response downloads a .zarr.zip file. The table below describes the arrays and metadata inside that file, rather than fields in a JSON response.
| Field | Description |
|---|---|
| result | A float32 array containing the calculated values. Its dimensions are forecast_hour × time_index × level_index × latitude × longitude . When all ensemble members remain separate, ensemble_member replaces level_index . |
| forecast_hour | The forecast hours included in result . |
| time_index , level_index | Positions in the time and atmospheric-level metadata for each evaluation. These dimensions are omitted or replaced when they do not apply. |
| ensemble_member | The ensemble member numbers represented by the separate calculated grids in the result. Present only when all members remain separate. |
| latitude , longitude | The location of the grid cells in result . Global grids use one-dimensional coordinate arrays; the 3 km grid uses two-dimensional coordinate arrays. |
| Root attributes | The model, initialization time, calculation text, and exact forecast inputs used. |
| evaluations | One entry for each successful forecast hour. Each entry contains forecast_hour and metadata describing the times, pressure levels, and ensemble members represented by that result. |
| anchor_errors | A list of skipped forecast hours. Each entry contains forecast_hour , code , and message . |
Forecast inputs keep their native units. The unit of the calculated values depends on the calculation’s inputs and operations.
Open the downloaded ZIP as a Zarr store, then read result together with its named dimensions and the root evaluations metadata.