curl --request GET \
--url https://api.aisa.one/apis/v1/openmeteo/historical-forecast \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/openmeteo/historical-forecast"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/openmeteo/historical-forecast', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/openmeteo/historical-forecast",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/openmeteo/historical-forecast"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/openmeteo/historical-forecast")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/openmeteo/historical-forecast")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"latitude": 52.52,
"longitude": 13.41,
"generationtime_ms": 0.8,
"utc_offset_seconds": 0,
"timezone": "GMT",
"elevation": 38,
"hourly_units": {
"time": "iso8601",
"temperature_2m": "°C",
"precipitation": "mm"
},
"hourly": {
"time": [
"2023-06-01T00:00"
],
"temperature_2m": [
14.2
],
"precipitation": [
0
]
}
}Historical Forecast
Archived past runs of the high-resolution forecast models.
curl --request GET \
--url https://api.aisa.one/apis/v1/openmeteo/historical-forecast \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/openmeteo/historical-forecast"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/openmeteo/historical-forecast', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/openmeteo/historical-forecast",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/openmeteo/historical-forecast"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/openmeteo/historical-forecast")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/openmeteo/historical-forecast")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"latitude": 52.52,
"longitude": 13.41,
"generationtime_ms": 0.8,
"utc_offset_seconds": 0,
"timezone": "GMT",
"elevation": 38,
"hourly_units": {
"time": "iso8601",
"temperature_2m": "°C",
"precipitation": "mm"
},
"hourly": {
"time": [
"2023-06-01T00:00"
],
"temperature_2m": [
14.2
],
"precipitation": [
0
]
}
}start_date and end_date (yyyy-mm-dd) are required and select the archived interval. The variable model matches the forecast endpoint: request fields with hourly and/or daily lists.
The response returns grid-cell metadata and the requested resolution blocks, each with a time array, one array per variable, and a matching *_units object.
Example: GET /apis/v1/openmeteo/historical-forecast?latitude=52.52&longitude=13.41&start_date=2023-06-01&end_date=2023-06-07&hourly=temperature_2m,precipitation.
Billing: $0.00015 per call (150 micros USD), metered per request. All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa /apis/* endpoint); AIsa handles provider access.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
WGS84 latitude of the location. Multiple coordinates can be comma-separated.
"52.52"
WGS84 longitude of the location (negative for the Americas). Multiple coordinates can be comma-separated.
"13.41"
Start of the interval, yyyy-mm-dd (ISO 8601).
"2024-01-01"
End of the interval, yyyy-mm-dd (ISO 8601).
"2024-01-07"
Comma-separated list of hourly variables to return. Common values: temperature_2m, relative_humidity_2m, dew_point_2m, apparent_temperature, precipitation, rain, showers, snowfall, weather_code, pressure_msl, cloud_cover, wind_speed_10m, wind_direction_10m, wind_gusts_10m, shortwave_radiation, visibility.
"temperature_2m,precipitation,wind_speed_10m"
Comma-separated list of daily aggregation variables to return. Requires timezone. Common values: temperature_2m_max, temperature_2m_min, temperature_2m_mean, precipitation_sum, rain_sum, snowfall_sum, weather_code, sunrise, sunset, sunshine_duration, wind_speed_10m_max, uv_index_max.
"temperature_2m_max,temperature_2m_min,precipitation_sum"
Manual elevation (meters). Defaults to a 90m DEM.
"38"
Temperature unit. Default celsius.
celsius, fahrenheit Wind speed unit. Default kmh.
kmh, ms, mph, kn Precipitation unit. Default mm.
mm, inch Time output format. Default iso8601.
iso8601, unixtime Comma-separated forecast models to retrieve archived runs for. Default best match.
"best_match"
IANA time zone name (e.g. Europe/Berlin) or auto to resolve from coordinates. Defaults to GMT.
"Europe/Berlin"
Grid-cell preference for the coordinate. Default land.
land, sea, nearest Response
Archived forecast for the interval.
The response is of type object.