Pull measured interval data from any project your organization has been granted access to. One HTTPS endpoint, the wc_* Standard Register Model, 15-minute resolution — the same data contract the WattChop Live dashboard runs on.

This API is for partners, asset managers, and third-party verifiers who need programmatic, server-to-server access to a site's measured energy data. What you pull through this API is exactly what the dashboard displays — same registers, same values, same cadence.

Quick Start — 30 Seconds

Replace YOUR_API_KEY with your organization read key and run this from any terminal:

curl https://app.wattchop.com/api/v1/data/PROJECT_ID/intervals?window=24h \
  -H "X-Api-Key: YOUR_API_KEY"

That's it. You get back the last 24 hours of measured 15-minute interval data in the wc_* register model.

Response

{
  "project_id": "a1b2c3d4-e5f6-47a8-9b0c-1d2e3f4a5b6c",
  "window": "24h",
  "cadence_minutes": 15,
  "row_count": 95,
  "site_device_id": "…",
  "registers": ["wc_load", "wc_grid_import", "wc_grid_export", "wc_generation",
                "wc_battery_charge", "wc_battery_discharge", "wc_battery_soc"],
  "intervals": [
    {
      "timestamp_utc": "2026-07-22T16:45:00+00:00",
      "wc_load": 38.36,
      "wc_grid_import": 38.44,
      "wc_grid_export": 0.0,
      "wc_generation": 19.72,
      "wc_battery_charge": 19.79,
      "wc_battery_discharge": 0.0,
      "wc_battery_soc": null
    }
  ]
}

The wc_* Standard Register Model

The read API speaks the same register vocabulary as the WattChop Live ingest API (WC-DOC-019). What a data producer pushes as wc_load is what you pull back as wc_load — one standard, both directions.

JSON KeyUnitDescription
wc_loadkWhGross site consumption for the interval
wc_grid_importkWhEnergy purchased from the utility
wc_grid_exportkWhEnergy exported/sold to the utility
wc_generationkWhTotal solar/PV generation
wc_battery_chargekWhEnergy into the battery
wc_battery_dischargekWhEnergy out of the battery
wc_battery_soc%Battery state of charge (0–100)

All energy registers are kWh per 15-minute interval. A register with no measured value for an interval is null — WattChop never fabricates data. If a site's hardware doesn't report a register (for example, SOC on some meter configurations), that register is null throughout; it still appears in registers so your schema stays stable.

Endpoint Reference

GET /api/v1/data/{project_id}/intervals
ParameterTypeRequiredNotes
project_idpathYesThe project UUID — shown under the project name in your dashboard, with a Copy button.
windowqueryNo24h (default), 7d, or 30d — rolling from now

Rows are ordered oldest-first, aligned to 15-minute boundaries, timestamped in UTC. A 24-hour window typically returns 95–96 rows (the current interval lands once the meter reports it). Data is served from the project's commissioned meter of record, identified in the response as site_device_id.

Authentication & Access

All requests require an X-Api-Key header carrying your organization read key:

X-Api-Key: wc_org_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

One key per organization — access follows your project grants. Your key identifies your organization; which projects it can read is determined by the project-level access your organization has been granted in WattChop. There is nothing to configure per project: if a project owner grants your organization access, your existing key reaches it immediately. If a grant is revoked, API access to that project ends immediately as well.

A request for a project outside your grants returns 404 — the API does not distinguish "doesn't exist" from "not yours."

Read keys are read-only. They cannot push data (see WC-DOC-019 for the ingest API, which uses separate producer credentials) and cannot access any other WattChop surface.

Keys are provisioned by WattChop when partner read access is set up for your organization. To request access or rotate a key, open a support ticket or email support@wattchop.com.

Timestamps & Data Semantics

Rate Limits

Usage is limited to 100 requests per hour per API key. Polling each granted project once per 15-minute interval fits comfortably within that budget.

Attribution

The read feed is provided at no charge to organizations with project access. If you display, re-publish, or build reporting on data from this API, the surface must credit the source: "Data provided by WattChop" or "Powered by WattChop." That's the whole deal.

Scope of the Feed

This API serves measured physical data — energy flows and battery state as recorded at the site. Tariff rates, per-interval pricing, export credit values, and savings calculations are part of the WattChop analysis platform and are presented in the dashboard and WattChop reports; they are not part of the data feed.

Error Handling

HTTP StatusMeaningAction
200Success
401Invalid or revoked API keyCheck the key; contact support if rotated
403Key lacks the required scopeContact support
404Project not found or not granted to your organizationVerify the project ID and your access
422Invalid window parameterUse 24h, 7d, or 30d
429Rate limit exceededMay be returned if usage exceeds the per-key hourly limit; back off and retry

Ready to pull?

Open a project, hit Copy next to its ID, run the Quick Start curl, and your pipeline is live. Questions → support@wattchop.com.