# Power: API reference

3 endpoints. Base URL `https://princegeorgepulse.ca/api/v1`. Conventions (envelope, paging, fields, formats, limits) are on the [overview](https://princegeorgepulse.ca/developers/). [All endpoints](https://princegeorgepulse.ca/developers/reference/).

## GET /api/v1/power/outages {#get-power-outages}

BC Hydro outages within 150 km, plus regional and provincial totals.

- Cache: 5 min (live source, cached on our server)
- Source: [BC Hydro outage map data](https://www.bchydro.com/power-outages/app/outage-map.html)
- Licence: © BC Hydro. Public outage information, not openly licensed: shown with credit and a link to BC Hydro; check BC Hydro for current status

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/power/outages"
```

**Example response** (trimmed)

```json
{
  "data": {
    "nearby": [],
    "region": {
      "outages": 2,
      "customers": 222
    },
    "province": {
      "outages": 15,
      "customers": 3695
    },
    "radiusKm": 150
  },
  "meta": {
    "source": "BC Hydro outage map data",
    "sourceUrl": "https://www.bchydro.com/power-outages/app/outage-map.html",
    "updatedAt": "2026-10-16T15:47:20.411Z",
    "ageSec": 112,
    "license": "© BC Hydro. Public outage information, not openly licensed: shown with credit and a link to BC Hydro; check BC Hydro for current status",
    "attribution": "BC Hydro, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/power/outages",
    "next": null,
    "docs": "/developers/reference/power/#get-power-outages"
  }
}
```

## GET /api/v1/power/rates {#get-power-rates}

BC Hydro residential rates (tiered, flat and time-of-day).

- Cache: 24 h
- Source: [BC Hydro, residential rates (tiered, flat and time-of-day pricing pages)](https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates.html)
- Licence: BC Hydro published rates, with attribution

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/power/rates"
```

**Example response** (trimmed)

```json
{
  "data": {
    "source": "BC Hydro, Residential rates (tiered rate, flat rate and time-of-day pricing pages)",
    "sourceUrl": "https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates.html",
    "asOf": "2026-09-30",
    "notes": "Rates as published on bchydro.com, checked weekly; these values were first seen on 2026-09-30. Estimates exclude GST and any rate riders or regional charges; your actual bill may differ.",
    "tiered": {
      "url": "https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates/tiered.html",
      "basicChargeCentsPerDay": 23.44,
      "tier1CentsPerKwh": 11.87,
      "tier2CentsPerKwh": 14.08,
      "tier1KwhPerDay": 22.1918,
      "tier1ThresholdMonthlyKwh": 675,
      "tier1ThresholdBimonthlyKwh": 1350
    },
    "flat": {
      "url": "https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates/flat.html",
      "basicChargeCentsPerDay": 25,
      "energyCentsPerKwh": 12.7
    },
    "timeOfDay": {
      "url": "https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates/time-of-day.html",
      "onPeakSurchargeCentsPerKwh": 5,
      "onPeakHours": "4 to 9 p.m.",
      "overnightDiscountCentsPerKwh": 5,
      "overnightHours": "11 p.m. to 7 a.m.",
      "offPeakHours": "7 a.m. to 4 p.m. and 9 to 11 p.m."
    }
  },
  "meta": {
    "source": "BC Hydro, Residential rates (tiered rate, flat rate and time-of-day pricing pages)",
    "sourceUrl": "https://www.bchydro.com/accounts-billing/rates-energy-use/electricity-rates/residential-rates.html",
    "updatedAt": "2026-10-01T04:27:28.898Z",
    "ageSec": 1336904,
    "license": "BC Hydro published rates, with attribution",
    "attribution": "BC Hydro, via PG Pulse (princegeorgepulse.ca)",
    "dataset": "bchydro-rates",
    "asOf": "2026-09-30"
  },
  "links": {
    "self": "/api/v1/power/rates",
    "next": null,
    "docs": "/developers/reference/power/#get-power-rates"
  }
}
```

## GET /api/v1/power/outages/history {#get-power-outages-history}

Recorded BC Hydro outage counts and customers affected (nearby, Northern region, province).

- Cache: 5 min
- Source: [PG Pulse live history: readings recorded from Open-Meteo, ECCC, Water Survey of Canada, BC Hydro, BC Wildfire Service, DriveBC, NOAA SWPC and NOAA AWC on every refresh](https://princegeorgepulse.ca/dashboard/)
- Licence: Mixed: see each item’s source

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `series` | query | string | Only some of: outages.nearby.count, outages.nearby.customers, outages.region.count, outages.region.customers, outages.province.count, outages.province.customers. |
| `from` | query | string | Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d). Example: `7d`. |
| `to` | query | string | End: ISO date/datetime (default now). |
| `interval` | query | string | `raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily). One of: `auto`, `raw`, `hour`, `day`. |

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/power/outages/history?from=48h"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "series": "outages.nearby.count",
      "label": "Power outages within 150 km",
      "unit": "outages",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T15:50:00.000Z",
          "value": 0
        },
        {
          "t": "2026-10-14T15:55:00.000Z",
          "value": 0
        },
        "… 574 more"
      ]
    },
    {
      "series": "outages.nearby.customers",
      "label": "Customers without power within 150 km",
      "unit": "customers",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T15:50:00.000Z",
          "value": 0
        },
        {
          "t": "2026-10-14T15:55:00.000Z",
          "value": 0
        },
        "… 574 more"
      ]
    },
    "… 4 more"
  ],
  "meta": {
    "source": "BC Hydro outage map data",
    "sourceUrl": "https://www.bchydro.com/power-outages/app/outage-map.html",
    "updatedAt": "2026-10-16T15:45:00.000Z",
    "ageSec": 252,
    "license": "© BC Hydro. Public outage information, not openly licensed: shown with credit and a link to BC Hydro; check BC Hydro for current status",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T15:49:12.000Z",
    "to": "2026-10-16T15:49:12.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "outages.nearby.count",
        "source": "BC Hydro outage map data"
      },
      {
        "id": "outages.nearby.customers",
        "source": "BC Hydro outage map data"
      },
      "… 4 more"
    ]
  },
  "links": {
    "self": "/api/v1/power/outages/history?from=48h",
    "next": null,
    "docs": "/developers/reference/power/#get-power-outages-history"
  }
}
```
