Skip to content

Telemetry

Query Historical Telemetry

Returns time-series telemetry data for an energy meter within a time range.

GET https://api.hedgehogapplications.nl/v1/energy-meters/:meterId/telemetry

Path Parameters

Parameter Description
meterId UUID of the energy meter *

Query Parameters

Parameter Description
startTs Start time in Unix timestamp (milliseconds) *
endTs End time in Unix timestamp (milliseconds) *
keys Comma-separated keys: import_kwh, export_kwh. Default: both
agg Aggregation: NONE, AVG, SUM, MIN, MAX, COUNT. Default: NONE
limit Max data points per key (1–10000). Default: 1000
orderBy ASC or DESC. Default: ASC

Tip

Use aggregation to reduce response size for large time ranges. For example, agg=AVG with a 30-day range returns averaged values instead of every raw reading.

Example

curl -H "X-API-Key: hh_live_a1b2c3d4e5f6..." \
  "https://api.hedgehogapplications.nl/v1/energy-meters/5aa268e0-0666-11f1-a8a4-2bf9576f784e/telemetry?startTs=1774000000000&endTs=1774008000000&limit=5"
meter_id = "5aa268e0-0666-11f1-a8a4-2bf9576f784e"

params = {
    "startTs": 1774000000000,
    "endTs": 1774008000000,
    "keys": "import_kwh,export_kwh",
    "limit": 5,
}

response = requests.get(
    f"{BASE_URL}/energy-meters/{meter_id}/telemetry",
    headers=headers,
    params=params,
)
telemetry = response.json()

for point in telemetry["data"]["import_kwh"]:
    print(f"{point['timestamp']}: {point['value']} kWh")
const meterId = "5aa268e0-0666-11f1-a8a4-2bf9576f784e";
const params = new URLSearchParams({
  startTs: "1774000000000",
  endTs: "1774008000000",
  keys: "import_kwh,export_kwh",
  limit: "5",
});

const response = await fetch(
  `${BASE_URL}/energy-meters/${meterId}/telemetry?${params}`,
  { headers: { "X-API-Key": API_KEY } },
);
const { data } = await response.json();

data.import_kwh.forEach((point) => {
  console.log(`${point.timestamp}: ${point.value} kWh`);
});

Response

{
  "data": {
    "import_kwh": [
      { "timestamp": "2026-03-20T09:47:33.865Z", "value": 6695.29 },
      { "timestamp": "2026-03-20T09:48:33.916Z", "value": 6695.30 },
      { "timestamp": "2026-03-20T09:49:34.019Z", "value": 6695.31 },
      { "timestamp": "2026-03-20T09:50:34.036Z", "value": 6695.32 },
      { "timestamp": "2026-03-20T09:51:33.974Z", "value": 6695.33 }
    ],
    "export_kwh": [
      { "timestamp": "2026-03-20T09:47:33.865Z", "value": 19.01 },
      { "timestamp": "2026-03-20T09:48:33.916Z", "value": 19.01 },
      { "timestamp": "2026-03-20T09:49:34.019Z", "value": 19.01 },
      { "timestamp": "2026-03-20T09:50:34.036Z", "value": 19.01 },
      { "timestamp": "2026-03-20T09:51:33.974Z", "value": 19.01 }
    ]
  }
}
Field Type Description
timestamp string ISO 8601 timestamp
value number Telemetry value in kWh

Get Latest Telemetry

Returns the most recent reading for each telemetry key on an energy meter.

GET https://api.hedgehogapplications.nl/v1/energy-meters/:meterId/telemetry/latest
Parameter Description
meterId UUID of the energy meter *

Example

curl -H "X-API-Key: hh_live_a1b2c3d4e5f6..." \
  https://api.hedgehogapplications.nl/v1/energy-meters/5aa268e0-0666-11f1-a8a4-2bf9576f784e/telemetry/latest
meter_id = "5aa268e0-0666-11f1-a8a4-2bf9576f784e"
response = requests.get(
    f"{BASE_URL}/energy-meters/{meter_id}/telemetry/latest",
    headers=headers,
)
latest = response.json()

print(f"Import: {latest['data']['import_kwh']['value']} kWh")
print(f"Export: {latest['data']['export_kwh']['value']} kWh")
const meterId = "5aa268e0-0666-11f1-a8a4-2bf9576f784e";
const response = await fetch(
  `${BASE_URL}/energy-meters/${meterId}/telemetry/latest`,
  { headers: { "X-API-Key": API_KEY } },
);
const { data } = await response.json();

console.log(`Import: ${data.import_kwh.value} kWh`);
console.log(`Export: ${data.export_kwh.value} kWh`);

Response

{
  "data": {
    "import_kwh": {
      "timestamp": "2026-03-20T12:05:37.539Z",
      "value": 6697.73
    },
    "export_kwh": {
      "timestamp": "2026-03-20T12:05:37.539Z",
      "value": 19.01
    }
  }
}
Field Type Description
timestamp string ISO 8601 timestamp of the reading
value number Most recent value in kWh

Tip

Use this endpoint for live dashboards. Energy meters typically report every 60 seconds, so polling more frequently than that won't yield new data.