# Unavailability

> Scheduled unavailability windows for an asset.

API reference

Scheduled unavailability windows for an asset.

4 endpoints

· GET · /v1/assets/{asset\_id}/unavailability

### Get Asset Unavailability

asset.read

List unavailability intervals for an asset.

Time filtering is overlap-based and uses half-open window semantics. With both `start_time` and `end_time`, the endpoint returns intervals that overlap `[start_time, end_time)`.

Boundary behavior:

-   an interval ending exactly at `start_time` is excluded
-   an interval starting exactly at `end_time` is excluded
-   open-ended intervals are included whenever they remain active after `start_time`

Path parameters

asset\_id · REQUIRED

string

Query parameters

sort\_by

enum · `start_time` · `end_time` · Deprecated and ignored; results are always ordered by start\_time.

sort\_order

enum · `asc` · `desc` · Order to sort the results by, either 'asc' or 'desc'

start\_time

string<date-time> · Return unavailability intervals whose end\_time is absent or strictly after this timestamp. With end\_time, the API matches intervals overlapping the half-open window \[start\_time, end\_time).

end\_time

string<date-time> · Return unavailability intervals whose start\_time is strictly before this timestamp. With start\_time, the API matches intervals overlapping the half-open window \[start\_time, end\_time).

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "unavailabilities" · : ·   · [ · 
     · { · 
       · "start_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "end_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "reason" · : ·   · "maintenance" · , · 
       · "reason_description" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

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

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

 · POST · /v1/assets/{asset\_id}/unavailability

### Schedule Asset Unavailability

asset.write · restrictions.write\_direct

Create a new unavailability interval for an asset.

Path parameters

asset\_id · REQUIRED

string

Request body · required

start\_time

string<date-time> · Start time of the unavailability interval in UTC ISO 8601 format

end\_time

string<date-time> · Optional end time of the unavailability interval in UTC ISO 8601 format

availability\_status

string · default unavailable · Unavailability records always use the status 'unavailable'

reason · REQUIRED

enum · `maintenance` · `fault` · `grid_event` · `commercial` · `other` · Reason a restriction (unavailability, power limit, energy limit) is being requested.

reason\_description

string · Optional description of the unavailability reason

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"availability_status":"unavailable","end_time":"2025-01-01T18:00:00Z","reason":"maintenance","reason_description":"Scheduled inverter maintenance","start_time":"2025-01-01T08:00:00Z"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "availability_status" · : ·   · "unavailable" · , · 
         · "end_time" · : ·   · "2025-01-01T18:00:00Z" · , · 
         · "reason" · : ·   · "maintenance" · , · 
         · "reason_description" · : ·   · "Scheduled inverter maintenance" · , · 
         · "start_time" · : ·   · "2025-01-01T08:00:00Z" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "availability_status" · : · "unavailable" · , · "end_time" · : · "2025-01-01T18:00:00Z" · , · "reason" · : · "maintenance" · , · "reason_description" · : · "Scheduled inverter maintenance" · , · "start_time" · : · "2025-01-01T08:00:00Z" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "unavailabilities" · : ·   · [ · 
     · { · 
       · "start_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "end_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "reason" · : ·   · "maintenance" · , · 
       · "reason_description" · : ·   · "<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)· PATCH · /v1/assets/{asset\_id}/unavailability

### Shorten Asset Unavailability

asset.write · restrictions.write\_direct

Shorten or immediately end an existing unavailability interval.

Path parameters

asset\_id · REQUIRED

string

Query parameters

start\_time · REQUIRED

string<date-time> · Exact start\_time of the interval to modify

end\_time

string<date-time> · Deprecated and ignored; intervals are identified by start\_time alone.

Request body · required

new\_end\_time

string<date-time> · Scheduled replacement end\_time in UTC; mutually exclusive with end\_now=true

end\_now

boolean · default false · End a started interval at server time, without the scheduled-shortening lead time. Safe to retry.

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"new_end_time":"2025-01-01T18:15:00Z","end_now":false}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "new_end_time" · : ·   · "2025-01-01T18:15:00Z" · , · 
         · "end_now" · : ·   · False · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "new_end_time" · : · "2025-01-01T18:15:00Z" · , · "end_now" · : · false · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "unavailabilities" · : ·   · [ · 
     · { · 
       · "start_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "end_time" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "reason" · : ·   · "maintenance" · , · 
       · "reason_description" · : ·   · "<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)

· DELETE · /v1/assets/{asset\_id}/unavailability

### Delete Asset Unavailability

asset.write · restrictions.write\_direct

Delete an exact future unavailability interval.

Path parameters

asset\_id · REQUIRED

string

Query parameters

start\_time · REQUIRED

string<date-time> · Exact start\_time of the interval to modify

end\_time

string<date-time> · Deprecated and ignored; intervals are identified by start\_time alone.

Example value

cURL:

```bash
curl ·   · -X ·  DELETE  · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.delete(
     · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.status_code)
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" · , ·   · { · 
   · method · : ·   · "DELETE" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
```

Returns 204 with no body.

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)
