Enphase Energy Site Level Production Monitoring API

The Site Level Production Monitoring API from Enphase Energy — 5 operation(s) for site level production monitoring.

OpenAPI Specification

enphase-energy-site-level-production-monitoring-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: The Enlighten Systems Device Level Production Monitoring Site Level Production Monitoring API
  description: 'The Enlighten Systems API is a JSON-based API that provides access to performance data for a PV system. By using the Enlighten Systems API, you agree to the Enphase Energy API License Agreement.


    Please note that the Enlighten Systems API does not provide performance data at a panel or microinverter level.'
  version: '2.0'
  termsOfService: https://developer.enphase.com/docs#Display-Requirements
  license:
    name: Enphase API License Agreement
    url: https://www.enphase.com/en-us/legal/api-license-agreement
servers:
- url: https://api.enphaseenergy.com/api/v2
security:
- ApiKey: []
tags:
- name: Site Level Production Monitoring
paths:
  /api/v4/systems/{system_id}/production_meter_readings:
    get:
      summary: production_meter_readings
      description: "Returns the last known reading of each production meter on the system as of the requested time, regardless of whether the meter is currently in service or retired. \n Read_at is the time at which the reading was taken, and is always less than or equal to the requested end_at. Commonly, the reading will be within 30 minutes of the requested end_at. However, larger deltas can occur and do not necessarily mean there is a problem with the meter or the system. Systems that are configured to report infrequently can show large deltas on all meters, especially when end_at is close to the current time. Meters that have been retired from a system will show an end_at that doesn’t change, and that eventually is far away from the current time."
      operationId: getProductionMeterReadings
      tags:
      - Site Level Production Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - name: end_at
        in: query
        description: End of reporting period in Unix epoch time. If no end is specified, defaults to the time of the request. If the end is later than the last reported interval the response data ends with the last reported interval
        schema:
          type: integer
      responses:
        '200':
          description: production_meter_readings
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: System id
                  meter_readings:
                    type: array
                    items:
                      type: object
                      properties:
                        serial_num:
                          type: string
                          description: The serial number of the meter
                        value:
                          type: integer
                          description: The meter reading, in Wh
                        read_at:
                          type: integer
                          description: The time when the reading was taken, always prior or equal to the requested 'end_at'
                    description: Production Meter Readings
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              examples:
                response:
                  value:
                    system_id: 66
                    meter_readings:
                    - serial_num: 123123123123EIM1
                      value: 6180635
                      read_at: 1473901200
                    meta:
                      status: normal
                      last_report_at: 1473902079
                      last_energy_at: 1473901200
                      operational_at: 1357023600
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Not Authorized
                    details: User is not authorized
                    code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Forbidden
                    details: Not authorized to access this resource
                    code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Not Authorized
                    details: System not found for {:id=>"1"}
                    code: 404
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              examples:
                response:
                  value:
                    reason: '405'
                    message:
                    - Method not allowed
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Unprocessable Entity
                    details: Failed to parse date 1613543106
                    code: 422
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
                  period:
                    type: string
                    description: Quota exceeded for minute/month
                  period_start:
                    type: integer
                    description: Starting period timestamp
                  period_end:
                    type: integer
                    description: Ending period timestamp
                  limit:
                    type: integer
                    description: Limit count for the period
              examples:
                response:
                  value:
                    message: Too Many Requests
                    details: Usage limit exceeded for plan Kilowatt
                    code: 429
                    period: minute
                    period_start: 1623825660
                    period_end: 1623825720
                    limit: 5
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              examples:
                response:
                  value:
                    reason: '501'
                    message:
                    - Not Implemented
  /api/v4/systems/{system_id}/rgm_stats:
    get:
      summary: rgm_stats
      description: "Returns performance statistics as measured by the revenue-grade meters installed on the specified system. If the total duration requested is more than one week, returns one week of intervals. Intervals are 15 minutes in length and start at the top of the hour.\n Requests for times that do not fall on the 15-minute marks are rounded down. For example, a request for 08:01, 08:08, 08:11, or 08:14 (in epoch format) is treated as a request for 08:00 (in epoch format). Intervals are listed by their end times in epoch format.\n The requested date range in one API hit cannot be more than 7 days and the requested start at must be within 2 years from current time. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at. Empty list will be returned if the last interval < requested start time < current time."
      operationId: getRgmStats
      tags:
      - Site Level Production Monitoring
      parameters:
      - name: system_id
        in: path
        description: The numeric id of the system
        required: true
        schema:
          type: integer
      - name: start_at
        in: query
        description: Start of period to report on in Unix epoch time. If no start is specified, the assumed start is midnight today, in the timezone of the system. If the start is earlier than the system’s operational_date, the response data begins at midnight of the first reported interval date.
        schema:
          type: integer
      - name: end_at
        in: query
        description: End of reporting period in Unix epoch time. If no end is specified, default to the time of the request or (start time + 1 week), whichever is earlier. If the end is later than the last reported interval the response data ends with the last reported interval.
        schema:
          type: integer
      responses:
        '200':
          description: rgm_stats
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: System id
                  total_devices:
                    type: integer
                    description: Number of active production meters for this system.
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
                  intervals:
                    type: array
                    items:
                      properties:
                        end_at:
                          type: integer
                          description: End time of the telemetry interval.
                        devices_reporting:
                          type: integer
                          description: Number of production meters that reported data for this interval at the time of the request.
                        wh_del:
                          type: integer
                          description: Energy delivered during this interval, in Wh.
                    description: A list of intervals between the requested start and end times.
                  meter_intervals:
                    type: array
                    items:
                      properties:
                        meter_serial_number:
                          type: string
                          description: Meter serial number
                        envoy_serial_number:
                          type: string
                          description: Enovy serial number of the system that the meter reports to
                        intervals:
                          type: array
                          items:
                            properties:
                              channel:
                                type: integer
                                description: The reporting channel id
                              end_at:
                                type: integer
                                description: End time of the telemetry interval.
                              wh_del:
                                type: integer
                                description: Energy delivered during this interval, in Wh (Watt-Hour).
                              curr_w:
                                type: integer
                                description: Power delivered during this interval, in W (Watts).
                          description: Individual meter level interval.
                    description: A list of intervals of a meter between the requested start and end times.
              examples:
                response:
                  value:
                    system_id: 66
                    total_devices: 2
                    meta:
                      status: normal
                      last_report_at: 1470087000
                      last_energy_at: 1470086106
                      operational_at: 1357023600
                    intervals:
                    - end_at: 1384122700
                      wh_del: 50
                      devices_reporting: 2
                    - end_at: 1384123600
                      wh_del: 100
                      devices_reporting: 2
                    - end_at: 1384124500
                      wh_del: 15
                      devices_reporting: 2
                    - end_at: 1384125400
                      wh_del: 21
                      devices_reporting: 2
                    - end_at: 1384126300
                      wh_del: 34
                      devices_reporting: 2
                    meter_intervals:
                    - meter_serial_number: '1218676784'
                      envoy_serial_number: '1218347675'
                      intervals:
                      - channel: 1
                        end_at: 1384122700
                        wh_del: 30
                        curr_w: 120
                      - channel: 1
                        end_at: 1384123600
                        wh_del: 50
                        curr_w: 200
                      - channel: 1
                        end_at: 1384124500
                        wh_del: 10
                        curr_w: 40
                      - channel: 1
                        end_at: 1384125400
                        wh_del: 10
                        curr_w: 40
                      - channel: 1
                        end_at: 1384126300
                        wh_del: 20
                        curr_w: 80
                    - meter_serial_number: '1218676791'
                      envoy_serial_number: '1218347675'
                      intervals:
                      - channel: 1
                        end_at: 1384122700
                        wh_del: 20
                        curr_w: 80
                      - channel: 1
                        end_at: 1384123600
                        wh_del: 50
                        curr_w: 200
                      - channel: 1
                        end_at: 1384124500
                        wh_del: 5
                        curr_w: 20
                      - channel: 1
                        end_at: 1384125400
                        wh_del: 11
                        curr_w: 44
                      - channel: 1
                        end_at: 1384126300
                        wh_del: 14
                        curr_w: 56
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Not Authorized
                    details: User is not authorized
                    code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Forbidden
                    details: Not authorized to access this resource
                    code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Not Found
                    details: System not found for {:id=>"1"}
                    code: 404
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              examples:
                response:
                  value:
                    reason: '405'
                    message:
                    - Method not allowed
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Unprocessable Entity
                    details: Requested date range is invalid for this system
                    code: 422
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
                  period:
                    type: string
                    description: Quota exceeded for minute/month
                  period_start:
                    type: integer
                    description: Starting period timestamp
                  period_end:
                    type: integer
                    description: Ending period timestamp
                  limit:
                    type: integer
                    description: Limit count for the period
              examples:
                response:
                  value:
                    message: Too Many Requests
                    details: Usage limit exceeded for plan Kilowatt
                    code: 429
                    period: minute
                    period_start: 1623825660
                    period_end: 1623825720
                    limit: 5
        '500':
          description: 'Under some conditions, data for a given period may be temporarily unavailable. When this condition is detected, the response code is 500 and the response body is:'
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: integer
                    description: Error Code
                  errorMessages:
                    type: array
                    description: Error Messages
                    items:
                      type: string
              examples:
                response:
                  value:
                    errorCode: 7
                    errorMessages:
                    - Data is temporarily unavailable
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              examples:
                response:
                  value:
                    reason: '501'
                    message:
                    - Not Implemented
  /api/v4/systems/{system_id}/energy_lifetime:
    get:
      summary: energy_lifetime
      description: "Returns a daily time series of energy produced by the system over its lifetime. All measurements are in Watt hours.\n The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been reported for the last days in the series.\n If the system has a meter, the time series includes data as measured by the microinverters until the first full day after the meter has been installed. Later, it switches to using the data as measured by the meter. This is called the “merged time series.”  The attribute “meter_start_date” indicates the time when the meter measurements begin to be used. You can retrieve the complete time series from the meter and from the microinverters by adding the parameter production=all to the request."
      operationId: getEnergyLifetime
      tags:
      - Site Level Production Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - name: start_date
        in: query
        description: Start date of the time series data. Defaults to the system’s operational date. If the start_date is earlier than the system’s operational_date, then the response data begins with the system operational_date as start_date. Pass as String date format YYYY-MM-DD.
        schema:
          type: string
      - name: end_date
        in: query
        description: End date of the time series data. Defaults to yesterday. Pass as String date format YYYY-MM-DD.
        schema:
          type: string
      - name: production
        in: query
        description: When “all”, returns the merged time series plus the time series as reported by the microinverters and the meter on the system. Other values are ignored.
        schema:
          type: string
      responses:
        '200':
          description: 'When the query parameters include “production=all”, returns meter and microinverter-measured time series:'
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: System id
                  start_date:
                    type: string
                    description: When no start_date parameter is specified on the request, this is the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, it is included here in the response.
                  meter_start_date:
                    type: string
                    description: The first day in the time series when measurements are taken from a meter instead of from microinverters. This field is not present unless the system has a meter.
                  production:
                    type: array
                    description: An array of production measurements, one for each day since the system started producing, or one for each day of the requested period. If the system has never produced energy, the array may be empty.
                    items:
                      type: integer
                  micro_production:
                    type: array
                    description: Array of production measurements reported by the microinverters.
                    items:
                      type: integer
                    nullable: true
                  meter_production:
                    type: array
                    description: Array of production measurements reported by the meter.
                    items:
                      type: integer
                    nullable: true
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              examples:
                response:
                  value:
                    system_id: 66
                    start_date: 2013-01-01
                    meter_start_date: 2013-01-04
                    production:
                    - 15422
                    - 15421
                    - 17118
                    - 18505
                    - 18511
                    - 18487
                    micro_production:
                    - 15422
                    - 15421
                    - 17118
                    - 18513
                    - 18520
                    - 18494
                    meter_production:
                    - 0
                    - 0
                    - 11388
                    - 18505
                    - 18511
                    - 18487
                    meta:
                      status: normal
                      last_report_at: 1445619615
                      last_energy_at: 1445619033
                      operational_at: 1357023600
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Not Authorized
                    details: User is not authorized
                    code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              examples:
                response:
                  value:
                    message: Forbidden
                    details: Not authorized to access this resource
                    code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              

# --- truncated at 32 KB (57 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase-energy/refs/heads/main/openapi/enphase-energy-site-level-production-monitoring-api-openapi.yml