EBXv1

API reference

Unavailability

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_idREQUIRED
string

Query parameters

sort_by
enumstart_timeend_timeDeprecated and ignored; results are always ordered by start_time.
sort_order
enumascdescOrder 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 "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "unavailabilities": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "reason": "maintenance",
      "reason_description": "<string>"
    }
  ]
}
Can raise
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 422validation failed
  • 429rate limited
ALL CODES →
POST/v1/assets/{asset_id}/unavailability

Schedule Asset Unavailability

asset.writerestrictions.write_direct

Create a new unavailability interval for an asset.

Path parameters

asset_idREQUIRED
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
stringdefault unavailableUnavailability records always use the status 'unavailable'
reasonREQUIRED
enummaintenancefaultgrid_eventcommercialotherReason a restriction (unavailability, power limit, energy limit) is being requested.
reason_description
stringOptional description of the unavailability reason
Example value
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"}'
Example response201
{
  "unavailabilities": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "reason": "maintenance",
      "reason_description": "<string>"
    }
  ]
}
Can raise
  • 400malformed request
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 409state conflict
  • 422validation failed
  • 429rate limited
ALL CODES →
PATCH/v1/assets/{asset_id}/unavailability

Shorten Asset Unavailability

asset.writerestrictions.write_direct

Shorten or immediately end an existing unavailability interval.

Path parameters

asset_idREQUIRED
string

Query parameters

start_timeREQUIRED
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
booleandefault falseEnd a started interval at server time, without the scheduled-shortening lead time. Safe to retry.
Example value
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}'
Example response200
{
  "unavailabilities": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "reason": "maintenance",
      "reason_description": "<string>"
    }
  ]
}
Can raise
  • 400malformed request
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 409state conflict
  • 422validation failed
  • 429rate limited
ALL CODES →
DELETE/v1/assets/{asset_id}/unavailability

Delete Asset Unavailability

asset.writerestrictions.write_direct

Delete an exact future unavailability interval.

Path parameters

asset_idREQUIRED
string

Query parameters

start_timeREQUIRED
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 -X DELETE "https://api.ebx.energy/v1/assets/DE_BESS_01/unavailability?start_time=2025-01-03T10:00:00Z" \
  -H "Authorization: Bearer $EBX_TOKEN"

Returns 204 with no body.

Can raise
  • 400malformed request
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 409state conflict
  • 422validation failed
  • 429rate limited
ALL CODES →

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