curl --request GET \
--url https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day} \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}', 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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}",
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: <api-key>"
],
]);
$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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"delivery_day": "2023-12-25",
"unit": "MW",
"interval_count": 123,
"series": [
{
"kind": "production",
"values": [
123
],
"control_area": "50Hertz",
"malo": "<string>"
}
],
"total_production_mwh": 123,
"total_consumption_mwh": 123,
"input_hash": "<string>",
"source": "customer",
"processed": true,
"malo_mapping": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Forecast service unavailable"
}{
"detail": "Forecast service timed out"
}Read back stored forecast
Return exactly the series the last accepted submission for the delivery day carried, plus the derived totals, the input_hash from the acknowledgment, and the processing state. What you read back is what a re-submission would replace.
Submissions with validate_only set store nothing, so they never appear here.
curl --request GET \
--url https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day} \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}', 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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}",
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: <api-key>"
],
]);
$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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/portfolio-forecasts/v1alpha1/submissions/{delivery_day}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"delivery_day": "2023-12-25",
"unit": "MW",
"interval_count": 123,
"series": [
{
"kind": "production",
"values": [
123
],
"control_area": "50Hertz",
"malo": "<string>"
}
],
"total_production_mwh": 123,
"total_consumption_mwh": 123,
"input_hash": "<string>",
"source": "customer",
"processed": true,
"malo_mapping": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Forecast service unavailable"
}{
"detail": "Forecast service timed out"
}Authorizations
Path Parameters
The delivery day, as a Europe/Berlin calendar day.
Response
The stored forecast.
One stored delivery day: exactly the series the last accepted submission carried, plus the derived totals and processing state.
MW: average power per quarter-hour. MWH: energy per quarter-hour.
MW, MWH Quarter-hours in the delivery day: 96 on a normal day, 92 on the spring-forward day, 100 on the fall-back day.
The series as submitted.
Show child attributes
Show child attributes
Total production energy for the delivery day, in MWh.
Total consumption energy for the delivery day, in MWh.
Content hash of the stored submission. Equals the input_hash of the acknowledgment that accepted it.
customer: a submitted forecast. generated: the forecast service built the day from mirrored data.
customer, generated True once the schedules for exactly this input were submitted downstream and accepted.
MaLo-to-control-area mapping as submitted.
Was this page helpful?