curl --request POST \
--url https://api.iklim.co/v1/forecasts/hourly \
--header 'Content-Type: application/json' \
--data '
{
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"metrics": [
"TEMPERATURE",
"WIND_SPEED"
],
"forecastDays": 7,
"startTime": 1746454091000,
"solarPanelTiltForRadiation": 45,
"solarPanelAzimuthForRadiation": 0
}
'import requests
url = "https://api.iklim.co/v1/forecasts/hourly"
payload = {
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"metrics": ["TEMPERATURE", "WIND_SPEED"],
"forecastDays": 7,
"startTime": 1746454091000,
"solarPanelTiltForRadiation": 45,
"solarPanelAzimuthForRadiation": 0
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
location: {lng: 32.857358, lat: 39.93504},
metrics: ['TEMPERATURE', 'WIND_SPEED'],
forecastDays: 7,
startTime: 1746454091000,
solarPanelTiltForRadiation: 45,
solarPanelAzimuthForRadiation: 0
})
};
fetch('https://api.iklim.co/v1/forecasts/hourly', 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.iklim.co/v1/forecasts/hourly",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'location' => [
'lng' => 32.857358,
'lat' => 39.93504
],
'metrics' => [
'TEMPERATURE',
'WIND_SPEED'
],
'forecastDays' => 7,
'startTime' => 1746454091000,
'solarPanelTiltForRadiation' => 45,
'solarPanelAzimuthForRadiation' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.iklim.co/v1/forecasts/hourly"
payload := strings.NewReader("{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.iklim.co/v1/forecasts/hourly")
.header("Content-Type", "application/json")
.body("{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.iklim.co/v1/forecasts/hourly")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}"
response = http.request(request)
puts response.read_body{
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"timezone": "Europe/Istanbul",
"elevation": 897.5,
"weatherIconUrlBase": "https://api-test.iklim.co/v1/weather-icons",
"metricForecasts": [
{
"metric": "TEMPERATURE",
"unit": "°C",
"forecasts": [
{
"time": "2025-04-14T16:58:22Z",
"isDay": true,
"value": 23.5,
"icon": "sunny"
}
]
}
],
"warnings": [
"The provided metric is not valid for this request: TEMPERATURE_SUM"
]
}Hourly Forecast Operation
Returns hour-by-hour weather metrics for the requested location and time span.
curl --request POST \
--url https://api.iklim.co/v1/forecasts/hourly \
--header 'Content-Type: application/json' \
--data '
{
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"metrics": [
"TEMPERATURE",
"WIND_SPEED"
],
"forecastDays": 7,
"startTime": 1746454091000,
"solarPanelTiltForRadiation": 45,
"solarPanelAzimuthForRadiation": 0
}
'import requests
url = "https://api.iklim.co/v1/forecasts/hourly"
payload = {
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"metrics": ["TEMPERATURE", "WIND_SPEED"],
"forecastDays": 7,
"startTime": 1746454091000,
"solarPanelTiltForRadiation": 45,
"solarPanelAzimuthForRadiation": 0
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
location: {lng: 32.857358, lat: 39.93504},
metrics: ['TEMPERATURE', 'WIND_SPEED'],
forecastDays: 7,
startTime: 1746454091000,
solarPanelTiltForRadiation: 45,
solarPanelAzimuthForRadiation: 0
})
};
fetch('https://api.iklim.co/v1/forecasts/hourly', 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.iklim.co/v1/forecasts/hourly",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'location' => [
'lng' => 32.857358,
'lat' => 39.93504
],
'metrics' => [
'TEMPERATURE',
'WIND_SPEED'
],
'forecastDays' => 7,
'startTime' => 1746454091000,
'solarPanelTiltForRadiation' => 45,
'solarPanelAzimuthForRadiation' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.iklim.co/v1/forecasts/hourly"
payload := strings.NewReader("{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.iklim.co/v1/forecasts/hourly")
.header("Content-Type", "application/json")
.body("{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.iklim.co/v1/forecasts/hourly")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"location\": {\n \"lng\": 32.857358,\n \"lat\": 39.93504\n },\n \"metrics\": [\n \"TEMPERATURE\",\n \"WIND_SPEED\"\n ],\n \"forecastDays\": 7,\n \"startTime\": 1746454091000,\n \"solarPanelTiltForRadiation\": 45,\n \"solarPanelAzimuthForRadiation\": 0\n}"
response = http.request(request)
puts response.read_body{
"location": {
"lng": 32.857358,
"lat": 39.93504
},
"timezone": "Europe/Istanbul",
"elevation": 897.5,
"weatherIconUrlBase": "https://api-test.iklim.co/v1/weather-icons",
"metricForecasts": [
{
"metric": "TEMPERATURE",
"unit": "°C",
"forecasts": [
{
"time": "2025-04-14T16:58:22Z",
"isDay": true,
"value": 23.5,
"icon": "sunny"
}
]
}
],
"warnings": [
"The provided metric is not valid for this request: TEMPERATURE_SUM"
]
}Body
Geographic point to query forecasts for
Show child attributes
Show child attributes
Metrics requested for the hourly forecast endpoint. Allowed values: WEATHER_ICON, TEMPERATURE, APPARENT_TEMPERATURE, HUMIDITY, CLOUD_COVER, WIND_SPEED, WIND_GUSTS, WIND_DIRECTION, SNOWFALL, PRECIPITATION, PRECIPITATION_PROBABILITY, REF_EVAPORATION_TRANSPIRATION_ET0, DEW_POINT, SOIL_TEMPERATURE, SOIL_MOISTURE, VISIBILITY, GLOBAL_TILTED_RADIATION_GTI, DIRECT_NORMAL_IRRADIANCE_DNI, SHORTWAVE_SOLAR_RADIATION_GHI
1WEATHER_ICON, TEMPERATURE, TEMPERATURE_AVG, TEMPERATURE_MIN, TEMPERATURE_MAX, APPARENT_TEMPERATURE, APPARENT_TEMPERATURE_AVG, APPARENT_TEMPERATURE_MIN, APPARENT_TEMPERATURE_MAX, HUMIDITY, HUMIDITY_AVG, HUMIDITY_MIN, HUMIDITY_MAX, CLOUD_COVER, CLOUD_COVER_AVG, CLOUD_COVER_MIN, CLOUD_COVER_MAX, WIND_SPEED, WIND_SPEED_AVG, WIND_SPEED_MIN, WIND_SPEED_MAX, WIND_GUSTS, WIND_GUSTS_AVG, WIND_GUSTS_MIN, WIND_GUSTS_MAX, WIND_DIRECTION, SNOWFALL, PRECIPITATION, PRECIPITATION_PROBABILITY, PRECIPITATION_PROBABILITY_AVG, PRECIPITATION_PROBABILITY_MIN, PRECIPITATION_PROBABILITY_MAX, REF_EVAPORATION_TRANSPIRATION_ET0, REF_EVAPORATION_TRANSPIRATION_ET0_SUM, DEW_POINT, DEW_POINT_AVG, DEW_POINT_MIN, DEW_POINT_MAX, SOIL_TEMPERATURE, SOIL_MOISTURE, GLOBAL_TILTED_RADIATION_GTI, DIRECT_NORMAL_IRRADIANCE_DNI, SHORTWAVE_SOLAR_RADIATION_GHI, SHORTWAVE_RADIATION_SUM, VISIBILITY, VISIBILITY_AVG, VISIBILITY_MIN, VISIBILITY_MAX ["TEMPERATURE", "WIND_SPEED"]
Maximum number of days to return (1-14)
1 <= x <= 147
Optional epoch milliseconds that mark the start of the forecast horizon
1746454091000
Panel tilt angle in degrees used to calculate solar radiation metrics
45
Panel azimuth angle in degrees used to calculate solar radiation metrics
0
Response
Hourly forecast data successfully retrieved.
Location resolved for the forecast
Show child attributes
Show child attributes
IANA timezone identifier used for timestamps
"Europe/Istanbul"
Elevation of the requested location in meters
897.5
Base URL that can be used to fetch weather icons
"https://api-test.iklim.co/v1/weather-icons"
Metric forecasts returned in the response
Show child attributes
Show child attributes
Informational warnings returned for the request
[
"The provided metric is not valid for this request: TEMPERATURE_SUM"
]