# Market - Day-ahead

> Endpoints tagged “Market - Day-ahead” in the API specification.

API reference

Endpoints tagged “Market - Day-ahead” in the API specification.

3 endpoints

· 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 window
-   `IDEMPOTENCY_CONFLICT` (409): the key was used with a different set
-   `DAY_AHEAD_NOT_CONFIGURED` (409): the asset is not set up for day-ahead trading
-   `BID_SET_REJECTED` (422): the set breaks one or more rules, including the trading limit
-   `MARKET_SERVICE_UNAVAILABLE` (503): the outcome is unknown; retry with the same `idempotency_key`

Path parameters

asset\_id · REQUIRED

string

Query parameters

validate\_only

boolean · default false · Run every check and store nothing

Request body · required

delivery\_day · REQUIRED

string<date> · Delivery day (Europe/Berlin), which must be tomorrow

idempotency\_key

string · Optional. Repeating a request with the same key returns the original outcome; the same key with a different set is rejected

bids · REQUIRED

array\[object\] · 1 to 100 bids, at most one per quarter-hour

Example value

cURL:

```bash
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}]}'
```

Python:

```python
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())
```

TypeScript:

```typescript
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();
```

Example response · 200

```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>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

 · 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\_id · REQUIRED

string

delivery\_day · REQUIRED

string<date>

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/bids/2026-01-01" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
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())
```

TypeScript:

```typescript
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();
```

Example response · 200

```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>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)· 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\_id · REQUIRED

string

delivery\_day · REQUIRED

string<date>

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/assets/DE_BESS_01/markets/day_ahead/results/2026-01-01" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
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())
```

TypeScript:

```typescript
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();
```

Example response · 200

```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>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)
