Leap · AsyncAPI Specification

Leap Webhook Events

Version 1.1

Leap delivers two independent webhook surfaces to partner-hosted HTTPS receivers. 1. The general webhook platform — connect-session and meter/enrollment lifecycle events, with subscriptions managed through the Webhook Subscription API (/v1.1/webhooks). 2. The older dispatch notification webhooks — one meter-level URL and one group-level URL per account, registered through the Dispatch v2 API (/v2/dispatch/{meter|group}/webhook). Receivers must listen on HTTPS port 443, 8443 or 8843 with TLS 1.2 or 1.3, and return any 2xx status within 10 seconds. Failed deliveries are retried up to 10 times over roughly 8 hours (immediate, 1m, 2m, 4m, 8m, 16m, 29m, 1h, 2h, 4h), after which Leap stops.

View Spec View on GitHub CompanyEnergyElectricityVirtual Power PlantDemand ResponseDistributed Energy ResourcesGrid ServicesEnergy MarketsBattery StorageEV ChargingSmart BuildingsMeteringWebhooksClimate TechAsyncAPIWebhooksEvents

Channels

connectSessionEvents
Emitted as a customer moves through a Leap Connect or direct-to-utility authorization session.
meterEvents
Emitted when meters are added to the partner account and as enrollment state changes.
meterDispatchEvents
Grid dispatch instructions for individual meters. Registered with createOrUpdateMeterDispatchWebhook and testable with triggerTestMeterDispatchNotification.
groupDispatchEvents
Grid dispatch instructions for market groups. Registered with createOrUpdateGroupDispatchWebhook and testable with triggerTestGroupDispatchNotification.

Messages

connectSessionUpdated
Connect session updated
connectSessionAuthorizationUpdated
Connect session authorization updated
meterCreated
Meter created
meterEnrollmentGlobalStatusUpdated
Meter enrollment global status updated
meterEnrollmentParticipationStatusUpdated
Meter enrollment participation status updated
meterEnrollmentRequiredActionsUpdated
Meter enrollment partner-required actions updated
meterEnrollmentGroupUpdated
Meter VPP group membership updated
meterDispatch
Meter dispatch notification
groupDispatch
Market group dispatch notification

Servers

https
partner-receiver
The partner-hosted receiver URL registered through the Webhook Subscription API or the Partner Portal. Must be HTTPS on port 443, 8443 or 8843 with TLS 1.2 or 1.3.

AsyncAPI Specification

Raw ↑
generated: '2026-07-19'
method: derived
source: openapi/leap-webhooks-openapi-original.yml, openapi/leap-dispatching-openapi-original.yml, https://developer.leap.energy/reference/metercreated,
  https://developer.leap.energy/docs/webhook-setup, https://developer.leap.energy/docs/retry-mechanism
x-provenance-note: Leap publishes no AsyncAPI document. This file is a faithful AsyncAPI 3.0.0 rendering
  of the webhook event catalogue Leap does publish — the WebhookEventType enum and discriminator mapping
  in the Webhook Subscription OpenAPI, the event listing on the Events reference page, and the dispatch
  webhook payload schemas in the Dispatch v2 OpenAPI. No event, field or channel has been invented.
asyncapi: 3.0.0
info:
  title: Leap Webhook Events
  version: '1.1'
  description: |
    Leap delivers two independent webhook surfaces to partner-hosted HTTPS receivers.

    1. The general webhook platform — connect-session and meter/enrollment lifecycle events,
       with subscriptions managed through the Webhook Subscription API (/v1.1/webhooks).
    2. The older dispatch notification webhooks — one meter-level URL and one group-level URL
       per account, registered through the Dispatch v2 API (/v2/dispatch/{meter|group}/webhook).

    Receivers must listen on HTTPS port 443, 8443 or 8843 with TLS 1.2 or 1.3, and return any
    2xx status within 10 seconds. Failed deliveries are retried up to 10 times over roughly
    8 hours (immediate, 1m, 2m, 4m, 8m, 16m, 29m, 1h, 2h, 4h), after which Leap stops.
  contact:
    name: Leap API Team
    email: apiteam@leap.energy
    url: https://developer.leap.energy/docs/webhook-setup
defaultContentType: application/json
servers:
  partner-receiver:
    host: partner-supplied
    protocol: https
    description: The partner-hosted receiver URL registered through the Webhook Subscription API or the
      Partner Portal. Must be HTTPS on port 443, 8443 or 8843 with TLS 1.2 or 1.3.
channels:
  connectSessionEvents:
    address: partner receiver_url
    title: Connect session events
    description: Emitted as a customer moves through a Leap Connect or direct-to-utility authorization
      session.
    messages:
      connectSessionUpdated:
        $ref: '#/components/messages/connectSessionUpdated'
      connectSessionAuthorizationUpdated:
        $ref: '#/components/messages/connectSessionAuthorizationUpdated'
  meterEvents:
    address: partner receiver_url
    title: Meter and enrollment events
    description: Emitted when meters are added to the partner account and as enrollment state changes.
    messages:
      meterCreated:
        $ref: '#/components/messages/meterCreated'
      meterEnrollmentGlobalStatusUpdated:
        $ref: '#/components/messages/meterEnrollmentGlobalStatusUpdated'
      meterEnrollmentParticipationStatusUpdated:
        $ref: '#/components/messages/meterEnrollmentParticipationStatusUpdated'
      meterEnrollmentRequiredActionsUpdated:
        $ref: '#/components/messages/meterEnrollmentRequiredActionsUpdated'
      meterEnrollmentGroupUpdated:
        $ref: '#/components/messages/meterEnrollmentGroupUpdated'
  meterDispatchEvents:
    address: meter-level dispatch webhook URL
    title: Meter-level dispatch notifications
    description: Grid dispatch instructions for individual meters. Registered with createOrUpdateMeterDispatchWebhook
      and testable with triggerTestMeterDispatchNotification.
    messages:
      meterDispatch:
        $ref: '#/components/messages/meterDispatch'
  groupDispatchEvents:
    address: group-level dispatch webhook URL
    title: Group-level dispatch notifications
    description: Grid dispatch instructions for market groups. Registered with createOrUpdateGroupDispatchWebhook
      and testable with triggerTestGroupDispatchNotification.
    messages:
      groupDispatch:
        $ref: '#/components/messages/groupDispatch'
operations:
  receiveConnectSessionEvents:
    action: receive
    channel:
      $ref: '#/channels/connectSessionEvents'
  receiveMeterEvents:
    action: receive
    channel:
      $ref: '#/channels/meterEvents'
  receiveMeterDispatchEvents:
    action: receive
    channel:
      $ref: '#/channels/meterDispatchEvents'
  receiveGroupDispatchEvents:
    action: receive
    channel:
      $ref: '#/channels/groupDispatchEvents'
components:
  messages:
    connectSessionUpdated:
      name: connect_session.updated
      title: Connect session updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/ConnectSessionUpdatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: connect_session.updated
    connectSessionAuthorizationUpdated:
      name: connect_session.authorization_updated
      title: Connect session authorization updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/ConnectSessionAuthorizationUpdatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: connect_session.authorization_updated
    meterCreated:
      name: meter.created
      title: Meter created
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/MeterCreatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: meter.created
    meterEnrollmentGlobalStatusUpdated:
      name: meter.enrollment.global-status.updated
      title: Meter enrollment global status updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/MeterEnrollmentGlobalStatusUpdatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: meter.enrollment.global-status.updated
    meterEnrollmentParticipationStatusUpdated:
      name: meter.enrollment.participation-status.updated
      title: Meter enrollment participation status updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/MeterEnrollmentParticipationStatusUpdatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: meter.enrollment.participation-status.updated
    meterEnrollmentRequiredActionsUpdated:
      name: meter.enrollment.required-actions.updated
      title: Meter enrollment partner-required actions updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/MeterEnrollmentPartnerRequiredActionsUpdatedV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: meter.enrollment.required-actions.updated
    meterEnrollmentGroupUpdated:
      name: meter.enrollment.group.updated
      title: Meter VPP group membership updated
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-webhooks-openapi-original.yml#/components/schemas/MeterEnrollmentGroupUpdatedEventV1Wrapped
        properties:
          webhook_event_type:
            type: string
            const: meter.enrollment.group.updated
    meterDispatch:
      name: meter-dispatch
      title: Meter dispatch notification
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-dispatching-openapi-original.yml#/components/schemas/WebhookMeterDispatchEvent
        properties:
          meter_id:
            type: string
          partner_reference:
            type: string
          timeslots:
            type: array
            description: Dispatch timeslots — start_time, end_time, energy_kw, nomination_kw, cancelled,
              priority, is_voluntary, dispatch_event_types, programs, performance_compensation_cap.
    groupDispatch:
      name: group-dispatch
      title: Market group dispatch notification
      contentType: application/json
      payload:
        type: object
        x-openapi-schema: openapi/leap-dispatching-openapi-original.yml#/components/schemas/WebhookMarketGroupDispatchEvent
        properties:
          market_group_id:
            type: string
          meter_ids:
            type: array
          partner_references:
            type: array
          timeslots:
            type: array