EBXv1

API reference

Run API demo

Run a simplified version of our API against a simulated asset under real market conditions. No integration needed. Make the right calls and see what you could have earned on the market today!

Your starting point

BESS_01 is a 10 MW, 20 MWh battery already integrated into the EBX Platform, with live and steady telemetry. It is prequalified for negative aFRR only, so you earn money by absorbing energy from the grid.

How our market simulation worksRead this firstHide

The demo replays two real days of the German aFRR market. Here's how that works:

BIDDING DAY · 5 AUG 2026The real aFRR capacity auction closes at 09:00 CEST on the day before delivery, and results are published shortly afterwards. Bids are ranked in a merit order until demand is met, so the marginal price of each 4-hour block and direction decides which of your blocks are awarded. Remuneration is pay-as-bid: an awarded block earns your own capacity bid price.DELIVERY DAY · 6 AUG 2026A capacity award obliges you to offer the awarded volume as energy in every 15-minute period of that block. The real activation prices of the delivery day, and whether the system actually needed positive or negative aFRR, decide which of your energy bids are called. Activated energy is settled at the marginal price of that quarter-hour and direction, not at your bid price.

Why we replay past days: capacity is auctioned and cleared the day before delivery, energy bids close only 25 minutes before each 15-minute delivery period, and activation happens in real time within it. A complete set of real results therefore exists only once the delivery day has passed. Replaying dates in the past (5 and 6 August) lets us demo genuine market outcomes straight away.

Step 1

Check your asset status

Everything starts from the physical state of your asset. Read how much power and energy it has available before you commit anything to the market.

01

Check the asset

GET
/v1/assets/{asset_id}/stateRead the asset state: power, energy available to charge, availability.

How does this work?

Available charging power and headroom are the physical ceiling on what you can offer: power caps the MW per block, headroom caps the MWh you can charge before the battery is full.

Step 2

Bid in the market

Bid negative aFRR capacity, then energy in the blocks you win. You can only offer what your asset is able to deliver, so its available power is your upper limit here. Finding the most profitable bid within that limit is a complex optimisation problem in practice.

02

Bid aFRR capacity

POST
/v1/assets/{asset_id}/markets/afrr/capacity/bidsBid negative aFRR capacity for each of the delivery day’s six 4-hour blocks.

How does this work?

Each block has a marginal price: you win wherever your bid is at or below it. German aFRR capacity is pay-as-bid, so you are paid your own price: bidding low wins more blocks but earns less per MW.

Hint: Capacity marginal prices of the previous day auction
0.48 €/MW/h
00–04
0.55 €/MW/h
04–08
26.07 €/MW/h
08–12
96.48 €/MW/h
12–16
30.15 €/MW/h
16–20
0.41 €/MW/h
20–24

YOUR INPUT

Set a capacity price and the power you offer for each 4-hour block. Use the reference prices above as a guide.

00–0404–0808–1212–1616–2020–24Price €/MW/hPower MW
COMMITTED IF FULLY ACTIVATED0.0 / 16.8 MWh

A bid is a commitment. Once a block is awarded the TSO can call your full offered power for all four hours, so every block you bid counts here in full, whether or not it is actually called.

Read the reference prices, set your price and power per block, then submit your bids.
03

Read the auction results

GET
/v1/assets/{asset_id}/markets/afrr/capacity/resultsCheck the auction outcome: which blocks you won, and at what price.

How does this work?

Your bids against the real marginal price of each block, as cleared on the day. You win every block where your price is at or below it, and are paid your own bid price for the capacity you reserved.

04

Bid aFRR energy

POST
/v1/assets/{asset_id}/markets/afrr/energy/bidsPlace aFRR energy bids for every 4-hour block you won.

How does this work?

A capacity award obliges you to offer energy in those blocks, at their full awarded power. The TSO activates the cheapest offers first, so a lower price means more activations and more MWh charged. Energy is paid at the period's marginal price. In reality you bid per 15-minute period; this demo simplifies that to one average price per 4-hour block.

Hint: Median and Peak activation price of the previous day
211 €/MWh
147 €/MWh
00–04
179 €/MWh
170 €/MWh
04–08
310 €/MWh
85 €/MWh
08–12
187 €/MWh
0 €/MWh
12–16
317 €/MWh
0 €/MWh
16–20
259 €/MWh
147 €/MWh
20–24

YOUR INPUT

Set an energy price for every block you were awarded. An award obliges its full power in every quarter-hour. Blocks you did not win are locked.

00–0404–0808–1212–1616–2020–24Price €/MWhPower MW· set by your award
COMMITTED IF FULLY ACTIVATED0.0 / 0.0 MWh

A bid is a commitment. Once a block is awarded the TSO can call your full offered power for all four hours, so every block you bid counts here in full, whether or not it is actually called.

Set your energy price in the awarded blocks, then submit your bids.

Step 3

Deliver & Monitor

Inside each awarded block, energy bids close 25 minutes before delivery, and the TSO activates your asset in real time when the grid needs it. EBX runs this end to end, so all that is left for you is to read the results and check the state your asset ends the day in.

05

Read the activations

GET
/v1/assets/{asset_id}/markets/afrr/energy/resultsCheck the aFRR energy auction outcome, and which periods the TSO called over the day.

How does this work?

Your bids against the real activations on the delivery day. You are called wherever your bid is at or below the activation price, and paid that marginal price. In reality you bid per 15-minute period; this demo simplifies that to one price per 4-hour block.

06

Check the asset again

GET
/v1/assets/{asset_id}/stateRead the asset state again and see where the delivery day left the battery.

How does this work?

Every activation charges the battery. What the API returns here is where the day leaves you: the headroom you have left is the ceiling on tomorrow’s bids, and every MWh cycled through the battery counts toward its degradation. The ideal optimisation maximises revenue per cycle.

Step 4

Settle

One day after delivery, EBX publishes preliminary figures per market. The official TSO settlement can take up to a month to arrive.

07

Check the settlement

GET
/v1/settlementsSee the preliminary settlement for the day you bid and delivered.

How does this work?

Capacity is paid for the award whether or not you were activated; energy is paid for what you actually delivered. Quality deductions appear only after a delivery break.

Send feedback

This goes straight to the docs team on Slack, with the page you are on. It is not attributed to you, so say who you are if you would like an answer.

0/2000