Data is organized by plant. This page explains the concepts, lists the endpoints and shows two typical responses: instantaneous power and energy totals.

Concepts

  • Plant. The unit of every request. Each plant has a stable plant_id (UUID), a name, a country and an IANA time zone.
  • Gateway. The device on site that sends the plant's data, identified by the serial printed on the unit (for example 2527-35520819PH). A plant has one or more gateways. Serials appear in connectivity, in battery state of charge and in alarms; data is otherwise reported per plant.
  • Batteries. State of charge is reported per gateway, as a list batteries: [{serial, soc_pct}]. It is never averaged across gateways: with batteries of different capacity an average would be misleading.
  • Plants with several gateways. PV and battery power are the sum over the gateways. Grid and load power are those of the shared grid connection.
  • Periods. Historical data is requested with a fixed period, not a free date range:
Data Period Window
Energy day, week, month calendar, in the plant's time zone: from local midnight (day), Monday (week) or the 1st (month) up to now
Power series hour, day rolling: last 60 minutes, last 24 hours
Alarm history day, week, month rolling: last 24 hours, 7 days, 30 days

Endpoints for many plants (bulk)

Use these three endpoints for any periodic reading of more than one plant. For a page of up to 100 plants they return exactly what the per-plant endpoint returns for each of them, and they count as a single request.

Endpoint Scope Parameters Returns
GET /v1/telemetry/latest read:telemetry plant_ids, limit (1–100), cursor latest power and state of charge
GET /v1/connectivity read:plants plant_ids, limit (1–100), cursor online / offline per plant and gateway
GET /v1/energy/totals read:energy period, plant_ids, limit (1–100), cursor energy totals

Without plant_ids they cover every plant visible to your client. Identifiers that are not visible are left out of the result without error. Results are ordered by plant_id.

Endpoints per plant

Endpoint Scope Parameters Returns
GET /v1/plants read:plants limit (1–200), cursor plants, paginated
GET /v1/plants/{plant_id} read:plants — plant detail with address
GET /v1/plants/{plant_id}/connectivity read:plants — online / offline per plant and gateway
GET /v1/plants/{plant_id}/telemetry/latest read:telemetry — latest power and state of charge
GET /v1/plants/{plant_id}/telemetry/series read:telemetry period (hour, day), measures power series
GET /v1/plants/{plant_id}/energy/totals read:energy period (day, week, month) energy totals
GET /v1/plants/{plant_id}/energy/series read:energy period (day, month), include_previous energy per sub-period
GET /v1/plants/{plant_id}/alarms/active read:alarms — alarms currently open
GET /v1/plants/{plant_id}/alarms/history read:alarms period (day, week, month), severity alarms raised in the window

Example: instantaneous power

GET /v1/plants/7b0728a9-853c-4b31-8446-a4eb00607566/telemetry/latest

{
  "plant_id": "7b0728a9-853c-4b31-8446-a4eb00607566",
  "timestamp": "2026-10-13T12:21:00Z",
  "measurements": {
    "grid_power_w": 0,
    "battery_power_w": 18,
    "batteries": [ { "serial": "2527-35520819PH", "soc_pct": 100.0 } ],
    "pv_power_w": 2521,
    "load_power_w": 2503
  }
}

Midday, battery full: the PV covers the load, nothing is exchanged with the grid. telemetry/series returns the same fields as a list of samples, each with its timestamp: one sample per minute with period=hour, one every 15 minutes with period=day (resolution_seconds states which). measures restricts the fields, for example measures=pv_power_w,load_power_w.

Example: energy totals

GET /v1/plants/7b0728a9-853c-4b31-8446-a4eb00607566/energy/totals?period=day

{
  "plant_id": "7b0728a9-853c-4b31-8446-a4eb00607566",
  "period": "day",
  "period_start": "2026-10-13T00:00:00+02:00",
  "period_end": "2026-10-13T14:23:15+02:00",
  "totals_wh": {
    "consumed": 4950, "produced": 10380,
    "imported": 100, "exported": 0,
    "charged": 8070, "discharged": 3350
  }
}
Field Meaning
produced energy produced by the PV system
consumed energy used by the site's loads, from any source
imported / exported energy taken from / delivered to the grid
charged / discharged energy stored into / released from the batteries

A value is null when the plant reported no data for it in the window. energy/series splits the same window into one-hour sub-periods (resolution_seconds); include_previous=true adds the whole previous day or month. The sum of a series equals the totals over the same window.

Connectivity and alarms

A gateway is online when it sent data in the last 5 minutes, otherwise offline; the plant is online when at least one gateway is. unknown means the status could not be determined, for example for a plant with no gateway. last_seen_at covers the last 7 days and is null beyond.

Each alarm carries the device's code and message, raised_at, cleared_at and source, the component that raised it (gateway, inverter, meter). Severity is in severity:

severity Meaning
W warning
A alarm
F fault

Treat any other value as significant. The severity parameter filters case-insensitively (severity=F). alarms/active returns the alarms still open, without cleared_at; in the history, cleared_at is null for an alarm still open.