curl --request GET \
--url https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports', 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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports",
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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports"
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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports")
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[
{
"id": "2b6d0f4a-8c39-4e17-9f5a-1a7c3e9d6b28",
"periodYear": 2025,
"market": "DE",
"format": "lucid_de",
"reportType": "HJM1",
"systemOperatorId": "DE1234567890123",
"xsdVersion": "1.0",
"status": "generated",
"version": 1,
"supersedesId": null,
"snapshotHash": "9f2c4e6a8b0d1f3e5a7c9b2d4f6e8a0c1b3d5f7e9a2c4b6d8f0e1a3c5b7d9f2e",
"generatedAt": "2026-04-20T07:30:00.000Z"
}
]{
"error": "Validation failed",
"details": [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"address",
"street"
],
"message": "Address is required."
}
]
}{
"error": "Invalid or expired API key"
}{
"error": "Forbidden"
}{
"error": {
"code": "rate_limited",
"message": "…"
}
}{
"error": "Internal server error"
}List Volume Reports
List the generated reports, newest first. Metadata only — never the frozen computation. Filters and paging are optional; paging is applied after the filters. An invalid value for a known parameter is a 400; unrecognized parameter names are ignored. Requires packaging:read; customer workspace with the PPWR module enabled — see the guide.
curl --request GET \
--url https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports', 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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports",
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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports"
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://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.polygon-one.com/api/v1/ppwr/mengenmeldung/reports")
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[
{
"id": "2b6d0f4a-8c39-4e17-9f5a-1a7c3e9d6b28",
"periodYear": 2025,
"market": "DE",
"format": "lucid_de",
"reportType": "HJM1",
"systemOperatorId": "DE1234567890123",
"xsdVersion": "1.0",
"status": "generated",
"version": 1,
"supersedesId": null,
"snapshotHash": "9f2c4e6a8b0d1f3e5a7c9b2d4f6e8a0c1b3d5f7e9a2c4b6d8f0e1a3c5b7d9f2e",
"generatedAt": "2026-04-20T07:30:00.000Z"
}
]{
"error": "Validation failed",
"details": [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"address",
"street"
],
"message": "Address is required."
}
]
}{
"error": "Invalid or expired API key"
}{
"error": "Forbidden"
}{
"error": {
"code": "rate_limited",
"message": "…"
}
}{
"error": "Internal server error"
}Authorizations
API key generated in Settings > API Keys. Include as Authorization: Bearer <key>.
Query Parameters
2000 <= x <= 2100ISO alpha-2 (case-insensitive).
^[A-Z]{2}$Exactly one report per (periodYear, market, format) is generated — that is the one to download.
generated, superseded Maximum number of results to return (default 100, max 1000).
1 <= x <= 1000Number of results to skip for pagination.
x >= 0Comma-separated list of the resource's top-level keys to return (per element for a list), e.g. id,name; omit for the full body. Top-level only; whitespace is trimmed and duplicates count once. fields never adds keys: a selected optional key that is absent on a row stays absent. 400 when passed more than once, when empty, or when it names an unknown key (the error names it and lists the allowed ones).
Response
Reports, newest first
UUID of the report — what GET /api/v1/ppwr/mengenmeldung/{reportId}/xml takes.
Calendar year the report covers.
ISO alpha-2 market code.
One of: lucid_de, austria_edm, verpact_nl, ara_at, bdo_pl, miteco_es, conai_it.
The LUCID Meldungsart for lucid_de; worksheet registers always report ANNUAL. One of: HPM1, HMM1, HJM1, HNM1, HAM1, ANNUAL.
The dual system's LUCID number the volumes are reported under. Empty string for worksheet registers, which have no system operator.
The LUCID XML interface version the file was built against; worksheet-<n> for worksheet registers, which have no XSD.
generated | superseded
Version of the report within its (periodYear, market, format) scope; each regeneration increments it.
The report this one replaced, or null.
SHA-256 of the frozen snapshot.
When the report was generated (ISO 8601, UTC).