Skip to main content

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.

FieldTypeDescription
systemGenerationintegerSystem 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:

  1. System capabilities — inspect the system-level capabilities.storage object.
    • Populated (non-null) → the system has battery storage (PWRcell 2).
    • null → the system has no storage (PWRmicro).
  2. Device list — inspect the devices under the system in the Get site details response.
    • A BATTERY device is present → the system has battery storage (PWRcell 2).
    • No BATTERY device → the system has no storage (PWRmicro).

Decision reference

systemGenerationStorage capability / BATTERY deviceSystem
1PresentPWRcell 1
2PresentPWRcell 2
2Absent (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.