API Endpoints

Get Forecasting Metadata

get

Get information about available forecasting models.

Responses
200

Successful Response

application/json
get
/v1/forecasting
GET /v1/forecasting HTTP/1.1
Host: api.jua.ai
Accept: */*
200

Successful Response

{
  "available_models": [
    "aifs"
  ]
}

Get Available Init Times

get

Get list of available initialization times for a model.

Supported Models:

  • ept1_5, ept1_5_early, ept2, ept2_early, ept2_e, ept2_rr, aurora, aifs, ecmwf_ifs_single, icon_global

Unsupported Models:

  • ecmwf_ifs025_single, ecmwf_ifs025_ensemble, ecmwf_aifs025_single, ecmwf_aifs025_ensemble, meteofrance_arome_france_hd, gfs_global_single, gfs_global_ensemble, icon_eu, gfs_graphcast025

Using an unsupported model will return a 404 error with details about supported and unsupported models.

Path parameters
model_namestring · enumRequiredPossible values:
Responses
200

Successful Response

application/json
get
/v1/forecasting/{model_name}/forecasts/available_init_times
GET /v1/forecasting/{model_name}/forecasts/available_init_times HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "init_times": [
    "2025-12-07T20:17:29.309Z"
  ]
}

Get Latest Metadata

get

Get information about the latest forecast.

Path parameters
model_namestring · enumRequiredPossible values:
Query parameters
min_hours_availableany ofOptional

Minimum hours available for the forecast

integerOptional
or
nullOptional
use_new_namingbooleanOptional

Use new variable naming

Default: true
Responses
200

Successful Response

application/json
get
/v1/forecasting/{model_name}/forecasts/latest
GET /v1/forecasting/{model_name}/forecasts/latest HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "forecast_url": "text",
  "model": "aifs",
  "init_time": "2025-12-07T20:17:29.309Z",
  "available_forecasted_hours": 1,
  "available_variables": [
    "text"
  ],
  "available_ensemble_stats": [
    "text"
  ]
}

Get latest forecast for specific points, (max 5 points, 24 hours per query)

post

Get latest forecast for the selected model and specified points at a range of lead times.

Path parameters
model_namestring · enumRequiredPossible values:
Body

At the moment we allow querying multiple Coordinates for multiple lead times, and selecting variables of interest..

min_lead_timeintegerOptional

The start of the lead time range

Default: 0
max_lead_timeintegerOptional

The end of the lead time range (inclusive)

Default: 0
fullbooleanOptional

If true, returns the latest forecast with the full horizon available

Default: false
ensemble_statsany ofOptional

If provided, returns the ensemble statistics for the given variables

or
nullOptional
use_new_namingbooleanOptional

Use new variable naming

Default: false
Responses
200

Successful Response

application/json
post
/v1/forecasting/{model_name}/forecasts/latest
POST /v1/forecasting/{model_name}/forecasts/latest HTTP/1.1
Host: api.jua.ai
Content-Type: application/json
Accept: */*
Content-Length: 180

{
  "max_lead_time": 3,
  "min_lead_time": 0,
  "points": [
    {
      "lat": 47.1,
      "lon": 8.2
    },
    {
      "lat": -12.3,
      "lon": 3.4
    }
  ],
  "variables": [
    "air_temperature_at_height_level_2m",
    "wind_speed_at_height_level_100m"
  ]
}
{
  "forecast": {
    "model": "aifs",
    "id": "text",
    "init_time": "2025-12-07T20:17:29.309Z",
    "max_available_lead_time": 1,
    "available_variables": [
      "text"
    ],
    "available_ensemble_stats": [
      "mean"
    ],
    "times": [
      "2025-12-07T20:17:29.309Z"
    ],
    "points": [
      {
        "requested_latlon": {
          "lat": 1,
          "lon": 1
        },
        "returned_latlon": {
          "lat": 1,
          "lon": 1
        },
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "name": "text"
  }
}

Get Forecast Metadata By Init Time

get

Get information about a forecast for a specific initialization time.

Path parameters
model_namestring · enumRequiredPossible values:
init_timestring · date-timeRequired
Query parameters
use_new_namingbooleanOptional

Use new variable naming

Default: true
Responses
200

Successful Response

application/json
get
/v1/forecasting/{model_name}/forecasts/{init_time}
GET /v1/forecasting/{model_name}/forecasts/{init_time} HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "forecast_url": "text",
  "model": "aifs",
  "init_time": "2025-12-07T20:17:29.309Z",
  "available_forecasted_hours": 1,
  "available_variables": [
    "text"
  ],
  "available_ensemble_stats": [
    "text"
  ]
}

Get latest forecast for specific point

get

Get latest forecast for the selected model and specified points at a range of lead times.

Path parameters
model_namestring · enumRequiredPossible values:
latnumber · min: -90 · max: 90Required
lonnumber · min: -180 · max: 180Required
Query parameters
min_lead_timeintegerOptional

The start of the lead time range

Default: 0
max_lead_timeintegerOptional

The end of the lead time range (inclusive)

Default: 24
fullbooleanOptional

If true, returns the latest forecast with the full horizon available

Default: false
ensemble_statsany ofOptional

If provided, returns the ensemble statistics for the given variables

or
nullOptional
use_new_namingbooleanOptional

Use new variable naming

Default: false
Responses
200

Successful Response

application/json
get
/v1/forecasting/{model_name}/forecasts/latest/{lat},{lon}
GET /v1/forecasting/{model_name}/forecasts/latest/{lat},{lon} HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "forecast": {
    "model": "aifs",
    "id": "text",
    "init_time": "2025-12-07T20:17:29.309Z",
    "max_available_lead_time": 1,
    "available_variables": [
      "text"
    ],
    "available_ensemble_stats": [
      "mean"
    ],
    "times": [
      "2025-12-07T20:17:29.309Z"
    ],
    "points": [
      {
        "requested_latlon": {
          "lat": 1,
          "lon": 1
        },
        "returned_latlon": {
          "lat": 1,
          "lon": 1
        },
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "name": "text"
  }
}

Get forecast for specific init time and point

get

Get forecast for the selected model at specified initialization time and point at a range of lead times.

Path parameters
model_namestring · enumRequiredPossible values:
init_timestring · date-timeRequired
latnumber · min: -90 · max: 90Required
lonnumber · min: -180 · max: 180Required
Query parameters
min_lead_timeintegerOptional

The start of the lead time range

Default: 0
max_lead_timeintegerOptional

The end of the lead time range (inclusive)

Default: 24
fullbooleanOptional

If true, returns the latest forecast with the full horizon available

Default: false
ensemble_statsany ofOptional

If provided, returns the ensemble statistics for the given variables

or
nullOptional
use_new_namingbooleanOptional

Use new variable naming

Default: false
Responses
200

Successful Response

application/json
get
/v1/forecasting/{model_name}/forecasts/{init_time}/{lat},{lon}
GET /v1/forecasting/{model_name}/forecasts/{init_time}/{lat},{lon} HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "forecast": {
    "model": "aifs",
    "id": "text",
    "init_time": "2025-12-07T20:17:29.309Z",
    "max_available_lead_time": 1,
    "available_variables": [
      "text"
    ],
    "available_ensemble_stats": [
      "mean"
    ],
    "times": [
      "2025-12-07T20:17:29.309Z"
    ],
    "points": [
      {
        "requested_latlon": {
          "lat": 1,
          "lon": 1
        },
        "returned_latlon": {
          "lat": 1,
          "lon": 1
        },
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "name": "text"
  }
}

Get Static Options

get

Get static metadata for the market aggregates data, such as available models, variables, etc.

Responses
200

Successful Response

application/json
get
/v1/analytics/aggregates/static-options
GET /v1/analytics/aggregates/static-options HTTP/1.1
Host: api.jua.ai
Accept: */*
200

Successful Response

{
  "zones": [
    {
      "id": "text",
      "country": "text",
      "continent": "text",
      "label": "text",
      "available_weights": [
        "population"
      ]
    }
  ],
  "models": [
    {
      "id": "aifs",
      "available_weights": [
        "population"
      ]
    }
  ],
  "weights": [
    {
      "id": "population",
      "label": "text"
    }
  ],
  "variables": [
    {
      "id": "air_temperature_at_height_level_2m",
      "available_weights": [
        "population"
      ]
    }
  ],
  "countries": [
    {
      "id": "text",
      "label": "text",
      "continent": "text"
    }
  ],
  "continents": [
    {
      "id": "text",
      "label": "text"
    }
  ]
}

Get Available Forecasts

get

Get a list of available forecasts per model.

Query parameters
min_init_timeany ofOptional
string · date-timeOptional
or
nullOptional
limitintegerOptionalDefault: 100
Responses
200

Successful Response

application/json
get
/v1/analytics/aggregates/available-forecasts
GET /v1/analytics/aggregates/available-forecasts HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "forecasts_per_model": {
    "ANY_ADDITIONAL_PROPERTY": [
      {
        "init_time": "2025-12-07T20:17:29.309Z",
        "available_weights": [
          "population"
        ]
      }
    ]
  }
}

Get Data

get

Get aggregated data for a given model, zone, init time, and variable.

Query parameters
modelstring · enumRequiredPossible values:
zonestringRequired
init_timestring · date-timeRequired
min_lead_timeintegerRequired
max_lead_timeintegerRequired
variablestring · enumRequired

Weather variable name with units: • air_temperature_at_height_level_2m: K • surface_temperature: K • dew_point_temperature_at_height_level_2m: K • relative_humidity_at_height_level_2m: % • air_pressure_at_mean_sea_level: Pa • surface_air_pressure: Pa • wind_speed_at_height_level_10m: m/s • wind_direction_at_height_level_10m: degrees • wind_speed_at_height_level_100m: m/s • wind_direction_at_height_level_100m: degrees • wind_speed_at_height_level_200m: m/s • wind_direction_at_height_level_200m: degrees • geopotential_at_pressure_level_50000Pa: m²/s² • eastward_wind_at_height_level_10m: m/s • northward_wind_at_height_level_10m: m/s • eastward_wind_at_height_level_100m: m/s • northward_wind_at_height_level_100m: m/s • surface_direct_downwelling_shortwave_flux_sum_1h: J/m² • surface_downwelling_longwave_flux_sum_1h: J/m² • surface_downwelling_shortwave_flux_sum_1h: J/m² • surface_downwelling_longwave_flux_sum_6h: J/m² • surface_downwelling_shortwave_flux_sum_6h: J/m² • surface_net_downward_longwave_flux_sum_1h: J/m² • surface_net_downward_shortwave_flux_sum_1h: J/m² • surface_net_downward_longwave_flux_sum_6h: J/m² • surface_net_downward_shortwave_flux_sum_6h: J/m² • cloud_area_fraction_at_entire_atmosphere: fraction (0-1) • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1) • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1) • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1) • precipitation_amount_sum_1h: mm • precipitation_amount_sum_3h: mm • precipitation_amount_sum_6h: mm • precipitation_amount_sum_12h: mm • precipitation_amount_sum_24h: mm

Possible values:
weightstring · enumRequiredPossible values:
Responses
200

Successful Response

application/json
get
/v1/analytics/aggregates/data
GET /v1/analytics/aggregates/data?model=aifs&zone=text&init_time=2025-12-07T20%3A17%3A29.309Z&min_lead_time=1&max_lead_time=1&variable=air_temperature_at_height_level_2m&weight=population HTTP/1.1
Host: api.jua.ai
Accept: */*
{
  "data": [
    {
      "model": "ept2",
      "zone": "text",
      "init_time": "2025-12-07T20:17:29.309Z",
      "lead_times": [
        1
      ],
      "valid_times": [
        "2025-12-07T20:17:29.309Z"
      ],
      "values": {
        "ANY_ADDITIONAL_PROPERTY": {
          "ANY_ADDITIONAL_PROPERTY": [
            1
          ]
        }
      }
    }
  ]
}

Last updated