Identifying System Generation
Systems returned by PWRapi belong to one of two product generations — first-generation PWRcell 1 or second-generation PWRcell 2 / PWRmicro. Telemetry behavior, device classes, and control support differ between them (see the PWRcell 1 Guide), so your integration should determine a system's generation before interpreting its data.
The systemGeneration field on the site endpoints tells you this directly. This guide explains how to read it and how to distinguish product types within a generation.
The systemGeneration field
systemGeneration is returned on each system in the Get a list of sites and Get site details responses.
| Field | Type | Description |
|---|---|---|
systemGeneration | integer | System generation. 1 = PWRcell, 2 = PWRcell 2 / PWRmicro. Example: 2 |
{
"systemId": "0000000000000000-0000-0000-0000-00000000",
"systemGeneration": 2,
...additional fields...
}
Determining if a system is PWRcell 1 or 2
Read systemGeneration on each system:
1— the system is a PWRcell 1.2— the system is a PWRcell 2 or a PWRmicro system. Use the system capabilities or device list to tell them apart (see below).
Note: By default, the site list returns only generation 2 systems and sites with no systems. Generation 1 systems appear only when you opt in to PWRcell 1 support with the PwrApi-Version: 2026-01-01.preview header. See the PWRcell 1 Guide.
Distinguishing PWRcell 2 from PWRmicro
Generation 2 covers both PWRcell 2 (solar + battery storage and battery storage only) and PWRmicro (solar microinverter, no storage). To tell them apart, check whether the system has storage. Either signal works:
- System capabilities — inspect the system-level
capabilities.storageobject.- Populated (non-
null) → the system has battery storage (PWRcell 2). null→ the system has no storage (PWRmicro).
- Populated (non-
- Device list — inspect the devices under the system in the Get site details response.
- A
BATTERYdevice is present → the system has battery storage (PWRcell 2). - No
BATTERYdevice → the system has no storage (PWRmicro).
- A
Decision reference
systemGeneration | Storage capability / BATTERY device | System |
|---|---|---|
1 | Present | PWRcell 1 |
2 | Present | PWRcell 2 |
2 | Absent (storage is null, no BATTERY device) | PWRmicro |
Recommended approach: Use systemGeneration as the primary signal, then use the storage capability (with the device list as confirmation) to distinguish PWRcell 2 from PWRmicro. Handle the field defensively — treat any unexpected value as a system type your integration does not yet support, rather than assuming a default.