curl "$NLEAD_BASE_URL/v1/process/market-partners/9900964000002/brp-status" \
--header "X-API-Key: $NLEAD_REPORT_KEY"import requests
url = "https://{host}/v1/process/market-partners/{key}/brp-status"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://{host}/v1/process/market-partners/{key}/brp-status', 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://{host}/v1/process/market-partners/{key}/brp-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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://{host}/v1/process/market-partners/{key}/brp-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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://{host}/v1/process/market-partners/{key}/brp-status")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/v1/process/market-partners/{key}/brp-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"bilanzierungsgebiete": [
{
"control_area": "Amprion",
"eic": "11YR00000002325T",
"name": "",
"zuordnung": {
"sent_at": "2026-08-25T15:30:39+02:00",
"valid_from": "2026-09-01",
"zeitreihentypen": [
"LGS",
"EGS",
"SLS",
"SES"
]
}
}
],
"control_areas": [
"Amprion"
],
"erstkontakt": {
"at": "2026-08-22T10:12:00+02:00",
"status": "confirmed"
},
"lookback_days": 90,
"mp_id": "9900146000008",
"name": "Stadtwerke Dreieich GmbH",
"nrr": {
"error": "",
"error_at": "",
"ok_at": "2026-08-25T15:15:09+02:00"
},
"partin": {
"ack_negative_at": "",
"ack_negative_reason": "",
"ack_positive_at": "2026-08-25T15:22:40+02:00",
"received_at": "2026-08-25T15:20:11+02:00",
"sent_at": "2026-08-25T15:15:07+02:00"
},
"queried": {
"key": "11YR00000002325T",
"resolved_by": "bilanzierungsgebiet"
},
"stand": {
"BDEW": "Stand: 15.08.2026"
},
"status": "complete",
"window": {
"begin": "2026-05-29T15:00:00",
"end": "2026-08-27T15:00:00"
},
"zuordnung": {
"ack_negative_at": "",
"ack_negative_reason": "",
"ack_positive_at": "2026-08-25T15:41:02+02:00",
"sent_at": "2026-08-25T15:30:39+02:00"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}BRP activation status for one DSO/MGA
How far the market-communication setup with one Netzbetreiber has progressed — everything your systems need to answer “is the BRP (Bilanzkreisverantwortlicher) active in this grid area yet?”.
Addressing the partner: pass either the Netzbetreiber’s MP-ID or
the EIC of any of its Bilanzierungsgebiete (MGA) — queried. resolved_by in the answer says which one matched, and the answer
always describes the whole partner with all of its MGAs.
Reading the answer: status is the derived overall state (see the
field’s value list). The four blocks explain it: erstkontakt (the
plain-mail first contact), partin (master-data exchange, both
directions), zuordnung (the Zuordnungsermächtigung stream) and nrr
(AS4 transport receipts). Timestamps are message dates; an empty
string means that signal has not been seen. When status is
rejected, the ack_negative_* fields name the stream and carry the
partner’s own reason. bilanzierungsgebiete lists every MGA with the
Zuordnungsermächtigung sent for it (null while none went out).
The verdicts are derived live from the MakoFlow outbox and inbox with exactly the same rules as the operator console, so this endpoint and the console can never disagree. A read-only report key is sufficient.
curl "$NLEAD_BASE_URL/v1/process/market-partners/9900964000002/brp-status" \
--header "X-API-Key: $NLEAD_REPORT_KEY"import requests
url = "https://{host}/v1/process/market-partners/{key}/brp-status"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://{host}/v1/process/market-partners/{key}/brp-status', 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://{host}/v1/process/market-partners/{key}/brp-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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://{host}/v1/process/market-partners/{key}/brp-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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://{host}/v1/process/market-partners/{key}/brp-status")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/v1/process/market-partners/{key}/brp-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"bilanzierungsgebiete": [
{
"control_area": "Amprion",
"eic": "11YR00000002325T",
"name": "",
"zuordnung": {
"sent_at": "2026-08-25T15:30:39+02:00",
"valid_from": "2026-09-01",
"zeitreihentypen": [
"LGS",
"EGS",
"SLS",
"SES"
]
}
}
],
"control_areas": [
"Amprion"
],
"erstkontakt": {
"at": "2026-08-22T10:12:00+02:00",
"status": "confirmed"
},
"lookback_days": 90,
"mp_id": "9900146000008",
"name": "Stadtwerke Dreieich GmbH",
"nrr": {
"error": "",
"error_at": "",
"ok_at": "2026-08-25T15:15:09+02:00"
},
"partin": {
"ack_negative_at": "",
"ack_negative_reason": "",
"ack_positive_at": "2026-08-25T15:22:40+02:00",
"received_at": "2026-08-25T15:20:11+02:00",
"sent_at": "2026-08-25T15:15:07+02:00"
},
"queried": {
"key": "11YR00000002325T",
"resolved_by": "bilanzierungsgebiet"
},
"stand": {
"BDEW": "Stand: 15.08.2026"
},
"status": "complete",
"window": {
"begin": "2026-05-29T15:00:00",
"end": "2026-08-27T15:00:00"
},
"zuordnung": {
"ack_negative_at": "",
"ack_negative_reason": "",
"ack_positive_at": "2026-08-25T15:41:02+02:00",
"sent_at": "2026-08-25T15:30:39+02:00"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
The partner's MP-ID (BDEW code or GLN), or the EIC Y code of any of its Bilanzierungsgebiete (MGA) — e.g. 9900146000008 or 11YR00000002325T
Query Parameters
How far back the MakoFlow outbox and inbox are evaluated for messages and acknowledgments
1 <= x <= 730Response
Successful Response
Activation state of the n:lead BKV with one Netzbetreiber.
Show child attributes
Show child attributes
The partner's MP-ID (BDEW code or GLN)
The partner's name
Derived overall state - identical to the Marktpartner overview. zugeordnet: the Zuordnungsermächtigung itself is positively acknowledged - the deliverable. complete: PARTIN out, business confirmation in, Zuordnungsermächtigung out but not yet acknowledged. established: confirmed, Zuordnung still missing. pending: traffic without a confirmation yet. rejected: a rejection stands unanswered in one of the streams (see the ack fields for which and why) - except that a PARTIN rejection alone does not paint the partner red while the Zuordnungsermächtigung is positively acknowledged: the working connection outweighs it, and the rejection stays visible in the PARTIN ack fields. contacted: only the Erstkontakt mail so far. none: no contact at all. ausgenommen: manually excluded from the BRP process (see ausnahme for the reason)
zugeordnet, complete, established, pending, rejected, contacted, none, ausgenommen Control areas the partner's MGAs belong to
The plain-mail first contact, tracked outside the EDIFACT channel.
Show child attributes
Show child attributes
The PARTIN exchange (partner master data), both directions.
All timestamps are the partner's MakoFlow message dates; an empty string means that signal has not been seen in the lookback window.
Show child attributes
Show child attributes
The Zuordnungsermächtigung (UTILMD PID 55071) stream.
Show child attributes
Show child attributes
AS4 transport receipts (non-repudiation of receipt).
Show child attributes
Show child attributes
Every MGA of the partner from the BDEW registry; empty for partners outside the registry (BIKO, ÜNB)
Show child attributes
Show child attributes
Evaluated MakoFlow window size
Show child attributes
Show child attributes
Edition of the underlying BDEW registry data, per source
Show child attributes
Show child attributes
Set when the partner is manually excluded from the BRP process - no automatic step targets them
Show child attributes
Show child attributes