producers
List unavailabilities for a producer plant.
Returns all availability limitations (unavailabilities) for the plant tied to the producer contract.
GET
/
v3
/
producers
/
{userID}
/
contracts
/
{contractID}
/
feed_limitations
/
List unavailabilities for a producer plant.
curl --request GET \
--url https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/import requests
url = "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/', 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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
req, _ := http.NewRequest("GET", url, nil)
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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"limitation_id": 42,
"start": "2026-01-01T00:00:00Z",
"end": "2026-01-01T12:00:00Z",
"availability_type": "cap",
"value": 5000,
"unit": "W",
"reason_type": "technical",
"reason_description": "maintenance due broken solar panel"
}
]Query Parameters
to fiter only limitations which are valid after this timestamp
to fiter only limitations which are valid before this timestamp
Response
200 - application/json
The timestamp when the feed limitation begins
The timestamp when the feed limitation ends
Is the feed capped (cannot feed more than) or scaled (a part of the plant is not available)?
cap- capscale- scale
Available options:
cap, scale value of the feed limitation, for unit % between 0-100, for unit W up to plant capacity
% for scaled feed limitation, W for capped feed limitation
%- %W- W
Available options:
%, W classification on limitation reason
technical- technicaleconomic- economicredispatch- redispatchweather-dependent- weather-dependentother- other
Available options:
technical, economic, redispatch, weather-dependent, other short description to clarify limitation
⌘I
List unavailabilities for a producer plant.
curl --request GET \
--url https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/import requests
url = "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/', 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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
req, _ := http.NewRequest("GET", url, nil)
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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"limitation_id": 42,
"start": "2026-01-01T00:00:00Z",
"end": "2026-01-01T12:00:00Z",
"availability_type": "cap",
"value": 5000,
"unit": "W",
"reason_type": "technical",
"reason_description": "maintenance due broken solar panel"
}
]
