# Hazards: API reference

8 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/wildfire {#get-wildfire}

Wildfires near Prince George, season stats, danger rating, bans and evacuations.

- Cache: 30 min (live source, cached on our server)
- Source: [BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)](https://wildfiresituation.nrs.gov.bc.ca/map)
- Licence: Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "active": [
      {
        "id": "G31209",
        "name": "Miledge Creek",
        "status": "Under Control",
        "cause": "Lightning",
        "sizeHa": 14.4,
        "discovered": "2026-07-25T22:13:56.000Z",
        "out": null,
        "lat": 52.2871,
        "lng": -119.2007,
        "location": "Miledge Creek",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G31209",
        "ofNote": false,
        "…": "1 more keys"
      },
      {
        "id": "G92299",
        "name": "Creham Creek Muskwa Junction",
        "status": "Being Held",
        "cause": "Person",
        "sizeHa": 42,
        "discovered": "2026-09-29T23:27:23.000Z",
        "out": null,
        "lat": 57.8834,
        "lng": -123.6461,
        "location": "Creham Creek Muskwa Junction",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G92299",
        "ofNote": false,
        "…": "1 more keys"
      },
      "… 1 more"
    ],
    "season": {
      "year": 2026,
      "total": 163,
      "out": 160,
      "active": 3,
      "totalHa": 931,
      "byCause": {
        "Person": 72,
        "Lightning": 91
      },
      "byStatus": {
        "Out": 160,
        "Being Held": 2,
        "Under Control": 1
      },
      "byMonth": {
        "2026-05": 23,
        "2026-04": 18,
        "2026-07": 59,
        "2026-06": 25,
        "2026-03": 2,
        "2025-10": 1,
        "2026-09": 13,
        "2026-08": 20,
        "2025-05": 1,
        "2026-10": 1
      },
      "largest": {
        "id": "G70322",
        "name": "Windy Creek",
        "status": "Out",
        "cause": "Person",
        "sizeHa": 206,
        "discovered": "2026-04-26T15:00:14.000Z",
        "out": "2026-06-03T21:10:07.000Z",
        "lat": 55.9698,
        "lng": -121.4783,
        "location": "Windy Creek",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G70322",
        "ofNote": false,
        "…": "1 more keys"
      }
    },
    "danger": {
      "rating": "Very Low",
      "value": 0.8,
      "updated": "2026-10-15T00:00:00.000Z"
    },
    "bans": [],
    "evacuations": []
  },
  "meta": {
    "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)",
    "sourceUrl": "https://wildfiresituation.nrs.gov.bc.ca/map",
    "updatedAt": "2026-10-16T10:31:26.141Z",
    "ageSec": 1015,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "BC Wildfire Service and EMCR, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/wildfire",
    "next": null,
    "docs": "/developers/reference/hazards/#get-wildfire"
  }
}
```

## GET /api/v1/earthquakes {#get-earthquakes}

Earthquakes within about 400 km over the last year.

- Cache: 1 h (live source, cached on our server)
- Source: [Natural Resources Canada, Earthquakes Canada (FDSN event service)](https://www.earthquakescanada.nrcan.gc.ca/)
- Licence: Open Government Licence – Canada (https://open.canada.ca/en/open-government-licence-canada)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "events": [
      {
        "id": "ca2026ujcc",
        "time": "2026-10-14T10:54:54.000Z",
        "lat": 57.0574,
        "lng": -122.5088,
        "depthKm": 4.91,
        "mag": 3.16,
        "magType": "MLy",
        "place": "Suspected industry-related event, 89 km W of Prespatou, BC",
        "distanceKm": 350
      },
      {
        "id": "ca2026ugmn",
        "time": "2026-10-13T01:08:33.000Z",
        "lat": 54.5168,
        "lng": -118.4576,
        "depthKm": 0.07,
        "mag": 2.61,
        "magType": "MLy",
        "place": "Suspected industry-related event, 76 km SSE of Grande Prairie, AB",
        "distanceKm": 287
      },
      "… 315 more"
    ],
    "radiusKm": 400,
    "since": "2025-10-16",
    "minMag": 2.5,
    "totalAllMagnitudes": 968
  },
  "meta": {
    "source": "Natural Resources Canada, Earthquakes Canada (FDSN event service)",
    "sourceUrl": "https://www.earthquakescanada.nrcan.gc.ca/",
    "updatedAt": "2026-10-16T10:18:26.245Z",
    "ageSec": 1795,
    "license": "Open Government Licence – Canada (https://open.canada.ca/en/open-government-licence-canada)",
    "attribution": "Earthquakes Canada, Natural Resources Canada, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/earthquakes",
    "next": null,
    "docs": "/developers/reference/hazards/#get-earthquakes"
  }
}
```

## GET /api/v1/roads {#get-roads}

DriveBC road events within 150 km.

- Cache: 10 min (live source, cached on our server)
- Source: [DriveBC Open511 API (BC Ministry of Transportation and Transit)](https://www.drivebc.ca/)
- Licence: Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `severity` | query | string | Filter by severity (e.g. MAJOR, MINOR). Example: `MAJOR`. |
| `within` | query | number | Only within this many km. Example: `50`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "events": [
      {
        "id": "drivebc.ca/RIDE-101672",
        "headline": "INCIDENT",
        "type": "INCIDENT",
        "subtypes": [
          "HAZARD"
        ],
        "severity": "MAJOR",
        "description": "Landslide at Cave Road, 13km North of Quesnel. Closed.",
        "summary": "Landslide at Cave Road, 13km North of Quesnel",
        "roads": [],
        "updated": "2026-08-25T15:03:34-07:00",
        "lat": 53.07409957,
        "lng": -122.5099548,
        "distanceKm": 95,
        "…": "1 more keys"
      },
      {
        "id": "drivebc.ca/RIDE-101703",
        "headline": "INCIDENT",
        "type": "INCIDENT",
        "subtypes": [
          "HAZARD"
        ],
        "severity": "MAJOR",
        "description": "Bridge closed at Johnston Bridge Loop, In Quesnel and Front St.",
        "summary": "Bridge closed at Johnston Bridge Loop, In Quesnel and Front St",
        "roads": [],
        "updated": "2026-08-26T09:29:33-07:00",
        "lat": 52.97312801,
        "lng": -122.48947216,
        "distanceKm": 106,
        "…": "1 more keys"
      },
      "… 20 more"
    ],
    "radiusKm": 150
  },
  "meta": {
    "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/",
    "updatedAt": "2026-10-16T10:41:26.548Z",
    "ageSec": 415,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "DriveBC, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/roads",
    "next": null,
    "docs": "/developers/reference/hazards/#get-roads"
  }
}
```

## GET /api/v1/aurora {#get-aurora}

Planetary K-index (aurora chances): now, observed and 3-day forecast.

- Cache: 15 min (live source, cached on our server)
- Source: [NOAA Space Weather Prediction Center, planetary K-index](https://www.spaceweather.gov/products/planetary-k-index)
- Licence: Public domain (US Government work, NOAA SWPC)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "now": {
      "kp": 1,
      "t": "2026-10-16T10:33:00Z"
    },
    "observed": [
      {
        "t": "2026-10-13T09:00:00Z",
        "kp": 3
      },
      {
        "t": "2026-10-13T12:00:00Z",
        "kp": 3
      },
      "… 22 more"
    ],
    "forecast": [
      {
        "t": "2026-10-16T09:00:00Z",
        "kp": 1.67
      },
      {
        "t": "2026-10-16T12:00:00Z",
        "kp": 1.67
      },
      "… 20 more"
    ],
    "maxNext24": 2.67
  },
  "meta": {
    "source": "NOAA Space Weather Prediction Center, planetary K-index",
    "sourceUrl": "https://www.spaceweather.gov/products/planetary-k-index",
    "updatedAt": "2026-10-16T10:38:25.915Z",
    "ageSec": 595,
    "license": "Public domain (US Government work, NOAA SWPC)",
    "attribution": "NOAA Space Weather Prediction Center, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/aurora",
    "next": null,
    "docs": "/developers/reference/hazards/#get-aurora"
  }
}
```

## GET /api/v1/webcams {#get-webcams}

DriveBC highway cameras within 60 km (image links are DriveBC’s own).

- Cache: 5 min (live source, cached on our server)
- Source: [DriveBC highway cameras (BC Ministry of Transportation and Transit)](https://www.drivebc.ca/cameras)
- Licence: Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)
- Paginated: `limit` (default 50, max 200) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `limit` | query | integer | Items per page (default 50, max 500 unless noted). Example: `20`. |
| `offset` | query | integer | Items to skip. Use `links.next` to page. Example: `0`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": [
    {
      "id": 957,
      "name": "Prince George eastbound",
      "caption": "Highway 97 at Highway 16 junction in Prince George, looking eastbound on Highway 16.",
      "highway": "97",
      "km": 3,
      "image": "https://www.drivebc.ca/images/957.jpg?t=1792147423",
      "updated": "2026-10-16T03:29:42-07:00",
      "stale": false,
      "lat": 53.897331,
      "lng": -122.768097,
      "url": "https://www.drivebc.ca/cameras/957"
    },
    {
      "id": 958,
      "name": "Prince George northbound",
      "caption": "Highway 97 at Highway 16 junction in Prince George, looking northbound on Highway 97.",
      "highway": "97",
      "km": 3,
      "image": "https://www.drivebc.ca/images/958.jpg?t=1792147423",
      "updated": "2026-10-16T03:30:17-07:00",
      "stale": false,
      "lat": 53.897331,
      "lng": -122.768097,
      "url": "https://www.drivebc.ca/cameras/958"
    },
    "… 15 more"
  ],
  "meta": {
    "source": "DriveBC highway cameras (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/cameras",
    "updatedAt": "2026-10-16T10:44:26.584Z",
    "ageSec": 235,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "DriveBC, via PG Pulse (princegeorgepulse.ca)",
    "total": 17,
    "count": 17,
    "limit": 50,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/webcams",
    "next": null,
    "docs": "/developers/reference/hazards/#get-webcams"
  }
}
```

## GET /api/v1/wildfire/history {#get-wildfire-history}

Recorded wildfire counts and area burned in the Prince George Fire Centre.

- 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: fire.active, fire.season_total, fire.season_ha, fire.evacuations. |
| `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/wildfire/history?from=48h"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "series": "fire.active",
      "label": "Active wildfires, Prince George Fire Centre",
      "unit": "fires",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:00:00.000Z",
          "value": 3
        },
        {
          "t": "2026-10-14T11:25:00.000Z",
          "value": 3
        },
        "… 113 more"
      ]
    },
    {
      "series": "fire.season_total",
      "label": "Wildfires this season, Prince George Fire Centre",
      "unit": "fires",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:00:00.000Z",
          "value": 163
        },
        {
          "t": "2026-10-14T11:25:00.000Z",
          "value": 163
        },
        "… 113 more"
      ]
    },
    "… 2 more"
  ],
  "meta": {
    "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)",
    "sourceUrl": "https://wildfiresituation.nrs.gov.bc.ca/map",
    "updatedAt": "2026-10-16T10:30:00.000Z",
    "ageSec": 1101,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "fire.active",
        "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)"
      },
      {
        "id": "fire.season_total",
        "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)"
      },
      "… 2 more"
    ]
  },
  "links": {
    "self": "/api/v1/wildfire/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-wildfire-history"
  }
}
```

## GET /api/v1/roads/history {#get-roads-history}

Recorded DriveBC event counts within 150 km.

- 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: roads.events, roads.major. |
| `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/roads/history?from=48h"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "series": "roads.events",
      "label": "DriveBC events within 150 km",
      "unit": "events",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T10:50:00.000Z",
          "value": 24
        },
        {
          "t": "2026-10-14T10:55:00.000Z",
          "value": 24
        },
        "… 318 more"
      ]
    },
    {
      "series": "roads.major",
      "label": "Major DriveBC events within 150 km",
      "unit": "events",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T10:50:00.000Z",
          "value": 2
        },
        {
          "t": "2026-10-14T10:55:00.000Z",
          "value": 2
        },
        "… 318 more"
      ]
    }
  ],
  "meta": {
    "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/",
    "updatedAt": "2026-10-16T10:40:00.000Z",
    "ageSec": 501,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "roads.events",
        "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)"
      },
      {
        "id": "roads.major",
        "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)"
      }
    ]
  },
  "links": {
    "self": "/api/v1/roads/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-roads-history"
  }
}
```

## GET /api/v1/aurora/history {#get-aurora-history}

Recorded planetary K-index.

- 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: kp.observed, kp.estimated. |
| `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/aurora/history?from=48h"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "series": "kp.observed",
      "label": "Planetary K-index (3-hour, observed)",
      "unit": "Kp",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T12:00:00.000Z",
          "value": 2
        },
        {
          "t": "2026-10-14T15:00:00.000Z",
          "value": 2
        },
        "… 13 more"
      ]
    },
    {
      "series": "kp.estimated",
      "label": "Planetary K-index (1-minute estimate)",
      "unit": "Kp",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:01:00.000Z",
          "value": 0.67
        },
        {
          "t": "2026-10-14T11:14:00.000Z",
          "value": 1.33
        },
        "… 221 more"
      ]
    }
  ],
  "meta": {
    "source": "NOAA Space Weather Prediction Center, planetary K-index",
    "sourceUrl": "https://www.spaceweather.gov/products/planetary-k-index",
    "updatedAt": "2026-10-16T10:33:00.000Z",
    "ageSec": 921,
    "license": "Public domain (US Government work, NOAA SWPC)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "kp.observed",
        "source": "NOAA Space Weather Prediction Center, planetary K-index"
      },
      {
        "id": "kp.estimated",
        "source": "NOAA Space Weather Prediction Center, planetary K-index"
      }
    ]
  },
  "links": {
    "self": "/api/v1/aurora/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-aurora-history"
  }
}
```
