curl --request GET \
--url https://api.aisa.one/apis/v1/openmeteo/climate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/openmeteo/climate"
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/climate', 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/climate",
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/climate"
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/climate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/openmeteo/climate")
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.5,
"longitude": 13.4,
"generationtime_ms": 3.4,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"daily_units": {
"time": "iso8601",
"temperature_2m_max": "°C",
"precipitation_sum": "mm"
},
"daily": {
"time": [
"2050-01-01"
],
"temperature_2m_max": [
6.9
],
"precipitation_sum": [
1.2
]
}
}Open-Meteo Climate (CMIP6)
Downscaled CMIP6 climate-change projections (daily) from 1950 to 2050.
curl --request GET \
--url https://api.aisa.one/apis/v1/openmeteo/climate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/openmeteo/climate"
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/climate', 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/climate",
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/climate"
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/climate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/openmeteo/climate")
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.5,
"longitude": 13.4,
"generationtime_ms": 3.4,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"daily_units": {
"time": "iso8601",
"temperature_2m_max": "°C",
"precipitation_sum": "mm"
},
"daily": {
"time": [
"2050-01-01"
],
"temperature_2m_max": [
6.9
],
"precipitation_sum": [
1.2
]
}
}start_date, end_date (each yyyy-mm-dd, within 1950-2050) and models are all required — models is a comma-separated list drawn from CMCC_CM2_VHR4, FGOALS_f3_H, HiRAM_SIT_HR, MRI_AGCM3_2_S, EC_Earth3P_HR, MPI_ESM1_2_XR, NICAM16_8S. Request daily variables such as temperature_2m_max, temperature_2m_mean or precipitation_sum; set disable_bias_correction=true for raw model output.
The response returns grid-cell metadata and a daily block with a time array, one array per variable, and a matching daily_units object.
Example: GET /apis/v1/openmeteo/climate?latitude=52.52&longitude=13.41&start_date=2020-01-01&end_date=2050-12-31&models=MRI_AGCM3_2_S,EC_Earth3P_HR&daily=temperature_2m_max,precipitation_sum.
Billing: per call, metered per request. Current prices are on aisa.one/api. 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
Grid-cell preference for the coordinate. Default land.
land, sea, nearest 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, wind_speed_10m_mean, wind_speed_10m_max, cloud_cover_mean, relative_humidity_2m_mean, shortwave_radiation_sum, pressure_msl_mean.
"temperature_2m_max,precipitation_sum"
Return raw model output without statistical bias correction. Default false.
End of the interval, yyyy-mm-dd (ISO 8601).
"2024-01-07"
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"
Required. Comma-separated climate models: CMCC_CM2_VHR4, FGOALS_f3_H, HiRAM_SIT_HR, MRI_AGCM3_2_S, EC_Earth3P_HR, MPI_ESM1_2_XR, NICAM16_8S.
"MRI_AGCM3_2_S,EC_Earth3P_HR"
Precipitation unit. Default mm.
mm, inch Start of the interval, yyyy-mm-dd (ISO 8601).
"2024-01-01"
Temperature unit. Default celsius.
celsius, fahrenheit Time output format. Default iso8601.
iso8601, unixtime Wind speed unit. Default kmh.
kmh, ms, mph, kn Response
Climate projection for the interval.
The response is of type object.