API reference
Market - Day-ahead
Endpoints tagged “Market - Day-ahead” in the API specification.
POST/v1/assets/{asset_id}/markets/day_ahead/bids
Submit day-ahead bids
market.write
Required scopes: market.write
Submit the complete set of day-ahead auction bids for an asset and delivery day.
The set replaces any earlier set for the same day. Bids are accepted until 11:40 Europe/Berlin on the day before delivery, and only for the next delivery day. Each bid covers one quarter-hour.
A set is checked as a whole. If any rule fails, nothing is stored and the response is 422 with BID_SET_REJECTED and one entry per violation. The earlier set stays live.
Send an idempotency_key so a retry after a timeout or a 503 cannot submit twice: the same key returns the original outcome.
Errors (detail.error):
GATE_CLOSED,DELIVERY_DAY_NOT_OPEN(409): outside the submission windowIDEMPOTENCY_CONFLICT(409): the key was used with a different setDAY_AHEAD_NOT_CONFIGURED(409): the asset is not set up for day-ahead tradingBID_SET_REJECTED(422): the set breaks one or more rules, including the trading limitMARKET_SERVICE_UNAVAILABLE(503): the outcome is unknown; retry with the sameidempotency_key
Path parameters
- asset_idREQUIRED
- string
Query parameters
- validate_only
- booleandefault falseRun every check and store nothing
Request body · required
- delivery_dayREQUIRED
- string<date>Delivery day (Europe/Berlin), which must be tomorrow
- idempotency_key
- stringOptional. Repeating a request with the same key returns the original outcome; the same key with a different set is rejected
- bidsREQUIRED
- array[object]1 to 100 bids, at most one per quarter-hour
curl -X POST "https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids" \
-H "Authorization: Bearer $EBX_TOKEN" \
-H "Content-Type: application/json" \
-d '{"delivery_day":"2026-10-23","idempotency_key":"<string>","bids":[{"start_time":"2026-01-01T00:00:00Z","side":"BUY","price_eur_per_mwh":50.1,"quantity_mw":2}]}'import httpx
r = httpx.post(
"https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids",
headers={"Authorization": f"Bearer {token}"},
json={
"delivery_day": "2026-10-23",
"idempotency_key": "<string>",
"bids": [
{
"start_time": "2026-01-01T00:00:00Z",
"side": "BUY",
"price_eur_per_mwh": 50.1,
"quantity_mw": 2,
},
],
},
)
print(r.json())const res = await fetch("https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"delivery_day":"2026-10-23","idempotency_key":"<string>","bids":[{"start_time":"2026-01-01T00:00:00Z","side":"BUY","price_eur_per_mwh":50.1,"quantity_mw":2}]}),
});
const data = await res.json();{
"submission_id": "00000000-0000-0000-0000-000000000000",
"asset_id": "<string>",
"delivery_day": "2026-01-01",
"submitted_at": "2026-10-22T20:30:00Z",
"gate_closes_at": "2026-10-22T20:30:00Z",
"exposure_eur": 0,
"exposure_limit_eur": 0,
"bids": [
{
"start_time": "2026-10-22T20:30:00Z",
"side": "BUY",
"price_eur_per_mwh": 0,
"quantity_mw": 0
}
],
"forwarding": {
"forwarded_submission_id": "00000000-0000-0000-0000-000000000000",
"forwarded_at": "2026-10-22T20:30:00Z",
"in_sync": false,
"last_attempt": {
"at": "2026-10-22T20:30:00Z",
"outcome": "<string>",
"kind": "<string>"
}
},
"latest_attempt": {
"submission_id": "00000000-0000-0000-0000-000000000000",
"status": "<string>",
"submitted_at": "2026-10-22T20:30:00Z",
"violations": [
"<string>"
]
}
}- 400malformed request
- 401no valid token
- 403scope missing
- 404unknown or not visible
- 409state conflict
- 422validation failed
- 429rate limited
GET/v1/assets/{asset_id}/markets/day_ahead/bids/{delivery_day}
Get day-ahead bids
market.read
Required scopes: market.read
Get the day-ahead bid set in force for an asset and delivery day.
forwarding shows whether this set has been sent on to the market, and latest_attempt the most recent submission, including a rejected one. Returns 404 with BID_SET_NOT_FOUND when no set has been accepted for the day.
Path parameters
- asset_idREQUIRED
- string
- delivery_dayREQUIRED
- string<date>
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids/2026-01-01" \
-H "Authorization: Bearer $EBX_TOKEN"import httpx
r = httpx.get(
"https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids/2026-01-01",
headers={"Authorization": f"Bearer {token}"},
)
print(r.json())const res = await fetch("https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids/2026-01-01", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await res.json();{
"submission_id": "00000000-0000-0000-0000-000000000000",
"asset_id": "<string>",
"delivery_day": "2026-01-01",
"submitted_at": "2026-10-22T20:30:00Z",
"gate_closes_at": "2026-10-22T20:30:00Z",
"exposure_eur": 0,
"exposure_limit_eur": 0,
"bids": [
{
"start_time": "2026-10-22T20:30:00Z",
"side": "BUY",
"price_eur_per_mwh": 0,
"quantity_mw": 0
}
],
"forwarding": {
"forwarded_submission_id": "00000000-0000-0000-0000-000000000000",
"forwarded_at": "2026-10-22T20:30:00Z",
"in_sync": false,
"last_attempt": {
"at": "2026-10-22T20:30:00Z",
"outcome": "<string>",
"kind": "<string>"
}
},
"latest_attempt": {
"submission_id": "00000000-0000-0000-0000-000000000000",
"status": "<string>",
"submitted_at": "2026-10-22T20:30:00Z",
"violations": [
"<string>"
]
}
}GET/v1/assets/{asset_id}/markets/day_ahead/results/{delivery_day}
Get day-ahead results
market.read
Required scopes: market.read
Get the day-ahead auction results for an asset and delivery day.
Results usually arrive in the early afternoon of the day before delivery. Each bid of the set last sent to the market gets one entry: CLEARED, PARTIALLY_CLEARED (part cleared at the clearing price, the rest rejected), NOT_CLEARED, or UNKNOWN while no result has arrived.
Path parameters
- asset_idREQUIRED
- string
- delivery_dayREQUIRED
- string<date>
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/results/2026-01-01" \
-H "Authorization: Bearer $EBX_TOKEN"import httpx
r = httpx.get(
"https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/results/2026-01-01",
headers={"Authorization": f"Bearer {token}"},
)
print(r.json())const res = await fetch("https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/results/2026-01-01", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await res.json();{
"asset_id": "<string>",
"delivery_day": "2026-01-01",
"submission_id": "00000000-0000-0000-0000-000000000000",
"status": "<string>",
"results": [
{
"start_time": "2026-10-22T20:30:00Z",
"side": "BUY",
"submitted_price_eur_per_mwh": 0,
"submitted_quantity_mw": 0,
"cleared_price_eur_per_mwh": 0,
"cleared_quantity_mw": 0,
"rejected_quantity_mw": 0,
"status": "<string>",
"anomaly": "<string>"
}
]
}