# leap-developer Documentation > Documentation for leap-developer Append .md to any documentation page URL to get its markdown version. ## Guides - [Welcome](https://developer.leap.energy/docs/home.md): Automating with Leap's Universal API - [Automation Use Cases](https://developer.leap.energy/docs/use-case-prioritization.md) - [Residential](https://developer.leap.energy/docs/residential-phasing.md): Recommended Use Case Phasing for Residential Partners - [Commercial & Industrial](https://developer.leap.energy/docs/ci-phasing.md): Recommended Use Case Phasing for C&I Partners - [Getting Started](https://developer.leap.energy/docs/getting-started.md) - [Webhooks](https://developer.leap.energy/docs/webhook-setup.md) - [Webhook retry mechanism](https://developer.leap.energy/docs/retry-mechanism.md) - [Authentication (API Keys)](https://developer.leap.energy/docs/api-key-authentication.md) - [Onboard Overview](https://developer.leap.energy/docs/onboard-overview.md) - [Direct Enroll (Create Meters)](https://developer.leap.energy/docs/partner-created-meters.md) - [Utility Auth (Leap Connect)](https://developer.leap.energy/docs/collect-data-authorization.md) - [Leap Connect](https://developer.leap.energy/docs/leap-connect.md) - [Direct to Utility (CAISO)](https://developer.leap.energy/docs/legacy-sharemydata-flow.md) - [Staging Test Utilities](https://developer.leap.energy/docs/test-utilities.md) - [Connect Reminders](https://developer.leap.energy/docs/customer-reengagement.md) - [Utility Meters vs. Devices](https://developer.leap.energy/docs/utility-meters-vs-devices.md) - [Sync Meter Inventory](https://developer.leap.energy/docs/sync-meter-inventory-v2.md) - [Meter Configuration](https://developer.leap.energy/docs/meter-configuration.md) - [Bidding Overview](https://developer.leap.energy/docs/bidding-introduction.md) - [Dispatch Overview](https://developer.leap.energy/docs/dispatch-automation-v2.md) - [Dispatch Event Processing](https://developer.leap.energy/docs/dispatch-event-processing.md) - [Dispatch Webhooks](https://developer.leap.energy/docs/webhook-push-notifications-v2.md) - [Dispatch Event Polling](https://developer.leap.energy/docs/dispatch-event-polling-v2.md) - [Dispatch Test Cases](https://developer.leap.energy/docs/event-processing-test-cases.md): To Validate Dispatch Event Processing Logic - [Revenue Reporting](https://developer.leap.energy/docs/revenue-settlement-data.md) - [Event Performance & Interval Data](https://developer.leap.energy/docs/event-performance-interval-data.md) - [Interval Data Upload (API)](https://developer.leap.energy/docs/interval-data-upload-api.md) - [Interval Data Upload (SFTP)](https://developer.leap.energy/docs/upload-interval-data-sftp.md) ## API Reference - [Events](https://developer.leap.energy/reference/metercreated.md) - [Connect](https://developer.leap.energy/reference/connect-events.md) - [Meter](https://developer.leap.energy/reference/meter-events.md) - [Dispatch](https://developer.leap.energy/reference/dispatch-event.md) - [List webhooks](https://developer.leap.energy/reference/listwebhooks-2.md): List existing webhooks. - [Create a webhook](https://developer.leap.energy/reference/createwebhook-2.md): Create a new webhook to receive event notifications. - [Delete a webhook](https://developer.leap.energy/reference/deletewebhook-2.md): Delete an existing webhook identified by webhook_id. - [Update a webhook](https://developer.leap.energy/reference/updatewebhook-2.md): Update an existing webhook identified by webhook_id. NOTE: using this endpoint will overwrite all existing settings for the specified webhook_id. - [Test a webhook](https://developer.leap.energy/reference/testwebhook-2.md): Send a test event to the configured receiver_url for the specified webhook_id. - [Get connection statuses](https://developer.leap.energy/reference/getconnections.md): Returns the connections that match the given search params - [Create meters](https://developer.leap.energy/reference/createmeterbatchjob.md): Create meters on the Leap platform individually or in bulk. Endpoint accepts both CSV and JSON input. Returns job ID. - [List meter jobs](https://developer.leap.energy/reference/listmeterbatchjobs.md): List all meter upload jobs and their status. - [Get meters job status](https://developer.leap.energy/reference/getmeterbatchjob.md): Get meters job status and associated meter IDs for successfully uploaded assets. - [Get meter details](https://developer.leap.energy/reference/getmeterdetails.md): Get details about a meter such as customer, utility, site, and device information. - [Get meter enrollment](https://developer.leap.energy/reference/getmeterenrollment.md): Get enrollment information about a meter including its current enrollment status, participation preferences, associated programs, and any required actions. - [Search meter details](https://developer.leap.energy/reference/searchmeterdetails.md): Retrieve meter details, such as customer, utility, site, and device information for all meters. Optionally filter by one or more request parameters. - [Search meter enrollments](https://developer.leap.energy/reference/searchmeterenrollments.md): Retrieve enrollment information including current enrollment status, participation preferences, associated programs, and any required actions for all meters. Optionally filter by one or more request parameters. - [Get idle periods for meter](https://developer.leap.energy/reference/getv11enrollmentmeterswithmeter_ididle_periods-1.md): Returns the full list of all set idle periods for the given meter. - [Create idle periods for meter](https://developer.leap.energy/reference/postv11enrollmentmeterswithmeter_ididle_periods-1.md): Creates idle periods for a single meter. - The meter is considered to be active outside of the idle periods. - The given idle periods are added to already existing idle periods. - If there is an overlap between an existing idle/disenroll period and a new idle period, the given idle period overrides the existing idle/disenroll period for the overlapping period range. - If one of the periods in the array is invalid, the entire POST request is discarded and an error is returned. No period will be added, even if other periods in the same body are valid. - All dates respect the timezone the meter is in. - [Delete idle periods for meter](https://developer.leap.energy/reference/deletev11enrollmentmeterswithmeter_ididle_periods-1.md): Deletes idle periods for a single meter. - After deletion of an idle period, the meter will be active during that period. - The start date and end date of each period have to match exactly with the period that has to be deleted. - If no matching idle period can be found for one of the periods in the array, the entire message is discarded and a 404 error is returned, stating which period can't be found. - No periods will be deleted, even if other periods in the same JSON are valid. - [Get idle periods for all meters](https://developer.leap.energy/reference/getv11enrollmentmetersidle_periods-1.md): Returns the full list of idle periods for all the meters of the user's account. - [Create idle periods for meters](https://developer.leap.energy/reference/postv11enrollmentmetersidle_periods-1.md): Creates idle periods for multiple meters. - A meter is considered to be active outside of the idle periods. - The given idle periods are added to already existing idle periods. - A meter may occur only once in the enrollment array. - If there is an overlap between an existing idle/disenroll period and a new idle period, the given idle period overrides the existing idle/disenroll period for the overlapping period range. - If one of the date ranges in the array is invalid, the entire POST request is discarded and an error is returned. No period will be added, even if other periods in the same body are valid. - Changes are applied if at least one meter can be found. Idle periods for unknown meters are discarded. - All dates respect the timezone the meter is in. - [Delete idle periods for meters](https://developer.leap.energy/reference/deletev11enrollmentmetersidle_periods-1.md): Deletes idle periods for multiple meters. - After deletion of an idle period, the meter will be active during that period. - The meter id, start date and end date of each period have to match exactly with the period that has to be deleted. - A meter can occur only once in the enrollment array. - If no matching idle period can be found for one of the periods in the array, the entire message is discarded and a 404 error is returned, stating which period can't be found. - No periods will be deleted, even if other periods in the same JSON are valid. - [Create a disenrollment request for meter](https://developer.leap.energy/reference/postv11enrollmentmeterswithmeter_iddisenrollment_requests-1.md): This is a request to disenroll the meter at the requested date. Note that if a meter is Active in a program, Leap will remove the meter from that program as soon as possible. This could be the end of the current month or current participation period depending on the program. - [Create disenrollment requests for meters](https://developer.leap.energy/reference/postv11enrollmentmetersdisenrollment_requests-1.md): This is a request to disenroll multiple meters at the requested date. Note that if a meter is Active in a program, Leap will remove the meter from that program as soon as possible. This could be the end of the current month or current participation period depending on the program. Changes are applied if at least one meter can be found. Disenrollment requests for unknown meters are discarded. - [Indicate market participation of meter](https://developer.leap.energy/reference/postv11enrollmentmeterswithmeter_idparticipate-1.md): Indicate that a meter should participate in the energy market. - The meter can participate in Leap programs starting from the given start date. - `Idle` and `Disenroll` statuses are overridden by a `Participate` status starting with the given start date. - [Indicate market participation of meters](https://developer.leap.energy/reference/postv11enrollmentmetersparticipate-1.md): Indicates that multiple meters should participate in the energy market. - The meters can participate in Leap programs starting from the given start dates. - `Idle` and `Disenroll` statuses are overridden by `Participate` statuses starting with the given start dates. - Changes are applied if at least one meter can be found. Requests for unknown meters are discarded. - [Update partner reference for a meter](https://developer.leap.energy/reference/patchv11meterswithmeter_idpartner_meter_ref-1.md): Update partner reference for a meter. - [Update partner reference for multiple meters](https://developer.leap.energy/reference/patchv11meterspartner_meter_ref.md): This is a request to set partner references for multiple meters. - [Refresh market registration for meter](https://developer.leap.energy/reference/postrefreshmetermarketregistrationrequest.md): Creates a request to refresh market registration for the meter. This endpoint should be used on Ineligible meters after partner or end customer have taken some action on the meter that could lead to the meter's market registration being approved (e.g. customer disenrolled from a conflicting program, smart meter installed, etc). Once a request is received, the Leap platform determines if/when the market registration can be re-submitted based on registration timing constraints and whether there are any already in-process registrations for the meter. Once submitted, market registration can take time (e.g. up to 2 weeks in CAISO) before registration results and meter statuses can be updated in the program checklists. NOTE: This endpoint is currently only supported for utility meters in CAISO. - [Add tags to meters](https://developer.leap.energy/reference/postv11meterstags.md): API to add tags to a meter - [Remove tags from meters](https://developer.leap.energy/reference/deletev11meterstags.md): API to remove tags from a meter - [Get suggested nominations](https://developer.leap.energy/reference/getmeternominationsuggestions.md): Get suggested nomination details for a meter for each applicable program and time period. - [Suggest meter nominations](https://developer.leap.energy/reference/postmeternominationsuggestions.md): Suggest nominations for individual meters. A suggestion is reviewed by Leap before it becomes an actual nomination. Leap can approve, modify, or deny each suggestion. Modified suggestions are adjusted by Leap before becoming a nomination and will often include communication or coordination with your operations team. Note that when a more recent suggestion completely eclipses an earlier provided suggestion, the earlier nomination will be deleted. However, if there are partial overlaps, Leap will not automatically adjust or deduplicate these. Use the 'Delete suggested nominations' endpoint to remove no longer needed suggestions. - [Delete suggested nominations](https://developer.leap.energy/reference/deletemeternominationsuggestion.md): Remove a suggestion that is no longer needed. It is recommended to clean up and delete no longer needed or relevant suggestions so Leap is able to more quickly review outstanding suggestions. Note that a suggestion can only be deleted if it is still in the RECEIVED status. Once it has been reviewed and processed by Leap, it can no longer be deleted. - [Suggest bulk nominations](https://developer.leap.energy/reference/postnominationsuggestions.md): Suggest nominations for multiple meters. A suggestion is reviewed by Leap before it becomes an actual nomination. Leap can approve, modify, or deny each suggestion. Modified suggestions are adjusted by Leap before becoming a nomination and will often include communication or coordination with your operations team. Note that when a more recent suggestion completely eclipses an earlier provided suggestion, the earlier nomination will be deleted. However, if there are partial overlaps, Leap will not automatically adjust or deduplicate these. Use the 'Delete suggested nominations' endpoint to remove no longer needed suggestions. - [Search suggested nominations](https://developer.leap.energy/reference/searchnominationsuggestions.md): Search suggested nominations across all meters and filter based on the request body parameters. Use the 'Accept' header to specify whether you'd like JSON or CSV as the response type. - [Search nominations](https://developer.leap.energy/reference/searchnominations.md): Search for nominations on all meters. You can filter on meter IDs and a date range. These are the nominations in kW that will be used for program enrollment. Use the 'Accept' header to specify whether you'd like JSON or CSV as the response type. - [Place, modify or cancel a bid](https://developer.leap.energy/reference/submitbid-1.md): Initial bids must be placed at least 24 hours before the start of the trading day for Leap’s Pay-as-Bid auction. Bids are sets of pairs (Price, Capacity) from which a bid curve is constructed. The bid curve is the function of the form Price = F(Capacity) which determines at which price a demand response provider is willing to curtail a certain volume of load. Example: A storage provider is bidding in capacity. A sample bid for a given hour may have the form shown below: Price ($/kWh) - Capacity (kW) 0.18 $/kWh - 40 kW 0.24 $/kWh - 80 kW 0.28 $/kWh - 200 kW According to this bid, the provider is willing to curtail the first 40kW of load for 18 cents per kWh. If a greater volume is needed, the same provider is willing to curtail any amount of energy from zero up to 80 kW at $0.24/kWh, up to 200 kW for $0.28/kWh. *General guidelines* All datetimes must be provided in the UTC timezone *Modifying bids* Bids can be modified by placing a new bid for the same meter/timeslot combination. The previous curve will be completely replaced by the new curve. *Cancelling bids* A bid can be cancelled until the market closes. Cancel a bid by submitting an empty curve for a meter/timeslot combination. - [Search for bids that match the input filters](https://developer.leap.energy/reference/searchbids.md): Search for bids that match the input filters. A start and end date must be specified when searching for bids. Note: for performance reasons bids older than three months might be archived and are not available anymore via API. - [Search for standing bids that match the input filters](https://developer.leap.energy/reference/searchstandingbids.md): Search for standing bids that match the input filters. A start and end date must be specified when searching for standing bids. - [Search meter dispatches](https://developer.leap.energy/reference/searchmeterdispatches.md): Search meter dispatches that match the input filters - [Delete meter dispatch webhook URL](https://developer.leap.energy/reference/deletemeterdispatchwebhook.md): Remove an existing webhook URL for meter dispatches - [Get meter webhook URL](https://developer.leap.energy/reference/getmeterdispatchwebhook.md): Retrieve the registered webhook URL for meter dispatches - [Set meter webhook URL](https://developer.leap.energy/reference/createorupdatemeterdispatchwebhook.md): Create or update an existing webhook URL for meter dispatches - [Trigger test meter notification](https://developer.leap.energy/reference/triggertestmeterdispatchnotification.md): Create test notification that will trigger a webhook call with the corresponding dispatch notification data - [Search group dispatches](https://developer.leap.energy/reference/searchgroupdispatches.md): Search group dispatches that match the input filters - [Delete group webhook URL](https://developer.leap.energy/reference/deletegroupdispatchwebhook-1.md): Remove an existing webhook URL for group dispatches - [Get group webhook URL](https://developer.leap.energy/reference/getgroupdispatchwebhook-1.md): Retrieve the registered webhook URL for group dispatches - [Set group webhook URL](https://developer.leap.energy/reference/createorupdategroupdispatchwebhook-1.md): Create or update an existing webhook URL for group dispatches - [Trigger test group notification](https://developer.leap.energy/reference/triggertestgroupdispatchnotification.md): Create test notification that will trigger a webhook call with the corresponding group dispatch notification data - [Get monthly revenue reports](https://developer.leap.energy/reference/getperiodicreports.md): Retrieves monthly revenue reports for a designated time frame. If a version is not specified, the response will include the latest version. - [Get revenue report versions](https://developer.leap.energy/reference/getperiodicreportversions.md): Retrieves versions of revenue reports for a specified period. The response includes all versions filtered by the provided report type and date range. - [Get annual revenue data](https://developer.leap.energy/reference/getyearlyoverview.md): Retrieves the revenue overview for a given year and transmission regions, if set. - [Revenue by meter](https://developer.leap.energy/reference/postmetersearchperiodicaggregationsearch.md): Retrieves revenue data for a designated month or months aggregated by meter - [Revenue by customer](https://developer.leap.energy/reference/postcustomersearchperiodicaggregationsearch.md): Retrieves revenue data for a designated month or months aggregated by customer - [Revenue by load type](https://developer.leap.energy/reference/postloadtypesearchperiodicaggregationsearch.md): Retrieves revenue data for a designated month or months aggregated by load type - [Revenue by market group](https://developer.leap.energy/reference/postmarketgroupsearchperiodicaggregationsearch.md): Retrieves revenue data for a designated month or months aggregated by market group - [Revenue by utility](https://developer.leap.energy/reference/postutilitysearchperiodicaggregationsearch.md): Retrieves revenue data for a designated month or months aggregated by utility - [Monthly unresponsive meters](https://developer.leap.energy/reference/postmonthlyunresponsivemetersperformance.md): Retrieves unresponsive meters in a designated month - [List event performance](https://developer.leap.energy/reference/listmeterlevelperformance.md): Lists all meter-level data (Baseline, Dispatch and Performance) in the given date range. - [List aggregated intervals](https://developer.leap.energy/reference/listaggregatedintervals.md): Lists all aggregated energy data in the given date range. Data is gap-filled - in case a utility doesn't send Leap some of the interval data, we predict it based on past data. You can request up to 1000000 data points at once. In case you hit this limit, the API will return a 400 response code. This can be solved either by reducing the amount of days or the amount of meters you're requesting data for. - [List meter-level intervals](https://developer.leap.energy/reference/listmeterlevelintervals.md): Lists all meter energy data in the given date range. Aggregation is not possible through this endpoint. Use the other endpoints instead for aggregation options. Data is gap-filled - in case a utility doesn't send Leap some of the interval data, we predict it based on past data. You can request up to 1000000 data points at once. In case you hit this limit, the API will return a 400 response code. This can be solved either by reducing the amount of days or the amount of meters you're requesting data for. - [Upload interval data](https://developer.leap.energy/reference/uploadintervaldata.md): Uploads a CSV file of interval data and starts its ingestion. Send the file with a `Content-Type` header of `text/csv`. Returns the job ID used to track progress via the 'List upload job statuses' and 'List data validation errors' endpoints. - [List upload job statuses](https://developer.leap.energy/reference/listintervaldatauploads.md): Lists the uploaded interval files, regardless of whether they were uploaded through Leap's SFTP server or the Partner Portal. - [List data validation errors](https://developer.leap.energy/reference/listintervaldatauploaderrors.md): Lists the validation errors produced while processing the file associated with the specified ingestion job ID. You can find these ingestion job IDs in the 'List upload job statuses' endpoint or in the Partner Portal. - [Search for missing interval data](https://developer.leap.energy/reference/searchmissingintervaldata.md): Returns the intervals for which interval data is missing for the requested meters within the given time window. Results are paginated; when more results are available the response includes a `next_page_token`, which you pass back as `page_token` to fetch the next page. ## Recipes - [Place your first bid](https://developer.leap.energy/recipes/place-your-first-bid.md) - [Process dispatch events after polling meter-level API](https://developer.leap.energy/recipes/process-dispatch-events-after-polling-meter-level-api.md) - [Process dispatch events from meter-level webhook](https://developer.leap.energy/recipes/process-dispatch-events-from-meter-level-webhook.md) ## Changelog - [Interval Data Upload & Missing Intervals APIs](https://developer.leap.energy/changelog/interval-data-upload-missing-intervals-apis.md) - [Unresponsive Meters API Released](https://developer.leap.energy/changelog/unresponsive-meters-api-released.md) - [Meters API V1 Deprecation Date Set](https://developer.leap.energy/changelog/meters-api-v1-deprecation-date-set.md) - [Webhook Platform Released](https://developer.leap.energy/changelog/webhook-platform-released.md) - [Partner Reference ID Added to Dispatch Notifications](https://developer.leap.energy/changelog/partner-reference-id-added-to-dispatch-notifications.md) - [Connect Webhooks Released](https://developer.leap.energy/changelog/connect-webhooks-released.md) - [New Webhook Platform Released](https://developer.leap.energy/changelog/new-webhook-platform-released.md) - [Leap Connect Updates](https://developer.leap.energy/changelog/leap-connect-updates.md) - [Revenue API Released](https://developer.leap.energy/changelog/revenue-api-released.md) - [Nomination value added to dispatch API & webhook events](https://developer.leap.energy/changelog/nomination-value-added-to-dispatch-api-webhook-events.md)