Read the operating record from your own systems.
A read-only API over the same quality-graded data the console and the compliance reports use. Every telemetry response states how much of the expected data actually arrived, so a number never travels without its basis.
The catalog needs no site, no window and no parameters.
It is the deterministic success input: if this returns, your key works and your transport is right. Mint the key in the console under Data access, then run this.
curl -H "X-API-Key: g318_..." \ https://api.gen318.com/api/v1/data/catalog
Keys carry an existing read-only role and never a permission a person could not hold. A 403 names the scope it wanted, so you are never guessing.
Five surfaces. None of them write.
The wire vocabulary — every metric with its unit, kind, expected cadence, owning asset type and plausibility bounds. Versioned, and the deterministic first call.
Equipment at a site with nameplate, manufacturer, model and install basis.
The typed connection graph — what feeds what, and where the point of common coupling sits.
Quality-graded readings at 5-minute, hourly or daily resolution, cursor-paginated, with the coverage figures attached to every response.
CSV or Parquet for an investigation someone already built in the console, with a manifest recording the filters, the window and its timezone.
Read this before you plot anything.
Most monitoring APIs report one quality number. One number cannot answer both questions, so every time-series response here carries two.
Of the readings that arrived, how many were believable. It divides arrivals by arrivals, so a device sending one sample an hour where sixty were expected still reports 100%.
Of the readings that should have arrived, how many did. The denominator is derived from each metric’s declared cadence, and the response states the basis it used so you can audit the figure rather than trust it.
Sites run on intermittent links and backfill when they reconnect. A window that can still gain late data says so, rather than presenting a partial figure as final.
Empty buckets are omitted, and that is deliberate.
A gap in the data is a gap in the array. A client that plots exactly what it receives will draw a straight line across an outage — which is the one thing this API exists to refuse. Use delivered_pct and the silent-series list to detect it, and break your line where the data breaks.
Events, signed and retried.
Subscribe to alerts, compliance reports and adapter health. Payloads are HMAC-signed, retried on a published schedule, and every attempt is inspectable with its response status and the time of the next try. Return any 2xx before doing slow work; redirects and timeouts count as failures. Sender IPs are published for allowlisting.
Receiver contract and retry schedule →Most people who want this data are analysts, not engineers.
The console’s Connections tab mints a scoped credential per tool and hands you the connection details for Power BI, Tableau, Excel, Metabase and Grafana — including a ready-made Power BI connection file and a Grafana starter dashboard that puts a coverage panel beside every energy panel. Any investigation saved in the console exports to CSV or Parquet, and can print the API call that reproduces it.
The full developer reference.
Generated from the API’s own OpenAPI contract, so it cannot drift from the service.
This is not self-serve yet.
The API, webhooks and BI connections are implemented and documented, but access is granted per deployment. Availability depends on enablement, entitlement and the permissions agreed for your account. Tell us the data scope you need and who receives it, and we will set it up with you — the reference above is complete and readable before any of that.
Tell us what you need to read, and where it goes.
Bring the systems on the other side and we will scope the access.