openapi: 3.0.0
info:
title: Monitoring API
version: v4
license:
name: Custom
url: https://github.com/andrewdmontgomery/Enphase-OpenAPI
security:
- oauth2: []
apiKey: []
paths:
/api/v4/systems:
get:
summary: Fetch systems
description: Returns a list of systems for which the user can make API requests.
By default, systems are returned in batches of 10. The maximum size is
100.
operationId: listSystems
tags:
- System Details
parameters:
- name: page
in: query
description: The page to be returned. Default=1, Min=1. For example, if page is
set to 2, 2nd page is returned
schema:
type: integer
- name: size
in: query
description: Maximum number of records shown per page. Default=10, Min=1,
Max=100. For example, if max is set to 5, 5 records are shown per
page
schema:
type: integer
- name: sort_by
in: query
description: Returns list of systems sorted by <sort_by> field. To get the ASC
order sorted list, user sort_by = id. To get the DESC order sorted
list, use sort_by = -id. By default, the list is sorted by ascending
order of system ID.
schema:
type: string
enum:
- id
- -id
responses:
"200":
description: List of Systems
content:
application/json:
schema:
type: object
properties:
total:
type: integer
description: Total number of systems
current_page:
type: integer
description: "Number of the current page fetched "
size:
type: integer
description: Maximum number of records shown per page. Default=10, Min=1,
Max=100.
count:
type: integer
description: Total number of systems actually returned for the current page
items:
type: string
description: Named key of the list data. In this endpoint, it is systems
systems:
type: array
items:
properties:
system_id:
type: integer
description: The unique numeric ID of the system
name:
type: string
description: Name of the system
public_name:
type: string
description: Name displayed on the public system page. Available values are All,
Residential System, Commercial etc.
Default='Residential System'. Only for systems that
allow public access.
timezone:
type: string
nullable: true
description: Timezone to which the system belongs
address:
type: object
properties:
city:
type: string
description: City in which the system is located
state:
type: string
nullable: true
description: State in which the system is located
country:
type: string
nullable: true
description: Country in which the system is located
postal_code:
type: string
nullable: true
description: Postal Code of the system's location
description: Address object for the system. It can contain the following items
connection_type:
allOf:
- $ref: "#/components/schemas/SystemConnectionType"
description: Connection Type of the system. Available values are ethernet,
Wi-Fi, Cellular
energy_lifetime:
type: integer
description: Deprecated field. The API will always return this field as -1
energy_today:
type: integer
description: Deprecated field. The API will always return this field as -1
system_size:
type: number
format: float
description: Deprecated field. The API will always return this field as -1
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
nullable: true
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
nullable: true
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.
attachment_type:
type: string
allOf:
- $ref: "#/components/schemas/MicroinverterAttachmentType"
nullable: true
description: Micro inverter attachment type. Available values are rack_mount,
zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: string
format: date
nullable: true
description: Date on which the system was approved to connect to the grid
reference:
type: string
description: If the calling user belongs to a company and that company has
provided its own identifier for a system, that ID is
included here. Otherwise, this attribute is not
returned.
other_references:
type: array
items:
type: string
description: If any other companies have provided their own identifiers for a
system, those identifiers are included here.
Otherwise, this attribute is not returned.
description: "List of systems. It contains the following:"
example:
total: 28
current_page: 1
size: 2
count: 2
items: systems
systems:
- system_id: 698910067
name: Enphase System
public_name: Residential System
timezone: Australia/Sydney
address:
city: Sydney
state: NSW
country: AU
postal_code: "2127"
connection_type: ethernet
energy_lifetime: -1
energy_today: -1
system_size: -1
status: micro
last_report_at: 1508174262
last_energy_at: 1508174172
operational_at: 1497445200
attachment_type: acm
interconnect_date: null
reference: "106015287"
other_references:
- "106015287"
- system_id: 698906018
name: Enphase Public System
public_name: Residential System
timezone: US/Pacific
address:
city: Los Angeles
state: CA
country: US
postal_code: "94954"
connection_type: ethernet
energy_lifetime: -1
energy_today: -1
system_size: -1
status: normal
last_report_at: 1508174262
last_energy_at: 1508174172
operational_at: 1497445200
attachment_type: rack_mount
interconnect_date: null
reference: "106015287"
other_references:
- "106015287"
"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
"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: Invalid request because of 'The sorting parameter is not supported.
Please use id for sorting by Asc or -id for sorting by
Desc'
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/search:
post:
summary: Search and filter systems
description: Search and filter systems. Provide only valid values in request
parameters. Empty values will be ignored. Invalid keys will be rejected.
operationId: searchSystems
tags:
- System Details
parameters:
- name: page
in: query
description: The page to be returned. Default=1, Min=1, e.g=2
schema:
type: integer
- name: size
in: query
description: Maximum number of records shown per page. Default=10, Min=1,
Max=1000, e.g=5
schema:
type: integer
requestBody:
content:
application/json:
schema:
type: object
properties:
sort_by:
type: string
enum:
- id
- -id
description: Returns list of systems sorted by <sort_by> field. To get ASC order
sorted list, user sort_by = id. To get DESC order sorted
list, use sort_by = -id. By default, the list is sorted by
ascending order of system ID.
system:
type: object
properties:
ids:
type: array
description: Filter system by particular Ids
items:
type: integer
name:
type: string
description: Search by name of the System.
reference:
type: string
description: Search by reference of the System.
other_reference:
type: string
description: Search by any other_references of the System.
statuses:
type: array
description: Search by System status.
items:
type: string
enum:
- normal
- comm
- micro
- power
- meter
- battery
- storage_idle
- meter_issue
- enpower
- encharge
- enpower_issue
- encharge_issue
required:
- system
responses:
"200":
description: List of Systems
content:
application/json:
schema:
type: object
properties:
total:
type: integer
description: Total number of systems available
current_page:
type: integer
description: Current page of the systems result. Default is 1
size:
type: integer
description: Max number of records from API per page is 100. Default is 10.
count:
type: integer
description: Total number of systems actually returned for the current page
items:
type: string
description: Named key of the list data. In this endpoint, it is systems
systems:
type: array
items:
properties:
system_id:
type: integer
description: The unique numeric ID of the system
name:
type: string
description: Name of the system
public_name:
type: string
description: Name displayed on the public system page. Available values are All,
Residential System, Commercial etc.
Default='Residential System'. Only for systems that
allow public access.
timezone:
type: string
nullable: true
description: Timezone to which the system belongs
address:
type: object
properties:
state:
type: string
nullable: true
description: State in which the system is located
country:
type: string
nullable: true
description: Country in which the system is located
postal_code:
type: string
nullable: true
description: Postal Code of the system's location
description: Address object for the system. It can contain the following items
connection_type:
allOf:
- $ref: "#/components/schemas/SystemConnectionType"
description: Connection Type of the system. Available values are ethernet,
Wi-Fi, Cellular
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
nullable: true
description: Timestamp (in epoch format) at which the system's Envoy last
submitted a report
last_energy_at:
type: integer
nullable: true
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
nullable: true
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.
attachment_type:
type: string
allOf:
- $ref: "#/components/schemas/MicroinverterAttachmentType"
nullable: true
description: Micro inverter attachment type. Available values are rack_mount,
zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: string
format: date
nullable: true
description: Date on which the system was approved to connect to the grid
energy_lifetime:
type: integer
description: Deprecated field. The API will always return this field as -1
energy_today:
type: integer
description: Deprecated field. The API will always return this field as -1
system_size:
type: number
format: float
description: Deprecated field. The API will always return this field as -1
reference:
type: string
nullable: true
description: Company specific identifier for the system when available.
other_references:
type: array
items:
type: string
description: Additional identifiers provided by other companies, when available.
description: List of filtered systems. It contains the following items
example:
total: 28
current_page: 1
size: 2
count: 2
items: systems
systems:
- system_id: 698910067
name: Enphase System
public_name: Residential System
timezone: null
address:
? state
? country
? postal_code
connection_type: ethernet
status: micro
last_report_at: 1557400231
last_energy_at: null
operational_at: null
attachment_type: bipv
interconnect_date: null
energy_lifetime: -1
energy_today: -1
system_size: -1
- system_id: 698906018
name: Enphase Public System
public_name: Residential System
timezone: US/Pacific
address:
state: CA
country: US
postal_code: "94954"
connection_type: ethernet
status: normal
last_report_at: 1508174262
last_energy_at: 1508174172
operational_at: 1497445200
attachment_type: acm
interconnect_date: null
energy_lifetime: -1
energy_today: -1
system_size: -1
reference: "106015287"
other_references:
- "106015287"
"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
"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: system is missing at Json body location
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}":
get:
summary: Retrieves a System by id
description: Retrieves a System by ID
operationId: getSystemById
tags:
- System Details
parameters:
- name: system_id
in: path
description: The unique numeric ID of the system. If an empty value is passed in
the ID, this endpoint behaves as Fetch systems endpoint.
required: true
schema:
type: integer
responses:
"200":
description: System fetched
content:
application/json:
schema:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
name:
type: string
description: Name of the system
public_name:
type: string
description: Name displayed on the public system page. Available values are All,
Residential System, Commercial etc. Default='Residential
System'. Only for systems that allow public access.
timezone:
type: string
description: Timezone to which the system belongs
address:
type: object
properties:
city:
type: string
description: City in which the system is located
state:
type: string
description: State in which the system is located
country:
type: string
description: Country in which the system is located
postal_code:
type: string
description: Postal Code of the system's location
description: Address object for the system. It can contain the following items
connection_type:
type: string
description: Connection Type of the system. Available values are ethernet,
Wi-Fi, Cellular
energy_lifetime:
type: integer
description: Deprecated field. The API will always return this field as -1
energy_today:
type: integer
description: Deprecated field. The API will always return this field as -1
system_size:
type: number
format: float
description: Deprecated field. The API will always return this field as -1
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
nullable: true
description: Timestamp (in epoch format) at which the system's Envoy last
submitted a report
last_energy_at:
type: integer
nullable: true
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
nullable: true
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.
attachment_type:
type: string
nullable: true
description: Micro inverter attachment type. Available values are rack_mount,
zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: string
format: date
nullable: true
description: Date on which the system was approved to connect to the grid
reference:
type: string
description: If the calling user belongs to a company and that company has
provided its own identifier for a system, that ID is
included here. Otherwise, this attribute is not returned.
other_references:
type: array
items:
type: string
description: If any other companies have provided their own identifiers for a
system, those identifiers are included here. Otherwise,
this attribute is not returned.
examples:
response:
value:
system_id: 72
name: Enphase System
# --- truncated at 32 KB (412 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase-energy/refs/heads/main/openapi/enphase-enlighten-v4-monitoring-openapi.yml