Enphase Energy Site Level Consumption Monitoring API
The Site Level Consumption Monitoring API from Enphase Energy — 9 operation(s) for site level consumption monitoring.
The Site Level Consumption Monitoring API from Enphase Energy — 9 operation(s) for site level consumption monitoring.
openapi: 3.0.0
info:
title: The Enlighten Systems Device Level Production Monitoring Site Level Consumption 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 Consumption Monitoring
paths:
/api/v4/systems/{system_id}/consumption_lifetime:
get:
summary: consumption_lifetime
description: "Returns a daily time series of energy consumption as measured by the consumption meter installed on the specified system. All measurements are in Watt hours.\n The time series includes one entry for each day from the start_date to the end_date. There are no gaps in the time series. If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no data has been reported for the last three days."
operationId: getConsumptionLifetime
tags:
- Site Level Consumption 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: Requested 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
responses:
'200':
description: consumption_lifetime
content:
application/json:
schema:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
start_date:
type: string
description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
consumption:
type: array
description: An array of consumption measurements in Wh, one for each day since consumption metering began, or one for each day of the requested period
items:
type: integer
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: 2016-08-01
consumption:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
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 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 is in the future
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
examples:
response:
value:
message: Too Many Requests
details: Usage limit exceeded for plan Kilowatt
code: 429
'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}/battery_lifetime:
get:
summary: battery_lifetime
description: Returns a daily time series of energy charged into the batteries and energy discharged from the batteries for a system over its lifetime. All measurements are in Watt hours. 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 charged/discharged for the last days in the series.
operationId: getBatteryLifetime
tags:
- Site Level Consumption 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: Requested 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
responses:
'200':
description: battery_lifetime
content:
application/json:
schema:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
start_date:
type: string
description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
charge:
type: array
description: An array of charge 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
discharge:
type: array
description: An array of dicharge 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
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: 2016-08-01
discharge:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
charge:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
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 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 is in the future
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
examples:
response:
value:
message: Too Many Requests
details: Usage limit exceeded for plan Kilowatt
code: 429
'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_import_lifetime:
get:
summary: import_lifetime
description: Returns a daily time series of energy imported to the grid by the system over its lifetime. All measurements are in Watt hours. 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 contains trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been imported for the last days in the series.
operationId: getEnergyImportLifetime
tags:
- Site Level Consumption 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: Requested 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
responses:
'200':
description: import_lifetime
content:
application/json:
schema:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
start_date:
type: string
description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
import:
type: array
description: An array of import 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
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: 2016-08-01
import:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
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 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 is in the future
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
examples:
response:
value:
message: Too Many Requests
details: Usage limit exceeded for plan Kilowatt
code: 429
'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_export_lifetime:
get:
summary: export_lifetime
description: Returns a daily time series of energy exported to the grid by the system over its lifetime. All measurements are in Watt-hours. 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 contains trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been exported for the last days in the series.
operationId: getEnergyExportLifetime
tags:
- Site Level Consumption 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: Requested 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
responses:
'200':
description: export_lifetime
content:
application/json:
schema:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
start_date:
type: string
description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
export:
type: array
description: An array of export 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
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: 2016-08-01
export:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
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:
# --- truncated at 32 KB (87 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase-energy/refs/heads/main/openapi/enphase-energy-site-level-consumption-monitoring-api-openapi.yml