Dispatch Event Polling
Receiving dispatches via the webhook push notification is the recommended method as it enables participation in real-time programs that provide minimal advance notice periods, however, if that is not possible this guide provides information on polling the Leap API endpoints to retrieve this information. If you haven’t already, check out the Dispatch Automation guide for more details on automating and processing these dispatch events.
Endpoints
Choose the appropriate endpoint depending on whether you are dispatching at the meter or group level:
- Search Meter Dispatches - Retrieve events broken out at an individual meter-level
- Search Group Dispatches - Retrieve events aggregated at the market group-level
Polling Frequency
Make sure to poll frequently enough to capture any new dispatches with enough time to process those and push them out to your end customer devices prior to the event start time. Different markets and programs have different advance notice periods for dispatch event notices to be available so take into account current and upcoming markets/programs you will be enrolling in. If required, these endpoints can handle polling as frequently as once per minute without triggering any rate limits.
Dispatch Event Processing
By default you will receive all day-ahead
, hour-ahead
, and standard
event types within the dispatch_event_types
array in the responses. To also receive CAISO real-time events in the 15-minute and 5-minute markets, make sure to set the exclude_real_time_events
body parameter to false.
As a reminder, for the CAISO DRAM/CCA programs and the day-ahead market, you will need to process both the day-ahead
and hour-ahead
event types as it is possible that your day-ahead dispatch awards could get updated in the hour-ahead market or you could get entirely new timeslot awards in the hour-ahead market.
For event processing considerations refer back to the Dispatch Event Processing section of the Dispatch Automation guide and check out the Test Cases guide for the different scenarios to test.
Example Code Recipe
Check out the following example code recipe for processing these dispatch API responses:
Example Responses
Meter Dispatch Response
{
"results": [
{
"meter_id": "1aaa1111-1111-1111-1111-111111111111",
"timeslots": [
{
"meter_event_id": "8a8adc1e-c95a-4c14-a916-c25b2c39077f",
"start_time": "2023-02-02T17:00:00Z",
"end_time": "2023-02-02T18:00:00Z",
"cancelled": false,
"performance_compensation_cap": "up-to-nomination",
"priority": 1,
"is_voluntary": false,
"dispatch_event_types": [
"standard"
],
"programs": [
"ERCOT-ERS"
],
"energy_kw": 0.645,
"communication_test": false
},
{
"meter_event_id": "f5e13568-c310-4d6c-89b9-33d80b62ba04",
"start_time": "2023-02-04T19:00:00Z",
"end_time": "2023-02-04T20:00:00Z",
"cancelled": false,
"performance_compensation_cap": "up-to-nomination",
"priority": 1,
"is_voluntary": false,
"dispatch_event_types": [
"standard"
],
"programs": [
"ERCOT-ERS"
],
"energy_kw": 0.645,
"communication_test": false
}
]
}
],
"next_page_token": null
}
Market Group Dispatch Response
{
"results": [
{
"market_group_id": "79204bac-9c9c-4b3a-a507-a095f54776af",
"meter_ids": [
"1aaa1111-1111-1111-1111-111111111111"
],
"timeslots": [
{
"market_group_event_id": "08470897-4261-427f-9afd-a658337bfb30",
"start_time": "2023-02-04T19:00:00Z",
"end_time": "2023-02-04T20:00:00Z",
"cancelled": false,
"performance_compensation_cap": "up-to-nomination",
"priority": 1,
"is_voluntary": false,
"dispatch_event_types": [
"standard"
],
"programs": [
"ERCOT-ERS"
],
"energy_kw": 0.645,
"communication_test": false
},
{
"market_group_event_id": "b09a9dba-16d3-4bf5-a1ce-97b20c4e4d13",
"start_time": "2023-02-02T17:00:00Z",
"end_time": "2023-02-02T18:00:00Z",
"cancelled": false,
"performance_compensation_cap": "up-to-nomination",
"priority": 1,
"is_voluntary": false,
"dispatch_event_types": [
"standard"
],
"programs": [
"ERCOT-ERS"
],
"energy_kw": 0.645,
"communication_test": false
}
]
}
],
"next_page_token": null
}
Updated 4 months ago