API reference
Asset reports
The daily report for one UTC day: aFRR activations, dispatch overrides, unavailabilities, alarms and settled aFRR capacity revenue. The performance timeline buckets activation metrics and settled capacity revenue over a window of up to 90 days.
GET/v1/assets/{asset_id}/reports/daily
Daily operational report for an asset
report.read
Required scopes: report.read
Return everything this asset did on one UTC calendar day.
activations: every aFRR dispatch event with fill rate and totals.dispatch_overrides: limit and immediate-dispatch changes recorded that day.unavailabilitiesandalarms: what was declared and what fired.earnings.afrr.capacity_revenue_eur: settled aFRR capacity revenue for the day, read from the latest settlement blocks (preliminary or final).nullmeans no settlement result exists yet, not zero. Energy revenue isnullpending the settlement contract; per-activation capacity revenue is never attributed.
date defaults to today (UTC). Today's report is partial by definition.
Path parameters
- asset_idREQUIRED
- stringThe ID of the asset
Query parameters
- date
- string<date>
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/reports/daily" \
-H "Authorization: Bearer $EBX_TOKEN"import httpx
r = httpx.get(
"https://api.ebx.energy/v1/assets/DE_BESS_01/reports/daily",
headers={"Authorization": f"Bearer {token}"},
)
print(r.json())const res = await fetch("https://api.ebx.energy/v1/assets/DE_BESS_01/reports/daily", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await res.json();{
"asset_id": "<string>",
"date": "<string>",
"activations": {
"count": 0,
"fill_rate_pct": 0,
"total_requested": 0,
"total_dispatched": 0,
"filtered_count": 0,
"events": [
{
"activation_id": "<string>",
"dispatch_slot_utc": "2026-10-22T20:30:00Z",
"dispatch_category": "<string>",
"planned_set_power": 0,
"set_power": 0,
"accepted": 0,
"outcome": "<string>",
"filter_reason": "<string>"
}
]
},
"dispatch_overrides": [
{
"event_type": "<string>",
"event_id": "<string>",
"created_at_utc": "2026-10-22T20:30:00Z",
"action": "<string>",
"outcome": "<string>",
"details": "<string>"
}
],
"unavailabilities": [
{
"event_id": "<string>",
"start_at_utc": "2026-10-22T20:30:00Z",
"end_at_utc": "2026-10-22T20:30:00Z",
"action": "<string>",
"outcome": "<string>"
}
],
"alarms": {
"count": 0,
"events": [
{
"event_id": "<string>",
"alarm_id": "<string>",
"severity": "<string>",
"action": "<string>",
"opened_at_utc": "2026-10-22T20:30:00Z",
"resolved_at_utc": "2026-10-22T20:30:00Z"
}
]
},
"earnings": {
"total_revenue_eur": 0,
"afrr": {
"capacity_revenue_eur": 0,
"energy_revenue_eur": 0,
"by_activation": [
{
"activation_id": "<string>",
"dispatch_slot_utc": "2026-10-22T20:30:00Z",
"dispatch_category": "<string>",
"accepted": 0,
"capacity_price": 0,
"capacity_revenue_eur": 0,
"energy_price": 0,
"energy_revenue_eur": 0
}
]
},
"fcr": null
}
}- 401no valid token
- 403scope missing
- 404unknown or not visible
- 422validation failed
- 429rate limited
GET/v1/assets/{asset_id}/reports/performance
Performance timeline with settled capacity revenue for an asset
report.read
Required scopes: report.read
Return activation performance bucketed by granularity for [start_time, end_time).
Each period carries activation counts, planned vs dispatched power, fill rate and the settled aFRR capacity revenue of the settlement blocks starting in that period. Periods with settled revenue but no activations are included, so idle awarded blocks are not hidden. Revenue is null where no settlement result exists.
Defaults to the last 24 hours; maximum window is 90 days.
Path parameters
- asset_idREQUIRED
- stringThe ID of the asset
Query parameters
- start_time
- string<date-time>Start time for filtering results
- end_time
- string<date-time>End time for filtering results
- granularity
- enum
fifteen_minuteshourlydaily
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/reports/performance" \
-H "Authorization: Bearer $EBX_TOKEN"import httpx
r = httpx.get(
"https://api.ebx.energy/v1/assets/DE_BESS_01/reports/performance",
headers={"Authorization": f"Bearer {token}"},
)
print(r.json())const res = await fetch("https://api.ebx.energy/v1/assets/DE_BESS_01/reports/performance", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await res.json();{
"asset_id": "<string>",
"granularity": "fifteen_minutes",
"periods": [
{
"period_start": "2026-10-22T20:30:00Z",
"granularity": "fifteen_minutes",
"activation_count": 0,
"total_planned": 0,
"total_dispatched": 0,
"avg_accepted": 0,
"fill_rate_pct": 0,
"filtered_count": 0,
"afrr_capacity_revenue_eur": 0,
"afrr_energy_revenue_eur": 0,
"fcr_pos_capacity_revenue_eur": 0,
"fcr_neg_capacity_revenue_eur": 0
}
]
}- 401no valid token
- 403scope missing
- 404unknown or not visible
- 422validation failed
- 429rate limited