Enphase Energy · AsyncAPI Specification

Enphase Enlighten Live Status Stream

Version v4

Server-sent event stream of a single Enphase system's real-time power state. Derived by API Evangelist from the published Monitoring API operation getLiveData, which produces text/event-stream and carries a complete message schema and example in the spec. Enphase publishes no AsyncAPI document and operates no webhook or message-broker surface; this HTTP live-status stream is the only event-shaped surface in the Enphase v4 platform. The stream is opened by an HTTP GET and runs for a caller-chosen 30-300 seconds, then closes.

View Spec View on GitHub EnergyUnited StatesSolarDERRenewablesBattery StorageEV ChargingDemand ResponseVirtual Power PlantGrid ServicesMicroinvertersHome Energy ManagementSmart MeteringTelemetryAsyncAPIWebhooksEvents

Channels

liveStatus
SSE frames for the requested duration. The duration header accepts 30-300 seconds, default 30. Requires an IQ Gateway on firmware 6.0.0 or later.

Messages

liveStatusFrame
Live status frame
streamError
Live status error frame
Error frames carry the Enphase stream error envelope. Codes: 401, 403, 429, 461/462/463 INVALID_DURATION, 466 UNSUPPORTED_ENVOY, 468 INVALID_SYSTEM_ID, 472 LIVE_STREAM_NOT_SUPPORTED, 473 IQ_GATEWAY_NOT_REPORTING, 550/551 SERVICE_UNREACHABLE, 552 CONNECTION_NOT_ESTABLISHED. See errors/enphase-problem-types.yml.

Servers

https
production
Enphase Enlighten Systems API v4

AsyncAPI Specification

Raw ↑
asyncapi: 3.0.0
info:
  title: Enphase Enlighten Live Status Stream
  version: v4
  description: Server-sent event stream of a single Enphase system's real-time power state. Derived by
    API Evangelist from the published Monitoring API operation getLiveData, which produces text/event-stream
    and carries a complete message schema and example in the spec. Enphase publishes no AsyncAPI document
    and operates no webhook or message-broker surface; this HTTP live-status stream is the only event-shaped
    surface in the Enphase v4 platform. The stream is opened by an HTTP GET and runs for a caller-chosen
    30-300 seconds, then closes.
  contact:
    name: Enphase API Support
    email: api@enphaseenergy.com
    url: https://developer-v4.enphase.com/docs/support
  x-generated: '2026-07-27'
  x-method: derived
  x-source: openapi/enphase-monitoring-api-openapi.json#getLiveData
  x-source-url: https://developer-v4.enphase.com/swagger/spec/System_API.json
  x-plan-requirement: Streaming API access control - Kilowatt plan or above
servers:
  production:
    host: api.enphaseenergy.com
    protocol: https
    description: Enphase Enlighten Systems API v4
channels:
  liveStatus:
    address: /api/v4/systems/{system_id}/live_data
    title: System live status
    description: SSE frames for the requested duration. The duration header accepts 30-300 seconds, default
      30. Requires an IQ Gateway on firmware 6.0.0 or later.
    parameters:
      system_id:
        description: The unique numeric ID of the Enlighten system
    messages:
      liveStatusFrame:
        $ref: '#/components/messages/liveStatusFrame'
      streamError:
        $ref: '#/components/messages/streamError'
operations:
  receiveLiveStatus:
    action: receive
    channel:
      $ref: '#/channels/liveStatus'
    summary: Receive real-time PV, consumption, battery, generator and grid power for one system
    security:
    - $ref: '#/components/securitySchemes/oauth2'
    - $ref: '#/components/securitySchemes/apiKey'
    messages:
    - $ref: '#/channels/liveStatus/messages/liveStatusFrame'
    - $ref: '#/channels/liveStatus/messages/streamError'
components:
  messages:
    liveStatusFrame:
      name: liveStatusFrame
      title: Live status frame
      contentType: text/event-stream
      payload:
        properties:
          data:
            properties:
              battery_mode:
                description: Battery mode of the site; Possible values are Savings Mode, Full Backup,
                  and Self-consumption
                type: string
              battery_power:
                description: Battery power in watts; Power will be positive in case of discharge and negative
                  in case of charge
                type: integer
              battery_soc:
                description: Battery soc in percentage
                type: integer
              consumption_power:
                description: Consumption power in watts
                type: integer
              envoy_serial_number:
                items:
                  description: Serial number of the envoy; For multi-envoy sites, the data will be returned
                    only for one of the envoys
                  type: string
                type: array
              generator_power:
                description: Generator power in watts
                type: integer
              grid_power:
                description: Grid power in watts; Power will be negative in case of export and positive
                  in case of import
                type: integer
              grid_status:
                description: Grid state of the site; Possible values are On Grid, Off Grid, Unknown
                type: string
              pv_power:
                description: PV power in watts
                type: integer
              system_id:
                description: The unique numeric ID of the system
                type: integer
            type: object
          timestamp_epoch:
            description: timestamp in epoch format
            type: integer
          timestamp_utc:
            description: timestamp in UTC format
            type: string
          type:
            description: response
            type: string
        type: object
      examples:
      - name: sample
        payload:
          data:
            battery_mode: Savings Mode
            battery_power: 5
            battery_soc: 40
            consumption_power: 15
            envoy_serial_number:
            - '1234'
            generator_power: 0
            grid_power: -10
            grid_status: On Grid
            pv_power: 30
            system_id: 123
          timestamp_epoch: 1679041508556
          timestamp_utc: '2023-03-17 08:25:08.556'
          type: response
    streamError:
      name: streamError
      title: Live status error frame
      contentType: text/event-stream
      summary: 'Error frames carry the Enphase stream error envelope. Codes: 401, 403, 429, 461/462/463
        INVALID_DURATION, 466 UNSUPPORTED_ENVOY, 468 INVALID_SYSTEM_ID, 472 LIVE_STREAM_NOT_SUPPORTED,
        473 IQ_GATEWAY_NOT_REPORTING, 550/551 SERVICE_UNREACHABLE, 552 CONNECTION_NOT_ESTABLISHED. See
        errors/enphase-problem-types.yml.'
      payload:
        type: object
        properties:
          error:
            type: object
            properties:
              code:
                type: integer
              message:
                type: string
              status:
                type: string
              details:
                type: array
                items:
                  type: object
          timestamp_epoch:
            type: integer
          timestamp_utc:
            type: string
          type:
            type: string
            enum:
            - validation_error
            - site_connectivity_error
            - server_error
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://api.enphaseenergy.com/oauth/authorize
          tokenUrl: https://api.enphaseenergy.com/oauth/token
          availableScopes:
            read: Read system data approved by the system owner
    apiKey:
      type: httpApiKey
      name: key
      in: query
      description: Application API key issued by the Enphase Developer Portal