Enphase Energy System Details API
The System Details API from Enphase Energy — 12 operation(s) for system details.
GET
/api/v4/systems
Fetch systems
POST
/api/v4/systems/search
Search and filter systems
GET
/api/v4/systems/{system_id}
Retrieves a System by id
GET
/api/v4/systems/{system_id}/summary
Retrieves a system summary
GET
/api/v4/systems/{system_id}/devices
Retrieves devices for a given system
GET
/api/v4/systems/retrieve_system_id
Retrieve system for a given envoy serial number
GET
/api/v4/systems/{system_id}/events
To retrieve the list of events for a site
GET
/api/v4/systems/{system_id}/alarms
To retrieve the list of alarms for a site
GET
/api/v4/systems/event_types
To retrieve the list of event_type_id along with event_description and recommended_action
GET
/api/v4/systems/{system_id}/open_events
To retrieve the list of all open events of a site
GET
/api/v4/systems/{system_id}/open_alarms
To retrieve the list of all open alarms of a site
GET
/api/v4/systems/inverters_summary_by_envoy_or_site
inverters_summary_by_envoy_or_site
Documentation
Specifications
Other Resources
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/enphase-system-details-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Monitoring System Details API
version: v4
servers:
- url: https://api-qa2.enphaseenergy.com
tags:
- name: System Details
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.
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
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
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.
attachment_type:
type: string
description: Micro inverter attachment type. Available values are rack_mount, zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: integer
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: null
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: null
interconnect_date: null
'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
example:
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
example:
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
example:
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
example:
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
example:
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.
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
- name: live_stream
in: query
description: Indicates whether the live_stream field should be included in the response (true to include, false to omit).
schema:
type: boolean
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
description: Timezone to which the system belongs
address:
type: object
properties:
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
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.
attachment_type:
type: string
description: Micro inverter attachment type. Available values are rack_mount, zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: integer
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
live_stream:
type: string
description: Shows the status live stream via Kafka is enabled or not for the site => "enabled" / "disabled"
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: null
country: null
postal_code: null
connection_type: ethernet
status: micro
last_report_at: 1557400231
last_energy_at: null
operational_at: null
attachment_type: null
interconnect_date: null
energy_lifetime: -1
energy_today: -1
system_size: -1
live_stream: enabled
- 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: null
interconnect_date: null
energy_lifetime: -1
energy_today: -1
system_size: -1
reference: '106015287'
other_references:
- '106015287'
live_stream: disabled
'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
example:
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
example:
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
example:
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
example:
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
example:
reason: '501'
message:
- Not Implemented
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
/api/v4/systems/{system_id}:
get:
summary: Retrieves a System by id
description: Retrieves a System by ID
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
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.
attachment_type:
type: string
description: Micro inverter attachment type. Available values are rack_mount, zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: integer
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.
example:
system_id: 72
name: Enphase System
public_name: Residential System
timezone: America/Los_Angeles
address:
city: Los Angeles
state: CA
country: US
postal_code: '94954'
connection_type: cellular
energy_lifetime: -1
energy_today: -1
system_size: -1
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
attachment_type: acm
interconnect_date: '2012-10-13'
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
example:
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
example:
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
example:
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
example:
reason: '405'
message:
- Method not allowed
'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
example:
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
example:
reason: '501'
# --- truncated at 32 KB (105 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase/refs/heads/main/openapi/enphase-system-details-api-openapi.yml