Creates aFRR bids for a given virtual asset.
Creates aFRR bids for a virtual asset
The endpoint expects a list of aFRR bids. For now, only a single bid per product is allowed.
If one (or more) bids have already been submitted for the product, they will be replaced by the newer submission.
Request body
The request body is a list of aFRR product bids you would like to place.
product:
- aFRR Energy: The 15-minute based product for which the bids are placed. It must be in the following format:
{{direction}}_{{quarterHourInDay}}, e.g.POS_001for a bid in the positive aFRR Energy market on the first quarter hour of the day (00:00-00:15 am). The final products on most days arePOS_096orNEG_096. The final products on the CET to CEST clock change day arePOS_092orNEG_092. The final products on the CEST to CET clock change day arePOS_100orNEG_100. - aFRR Capacity: The EFA-block based product for which the bids are placed. It must be in the following format:
{{direction}}_{{startEfaBlock}}_{{endEfaBlock}}, e.g.POS_00_04for a bid in the positive aFRR Capacity market for the first EFA block of the day (00:00-04:00 am). The sixth and final EFA block is POS/NEG_20_24.
deliveryDay: The delivery day of the bid. It must be in the format YYYY-MM-DD, e.g. 2026-05-30 (full day according to RFC3339).
bids: A list of individual bids for the product.
Each bid in the list contains the following fields whose contents can vary depending on the market:
offeredCapacity:
The offered capacity of the bid in kilowatts, e.g. 2000.
The value must be an integer multiple of 1 megawatt. Any non-integral part will be rounded down, e.g. 1000.5 is accepted and rounded down to 1000kW, whereas 1500 would be rejected.
capacityPrice:
The max price that can be bid into both markets is 15,000 Euros, the min price is -15,000 Euros. If you bid a positive price (> 0), you will be paid by the TSO. If you bid a negative price (< 0), you pay the TSO.
- aFRR Energy: This field is null.
- aFRR Capacity: The capacity price of the bid in EUR/MW/h, e.g.
100.00. This price is used to determine the position of the bid in the TSO’s merit order.
energyPrice:
The max price that can be bid into both markets is 15,000 Euros, the min price is -15,000 Euros. If you bid a positive price (> 0), you will be paid by the TSO. If you bid a negative price (< 0), you pay the TSO.
- aFRR Energy: The energy price of the bid in EUR/MWh, e.g.
100.00. This price is used to determine the position of the bid in the TSO’s merit order. - aFRR Capacity: The energy price of the 16 implicit aFRR Energy bids in EUR/MWh, e.g.
100.00. When submitting a bid into the aFRR Capacity market, it is mandatory to place 16 implicit aFRR Energy bids covering the 4-hour duration of the Capacity bid. This is done by providing a mandatoryenergyPriceon each Capacity bid. Each of the 16 Energy bids will have the sameofferedCapacityas the corresponding Capacity bid. These Energy bids can still be updated after the Capacity bid has received a result. However, if the Capacity bid was accepted, theofferedCapacityof the Energy bids cannot be reduced. If the Capacity bid is rejected, the implicit Energy bids are also rejected.
Bidding deadlines
aFRR Energy
All bids must be placed before the following deadline: 30 minutes before the delivery period, e.g. a bid for delivery period 15:30pm must be submitted by 15:00pm. Moreover, bids must be placed after 12:00pm CET/CEST on the day before delivery. If bids are made before that time, they are rejected.
aFRR Capacity
All bids must be placed before the following deadline: 8:40am CET/CEST on the day before delivery. The auction opens a week before the delivery day.
Determining available bidding capacity
Validation 1 and 2 must be passed, or the bid will be rejected.
Validation 1: Available positive and negative aFRR timeseries
The offeredCapacity for aFRR bids at any given point in time must be lower than or equal to the available positive or negative capacity for aFRR of the virtual asset.
The value can be retrieved from the operationalData endpoint on the virtual asset as a 15 minute timeseries by requesting the operational data category afrrNegCapacityAvailable and afrrPosCapacityAvailable respectively.
Example:
afrrPosCapacityAvailablefrom 00:00-04:00 am: 4000 kWafrrNegCapacityAvailablefrom 00:00-04:00 am: 5000 kW- Remaining capacity for product
POS_00_04: 4000 kW - Remaining capacity for products
POS_001-POS_016: 4000 kW - Remaining capacity for product
NEG_00_04: 5000 kW - Remaining capacity for products
NEG_001-NEG_016: 5000 kW
Validation 2: Max total ancillary capacity timeseries
The offeredCapacity for aFRR bids at any given point in time must also take into account bids that have already been placed in the FCR market for the same period so as not to exceed the max total ancillary capacity of the virtual asset.
An FCR bid has both a positive and negative product direction and therefore reduces the available max total capacity in both directions.
The max total ancillary capacity can be retrieved from the operationalData endpoint on the virtual asset as a 15 minute timeseries by requesting the operational data category maxTotalAncillaryCapacityChargeAvailable (negative direction) and maxTotalAncillaryCapacityDischargeAvailable (positive direction) respectively.
Example:
maxTotalAncillaryCapacityDiscargeAvailable: 5000 kWmaxTotalAncillaryCapacityChargeAvailable: 4000 kW- FCR bid placed for product
NEGPOS_00_04: 3000 kW - Remaining capacity for product
POS_00_04: 2000 kW (5000 - 3000) - Remaining capacity for products
POS_001-POS_016: 2000 kW (5000 - 3000) - Remaining capacity for product
NEG_00_04: 1000 kW (5000 - 4000) - Remaining capacity for products
NEG_001-NEG_016: 1000 kW (5000 - 4000)
Deleting bids
To delete a bid, set the bid body as an empty array:
[
{
"bids": [],
"deliveryDay": "2026-04-10",
"product": "POS_00_04"
}
]
Adjustment of virtual asset blocks
Once a valid bid has been submitted, a new aFRR block ("market":"AFRR") is added to the virtual asset.
The block will cover the duration of the whole virtual asset.
Inside the block’s power capacity timeseries, the powerCapacity is updated to value of the bid’s offeredCapacity for the delivery period of the product you bid on.
At the same time, the powerCapacity of the wholesale block ("market":"WHOLESALE") for the delivery period of the product you bid on is reduced by the offeredCapacity.
Both the aFRR and the wholesale block will be adjusted according to the incoming bid results.
E.g. if a bid is rejected, the powerCapacity is removed from the aFRR block and added to the wholesale block.
Response format
Returns a JSON representation of the created aFRR product bids identical to the request body, except for one additional field:
productDateCode: The productDateCode in the response references a specific product on a given delivery day: e.g. 2025-01-01_POS_00_04. This “product-date-code” can be used to update the bid individually through the PUT endpoint.
Headers
Access token
Path Parameters
Organisation ID
Virtual Asset ID
Body
Bids to be created
Response
Created