Developers

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.

Read-only
No control, no actuation
Scoped
Per-key, per-role access
Coverage
On every telemetry response
Signed
Webhook delivery
01 · Your first call

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.

02 · What you can read

Five surfaces. None of them write.

GET /catalog
Metric catalog

The wire vocabulary — every metric with its unit, kind, expected cadence, owning asset type and plausibility bounds. Versioned, and the deterministic first call.

GET /assets
Assets

Equipment at a site with nameplate, manufacturer, model and install basis.

GET /sites/{id}/topology
Site topology

The typed connection graph — what feeds what, and where the point of common coupling sits.

GET /timeseries
Time series

Quality-graded readings at 5-minute, hourly or daily resolution, cursor-paginated, with the coverage figures attached to every response.

GET /views/{id}/export
Saved view export

CSV or Parquet for an investigation someone already built in the console, with a manifest recording the filters, the window and its timezone.

03 · The honesty contract

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.

trusted_pct

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%.

delivered_pct

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.

is_provisional

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.

04 · Webhooks

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 →
05 · Without writing code

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.

06 · Reference

The full developer reference.

Generated from the API’s own OpenAPI contract, so it cannot drift from the service.

07 · Availability

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.

Talk to us about access