EBXv1

API reference

Power & energy limits

Active and historic power and energy limits for an asset, plus its curtailment data.

11 endpoints
GET/v1/assets/{asset_id}/curtailment

Get asset curtailment data

asset.read

Retrieve curtailment data for a specific asset.

Returns curtailment intervals overlapping the requested time window. Time filtering uses half-open window semantics: [start_time, end_time).

Boundary behavior:

  • A curtailment ending exactly at start_time is excluded.
  • A curtailment starting exactly at end_time is excluded.
  • Ongoing curtailments with end_time=null are included whenever they remain active after start_time.

Query Parameters:

  • start_time: Return intervals whose end_time is absent or strictly after this timestamp (optional)
  • end_time: Return intervals whose start_time is strictly before this timestamp (optional)
  • sort_by: Field to sort by — start_time or end_time (default: start_time)
  • sort_order: asc or desc (default: asc)

Power values are in MW. The start_time filter can go back up to 30 days.

Path parameters

asset_idREQUIRED
stringThe ID of the asset

Query parameters

sort_by
enumstart_timeend_timeField to sort the results by
sort_order
enumascdescOrder to sort the results by, either 'asc' or 'desc'
start_time
string<date-time>Return curtailment 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 curtailment 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/curtailment" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "curtailments": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2025-01-02T18:00:00Z",
      "max_curtailment": 100,
      "min_curtailment": 0
    }
  ]
}
Can raise
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 422validation failed
  • 429rate limited
ALL CODES →
GET/v1/assets/{asset_id}/energy_limits

Get Energy Limits

asset.read

List energy limit 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:

  • a limit ending exactly at start_time is excluded
  • a limit starting exactly at end_time is excluded
  • open-ended limits 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 energy limit 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 energy limit 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/energy_limits" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mwh": 0,
      "lower_limit_mwh": 0,
      "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}/energy_limits

Set Energy Limits

asset.writerestrictions.write_direct

Create a new energy limit interval for an asset.

Path parameters

asset_idREQUIRED
string

Request body · required

start_time
string<date-time>Start time of the energy limit interval in UTC ISO 8601 format
end_time
string<date-time>Optional end time of the energy limit interval in UTC ISO 8601 format
upper_limit_mwh
numberUpper energy limit in MWh. At least one of upper_limit_mwh or lower_limit_mwh must be provided. If lower_limit_mwh is omitted, zero is used.
lower_limit_mwh
numberLower energy limit in MWh. At least one of upper_limit_mwh or lower_limit_mwh must be provided. If upper_limit_mwh is omitted, the asset's usable energy capacity is used.
reasonREQUIRED
enummaintenancefaultgrid_eventcommercialotherReason a restriction (unavailability, power limit, energy limit) is being requested.
reason_description
stringOptional free-text description of the energy limit reason
Example value
curl -X POST "https://api.ebx.energy/v1/assets/DE_BESS_01/energy_limits" \
  -H "Authorization: Bearer $EBX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"start_time":"2026-09-10T13:30:00Z","end_time":"2026-09-10T13:30:00Z","upper_limit_mwh":250,"lower_limit_mwh":25,"reason":"maintenance","reason_description":"<string>"}'
Example response201
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mwh": 0,
      "lower_limit_mwh": 0,
      "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}/energy_limits

Shorten Energy Limit

asset.writerestrictions.write_direct

Shorten or immediately end an existing energy limit 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/energy_limits?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
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mwh": 0,
      "lower_limit_mwh": 0,
      "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}/energy_limits

Delete Energy Limit

asset.writerestrictions.write_direct

Delete an exact future energy limit 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/energy_limits?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 →
GET/v1/assets/{asset_id}/energy_limits/active

Get Active Energy Limits

asset.read

Get the active energy limit interval for an asset.

Path parameters

asset_idREQUIRED
string
Example value
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/energy_limits/active" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mwh": 0,
      "lower_limit_mwh": 0,
      "reason": "maintenance",
      "reason_description": "<string>"
    }
  ]
}
Can raise
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 429rate limited
ALL CODES →
GET/v1/assets/{asset_id}/power_limits

Get Power Limits

asset.read

List power limit 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:

  • a limit ending exactly at start_time is excluded
  • a limit starting exactly at end_time is excluded
  • open-ended limits 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 power limit 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 power limit 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/power_limits" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mw": 0,
      "lower_limit_mw": 0,
      "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}/power_limits

Set Power Limits

asset.writerestrictions.write_direct

Create a new power limit interval for an asset.

Path parameters

asset_idREQUIRED
string

Request body · required

start_time
string<date-time>Start time of the power limit interval in UTC ISO 8601 format
end_time
string<date-time>Optional end time of the power limit interval in UTC ISO 8601 format
upper_limit_mw
numberUpper power limit in MW. At least one of upper_limit_mw or lower_limit_mw must be provided. If lower_limit_mw is omitted, the asset's negative usable power capacity is used.
lower_limit_mw
numberLower power limit in MW. At least one of upper_limit_mw or lower_limit_mw must be provided. If upper_limit_mw is omitted, the asset's usable power capacity is used.
reasonREQUIRED
enummaintenancefaultgrid_eventcommercialotherReason a restriction (unavailability, power limit, energy limit) is being requested.
reason_description
stringOptional free-text description of the power limit reason
Example value
curl -X POST "https://api.ebx.energy/v1/assets/DE_BESS_01/power_limits" \
  -H "Authorization: Bearer $EBX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"start_time":"2026-09-10T13:30:00Z","end_time":"2026-09-10T13:30:00Z","upper_limit_mw":50.5,"lower_limit_mw":-5.7,"reason":"maintenance","reason_description":"<string>"}'
Example response201
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mw": 0,
      "lower_limit_mw": 0,
      "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}/power_limits

Shorten Power Limit

asset.writerestrictions.write_direct

Shorten or immediately end an existing power limit 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/power_limits?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
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mw": 0,
      "lower_limit_mw": 0,
      "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}/power_limits

Delete Power Limit

asset.writerestrictions.write_direct

Delete an exact future power limit 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/power_limits?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 →
GET/v1/assets/{asset_id}/power_limits/active

Get Active Power Limits

asset.read

Get the active power limit interval for an asset.

Path parameters

asset_idREQUIRED
string
Example value
curl "https://api.ebx.energy/v1/assets/DE_BESS_01/power_limits/active" \
  -H "Authorization: Bearer $EBX_TOKEN"
Example response200
{
  "limits": [
    {
      "start_time": "2026-09-10T13:30:00Z",
      "end_time": "2026-09-10T13:30:00Z",
      "upper_limit_mw": 0,
      "lower_limit_mw": 0,
      "reason": "maintenance",
      "reason_description": "<string>"
    }
  ]
}
Can raise
  • 401no valid token
  • 403scope missing
  • 404unknown or not visible
  • 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