curl --request GET \
--url https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations"
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/market-access/v1alpha1/timeseries/aggregate-allocations', 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/market-access/v1alpha1/timeseries/aggregate-allocations",
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/market-access/v1alpha1/timeseries/aggregate-allocations"
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/market-access/v1alpha1/timeseries/aggregate-allocations")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations")
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{
"values": [
{
"external_id": "<string>",
"finality": "final",
"flow_direction": "consumption",
"isp_resolution_minutes": 123,
"isp_time": "2023-11-07T05:31:56Z",
"known_at": "2023-11-07T05:31:56Z",
"quality": "calculated",
"volume_wh": 123
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}List Aggregate Allocations
List aggregate allocations timeseries data matching the provided filters.
Note that this can return multiple values per ISP for the same dimensions, as the underlying storage is append-only. You tell those rows apart by looking at the finality and known_at. If you are training a model this allows you to train the model on data that was known at the time the model will be running, avoiding training it on data that is “from the future”. If you are doing controlling, this allows you to reason about how final the values are, so you can decide how much trust to put in the analysis you build on top.
curl --request GET \
--url https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations"
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/market-access/v1alpha1/timeseries/aggregate-allocations', 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/market-access/v1alpha1/timeseries/aggregate-allocations",
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/market-access/v1alpha1/timeseries/aggregate-allocations"
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/market-access/v1alpha1/timeseries/aggregate-allocations")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/market-access/v1alpha1/timeseries/aggregate-allocations")
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{
"values": [
{
"external_id": "<string>",
"finality": "final",
"flow_direction": "consumption",
"isp_resolution_minutes": 123,
"isp_time": "2023-11-07T05:31:56Z",
"known_at": "2023-11-07T05:31:56Z",
"quality": "calculated",
"volume_wh": 123
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Query Parameters
Inclusive lower bound on the settlement period start (RFC 3339).
Exclusive upper bound on the settlement period start (RFC 3339).
Areas to read, each one as kind:code, where kind is one of metering_grid_area, control_area or scheduling_area, for example scheduling_area:10YDE-RWENET---I. Omit this parameter to read every area.
500Flow directions to read. Omit to read both.
consumption, production Balance groups to read. Omit to read every group.
500Suppliers to read. Omit to read every supplier.
500Aggregator roles to read. Omit to read every role.
Available aggregator roles
-
grid_operator — Indicates the source of the aggregation is a grid operator.
-
transmission_operator — Indicates the source of the aggregation is a transmission system operator.
grid_operator, transmission_operator Allocation bases to read. Omit to read every basis.
The basis tells you where the energy data for an aggregation is coming from: Is it directly metered values from smart meters, or is it something calculated from some standard profile?
Available allocation basises
-
metered — Indicates this aggregation's data comes from directly metered energy, like from smart meters.
-
profiled — Indicates this aggregation's data is coming from a 'profile' of some kind, a pre-determined shape of consumption or production, usually coupled with some adjustment calculations, like adjusting for daily temperature or past annual metered consumption.
metered, profiled Market-specific dimensions to filter by, for markets where there are multiple separate aggregates that share the same common dimensions. Give each one as key:value, for example profile_scheme:sls.
500Response
Successful Response
Show child attributes
Show child attributes
Was this page helpful?